متى يجب علي استخدام مجموعة ثابتة بدلا من جدول جديد في قاعدة البيانات الخاصة بي؟

StackOverflow https://stackoverflow.com//questions/11686689

سؤال

قمت بتطبيق قائمة تحكم في الوصول باستخدام صفيفات ثابتة (للأدوار والموارد)، لكنني أضفت جدول جديد في قاعدة البيانات الخاصة بي للحصول على الأذونات.

فكرة استخدام مجموعة ثابتة للأدوار هي أننا لن ننشئ أدوارا جديدة طوال الوقت، لذلك لن تتغير البيانات طوال الوقت.اعتقدت أن الشيء نفسه بالنسبة للموارد، أيضا لأنني أعتقد أن الموارد هي شيء يجب على المطورين فقط أن يعاملون، لأنهم أكثر ارتباطا بمبلغا من البيانات.هل لديك أي معرفة لماذا تستخدم مجموعة ثابتة بدلا من جدول قاعدة البيانات؟متى / لماذا؟

هل كانت مفيدة؟

المحلول

المشكلة ذات القيم الصلبة في التعليمات البرمجية هي أنه مقارنة بتغيير قاعدة البيانات، تكون تغييرات التعليمات البرمجية أكثر بكثير <قوية> باهظة الثمن :

  • تحتاج عادة إلى إنشاء حزمة جديدة للنشر. ستحتاج هذه الحزمة إلى أن تكون الانحدار اختبارها، للتحقق من عدم تقديم أي أخطاء. تلميح: حتى لو قمت بتغيير سطر واحد فقط من التعليمات البرمجية، فإن اختبارات الانحدار ضرورية للتحقق من عدم وجود خطأ في عملية البناء (E.G. لم يتم تعبئتها بشكل صحيح مما يؤدي إلى فشل وحدة نمطية).

  • يمكن أن يعني

  • تحديث التعليمات البرمجية يعني التوقف، مما يزيد أيضا من المخاطرة لأن ما إذا فشل التحديث، هناك دائما خطر هذا

  • في بيئة المؤسسة عادة ما يكون أسرع بكثير للحصول على تحديثات DB معتمدة من تغيير التعليمات البرمجية.

كل ذلك يكلف الوقت / الجهد / المال. ملاحظة، في رأيي عقد البيانات المرجعية أو البيانات الثابتة في قاعدة البيانات لا تعني الضغط على الأداء، لأن البيانات يمكن تخزين البيانات دائما.

نصائح أخرى

صفيف ثابت الخاص بك هو مثال على بيانات "الترميز الثابت" في برنامجك، وهو أمر جيد إذا كنت تريد أبدا أبدا تغييره.

في تجربتي، بالنسبة لحالة استخدامك، فهذا ليس من أي وقت مضى سيكون صحيحا، وسيؤدي بياناتك الشديدة إلى مصدرك إلى مصدرك يطلب منك باستمرار تحديث هذه الأشياء التي تفترض بها باستمرارلن تتغير أبدا.

protip: إلى مدير المشروع و / أو العميل، لا شيء غير قابل للتغيير.

أعتقد أن هذا يتلخص فقط إلى ما تعتقد أنه سيتم استخدام قاعدة البيانات في المستقبل.إذا تركت البيانات في صفائف، ثم ترغب فيما بعد في إنشاء تطبيق آخر يتفاعل مع قاعدة البيانات هذه، فستبدأ في الحفاظ على بيانات الأدوار / الموارد في كلا قاعدة التعليمات البرمجية.ولكن، إذا وضعت الأدوار / الموارد في قاعدة البيانات، فستكون قاعدة البيانات سلطة واحدة عليها.

أود أن أوصي بوضعها في قاعدة البيانات.يمكنك قراءة الجداول إلى صفائف عند بدء التشغيل، وستحصل على نفس فوائد الأداء والمرونة للحصول على تطبيقات أخرى قادرة على الحصول على هذه المعلومات.

أيضا، عند / إذا حصلت على كتابة نظام لإدارة المستخدمين، فمن الأسهل عرض أدوار / موارد المستخدم من خلال الانضمام إلى الجداول مما هو ستعود أدوار / موارد المعرفات وعليها البحث عنأسماء جميلة في صفائفك.

باستخدام صفائف ثابتة تحصل على أداء، بالنظر إلى أنك لا تحتاج إلى الوصول إلى قاعدة البيانات طوال الوقت، ولكن السلامة أكثر أهمية من الأداء، لذلك أقترح عليك إجراء التحكم في الأذونات في قاعدة البيانات.

دراسة على RBAC.

الأشياء التي تعتبر ثابتة يجب ترميزها ثابتة.هذا إذا كنت حقا اعتبرها ثابتة.

لكنني أقترح استخدام ثوابت الفصل بدلا من قيم الصفيف الثابتة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top