سؤال

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

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

  • يقرأ التطبيق من الرقيق
  • يكتب التطبيق إلى الابتدائية
  • التحديثات الأساسية التابعة تلقائيًا

ما هي أهم إيجابيات وسلبيات هذه الطريقة؟

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

المحلول

بعض السلبيات:

  • 2 نقاط الفشل
  • يجب أن يأخذ منطق التطبيق في الاعتبار التأخير بين كتابة شيء ما ثم قراءته، لأنه لن يكون متاحًا على الفور من قاعدة البيانات الثانوية

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

هناك بالتأكيد إيجابيات لنهج "تكرار كل شيء":

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

نصائح أخرى

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

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

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