it-swarm.asia

إيجابيات / سلبيات استخدام قواعد بيانات متعددة مقابل استخدام قاعدة بيانات واحدة

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

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

إحدى الحجج التي أملكها حتى الآن هي تكامل البيانات (لا يمكنني استخدام المفاتيح الخارجية بين قواعد البيانات).

ما هي إيجابيات/سلبيات جيدة لاستخدام قواعد بيانات واحدة أو متعددة؟

[الملخص حتى الآن]

الحجج ضد قواعد بيانات متعددة:

  • فقدان تكامل البيانات (لا يمكن استخدام المفاتيح الخارجية عبر قواعد البيانات)

  • فقدان استعادة السلامة

  • اكتساب التعقيد (مستخدمي/أدوار ديسيبل)

  • خادم/قاعدة بيانات الاحتمالات الصغيرة ستنخفض

حلول:

  • استخدم المخططات لفصل المجالات.

  • نقطة الاتصال: استخدم البيانات الوهمية لإثبات النقطة في خطط تنفيذ 7/1 ديسيبل

14
rdkleine

لا شيء من الأداء والاستقرار والتحسين صحيحة. هل لدى أي شخص حجة قوية أو مقالة مرجعية لماذا تكون صحيحة؟

لا يتم تخصيص الموارد لقاعدة بيانات: مثيل SQL Server يوازن الموارد بحيث يجعل لا فرق

تخسر:

  • تكامل البيانات
  • استعادة التكامل (ستكون البيانات في DB7 لاحقًا ثم DB1)

تكتسب التعقيد:

  • يجب أن يكون الأمن (المستخدمين والأدوار وما إلى ذلك) في جميع قواعد البيانات
  • سيكون لديك بعض البيانات التي لا تتناسب مع قاعدة بيانات واحدة بشكل جيد

خيارات:

  • يمكن تقسيم قاعدة البيانات إلى أقراص منفصلة باستخدام مجموعات الملفات
  • استخدام المخططات لفصل البيانات منطقياً (بناءً على إجابة أخرى)
16
gbn

إذا كنت بعد تقسيم البيانات حسب المجال المنطقي ، يمكنك دائمًا النظر في استخدام المخططات داخل SQL2008 (الابتعاد عن الافتراضي dbo.) ولكن حتى هذا مؤلم ويمكن أن يسبب مشاكل في OR/Ms لا تتوقع عدم مخطط قياسي.

لقد كنت في وضع جمع البيانات من أكثر من قاعدة بيانات وهي مؤلمة وبعيدة عن الأداء العالي. ينتهي بك الأمر تخزين البيانات مؤقتًا أو على الأقل استخدام الحيل للحفاظ على السرعة.

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

ثم قارن خطط التنفيذ! أعتقد أنك ستربح قضيتك هناك.

6
CResults

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

لا توجد تحسينات أداء متاحة مع قواعد بيانات متعددة لا يمكنك أيضًا تحقيقها باستخدام قاعدة بيانات واحدة. هل يمكنك إعطاء مزيد من التفاصيل حول ما تعنيه بـ "الأداء والاستقرار والتحسين"؟

6
nvogel

تجربة التفكير: بدلاً من تقسيم قاعدة البيانات إلى سبع قطع ، قم بتقسيمها بدلاً من ذلك إلى 7000 قطعة. ما احتمالية أن يؤثر فشل الأجهزة على تطبيقك؟ إذا كان هناك احتمال بنسبة 0.1٪ أن يموت أي خادم معين في يوم معين ، فهل فرصك أفضل أم أسوأ أنك ستتأثر بفشل في الأجهزة عند زيادة عدد الأجهزة التي تعتمد عليها؟

أعتقد أنه من المهم تقسيم مفهوم "قاعدة البيانات" إلى جزأين: المخطط والبيانات مقابل الأجهزة المستخدمة لخدمة البيانات.

إن كسر قاعدة البيانات عبر أجهزة متعددة لا يفيدك في العديد من الأسباب الموضحة بالإجابات الأخرى في هذا الموضوع.

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

4
unpythonic

أتفق مع DB واحد واستخدام خيارات الملف والمخطط بدلاً من ذلك.

هناك حالات حافة حيث يكون الانقسام إلى قطع متعددة منطقيًا.

تكوين بيئة التطبيق (dev ، test ، prod) ، مثل خوادم FTP ، مسارات ملفات التصدير ، إلخ ... ، الأشياء التي تريد تخزينها لكل خادم ، ولا يتم استبدالها في الاستعادة.

أيضا كوسيلة لعزل تغييرات الإجراءات الخاصة بالعميل.

لكن هذه مشاكل دعم وليست أداء.

2
Rawheiser