يعالج MongoDB ترحيل البيانات بين الأجزاء من خلال عملية الموازن. يكون الموازن مسؤولاً عن ضمان توزيع البيانات بالتساوي عبر الأجزاء في المجموعة المقسمة. فيما يلي الخطوات المتبعة في ترحيل البيانات بين الأجزاء:
1. الموازنة
- الموازنة التلقائية: يقوم MongoDB بموازنة البيانات تلقائيًا عن طريق ترحيل القطع من جزء إلى آخر. وهذا يضمن توزيع البيانات بالتساوي عبر الأجزاء.
2. الهجرة الجماعية
- الترحيل اليدوي: يمكن لـ MongoDB إجراء ترحيل يدوي للمجموعات لمجموعات محددة. يعد هذا مفيدًا لتوزيع البيانات أثناء عمليات الإدراج المجمعة.
3. ترحيل النطاق
- الترحيل التلقائي للنطاق: يقوم MongoDB بترحيل البيانات نطاقًا واحدًا في كل مرة. لا ينتظر الموازن حتى تكتمل مرحلة الحذف للترحيل الحالي قبل بدء ترحيل النطاق التالي.
4. إعادة التصميم
- تقنية إعادة النشر إلى جزء: يستخدم MongoDB إعادة تقسيم البيانات لنشر البيانات عبر الأجزاء الموجودة في المجموعة بسرعة. يتضمن ذلك التقسيم المتعمد إلى مفتاح جزء مؤقت يختلف عن مفتاح الجزء المطلوب ثم إعادة تقسيمه إلى مفتاح الجزء المطلوب.
5. إجراء الترحيل الجماعي
- جزء المصدر: يبدأ جزء المصدر التحرك عندما يتلقى أمرًا داخليًا. أثناء عملية الترحيل، يتم إرسال العمليات إلى القطعة إلى الجزء المصدر.
- Destination Shard: يقوم جزء الوجهة ببناء أي فهارس مطلوبة من قبل المصدر غير موجودة في الوجهة. تبدأ قطعة الوجهة في طلب المستندات الموجودة في المجموعة وتبدأ في تلقي نسخ من البيانات.
- المزامنة: بعد استلام المستند النهائي في المجموعة، تبدأ قطعة الوجهة عملية مزامنة للتأكد من أنها تحتوي على التغييرات التي طرأت على المستندات التي تم ترحيلها والتي حدثت أثناء الترحيل.
- تحديث البيانات التعريفية: يتصل الجزء المصدر بقاعدة بيانات التكوين ويقوم بتحديث بيانات تعريف المجموعة بالموقع الجديد للقطعة.
- مرحلة الحذف: بعد أن يكمل جزء المصدر تحديث البيانات التعريفية، وبمجرد عدم وجود مؤشرات مفتوحة على المقطع، يحذف جزء المصدر نسخته من المستندات[3][5].
6. قطع ضخمة
- Jumbo Chunks: إذا تجاوزت القطعة الحد الأقصى للحجم أو تجاوز عدد المستندات في المجموعة الحد الأقصى المسموح به، فلن يقوم MongoDB بترحيل القطعة. بدلاً من ذلك، يحاول MongoDB تقسيم القطعة. إذا لم ينجح التقسيم، يقوم MongoDB بتسمية القطعة على أنها ضخمة لتجنب المحاولات المتكررة لترحيل القطعة[3].
7. المراقبة والصيانة
- المراقبة: يوفر MongoDB أدوات لمراقبة عملية الموازن والتأكد من توزيع البيانات بالتساوي عبر الأجزاء.
- الصيانة: يوفر MongoDB أوامر لإدارة الموازن والتأكد من أن ترحيل البيانات فعال وقابل للتطوير.
خاتمة
يعالج MongoDB ترحيل البيانات بين الأجزاء من خلال عملية الموازن، مما يضمن توزيع البيانات بالتساوي عبر الأجزاء في مجموعة مجزأة. يقوم الموازن بترحيل البيانات نطاقًا واحدًا في كل مرة، ويوفر MongoDB أدوات لمراقبة وإدارة عملية الموازن.
اقتباسات:[1] https://stackoverflow.com/questions/48438644/migration-data-between-shards-with-mongodb
[2] https://hackernoon.com/optimize-data-migration-in-mongodb-resharding-techniques-for-speed-and-scalability
[3] https://www.mongodb.com/docs/v3.0/core/sharding-chunk-migration/
[4] https://www.mongodb.com/community/forums/t/shard-migration-leads-to-service-disruption/247228
[5] https://www.mongodb.com/docs/v6.2/core/sharding-balancer-administration/