Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon كيف يتعامل MongoDB لترحيل البيانات بين الشظايا


كيف يتعامل MongoDB لترحيل البيانات بين الشظايا


يعالج MongoDB ترحيل البيانات بين الشظايا بشكل أساسي من خلال عملية تسمى Migration Chunk ، والتي تعد جزءًا لا يتجزأ من بنية Sharding المصممة لتوزيع البيانات بالتساوي عبر شظايا متعددة في الكتلة. Sharding in MongoDB هي الطريقة المستخدمة لتوسيع نطاق قاعدة البيانات أفقياً عن طريق تقسيم البيانات عبر خوادم أو شظايا متعددة. يستفيد هذا النظام من مفتاح Shard ، وهو حقل أو مجموعة من الحقول في مستند يحدد توزيع البيانات. لإدارة ترحيل البيانات بين شظايا ، يستخدم MongoDB عملية خلفية تسمى Balancer ، والتي تعمل على تحسين توزيع البيانات عن طريق ترحيل نطاقات البيانات (أو القطع) حسب الضرورة.

sharded cluster و chunk migration نظرة عامة

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

تعتبر ترحيل القطع مفيدًا في سيناريوهات مثل عندما تتم إضافة شظايا جديدة إلى كتلة ، عندما تنمو البيانات بشكل غير متساو تسبب عدم التوازن ، أو عندما تحتاج المناطق إلى إعادة تعريف المناطق لموقع البيانات أو المتطلبات التنظيمية. تعمل الترحيل على مستوى القطعة ، مما يحرك مجموعة كاملة من قيم مفاتيح Shard من قشرة إلى أخرى.

تفاصيل عملية الترحيل

يعمل ترحيل Mongodb في عدة مراحل:

1. اختيار قطعة للتحرك: يختار الموازن أو المسؤول قطعة تحتاج إلى إعادة تعيين لسكان آخر لموازنة المجموعة.

2. مرحلة الاستنساخ: يقوم المتبرع Shard (الذي يحتفظ حاليًا بالقطعة) بنسخ جميع المستندات الموجودة في القطع إلى قشرة المستلم. خلال هذا الوقت ، يتم أيضًا تتبع كتابة New to the Chunk on the Donor Shard.

3. مرحلة اللحاق بالركب: يطبق قطة المستلم أي كتابة حدثت خلال مرحلة الاستنساخ للتأكد من أن لديها أحدث البيانات.

4. القسم الحرج والالتزام: تدخل شارد المانح في قسم حاسم حيث يتم حظر عمليات الكتابة إلى الجزء لفترة وجيزة ، ويتم تبديل ملكية الجزء الذري إلى قشرة المتلقي.

5. مرحلة الحذف: يزيل المتبرع المتبرع بشكل غير متزامن المستندات التي تنتمي إلى الجزء الذي تم ترحيله بمجرد أن يؤكد أن المستلم قد ارتكب الجزء بنجاح.

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

الولادة التلقائية

يعمل Balancer كخيط خلفية على عقدة Config Server الأساسية ويراقب باستمرار توازن البيانات Shard. يتتبع حجم البيانات لكل قطعة لتحديد ما إذا كانت الترحيل مطلوبة وفقًا لعتبة التوازن القابلة للتكوين. عندما تتجاوز الاختلافات في حجم البيانات بين شظايا هذه العتبة ، يبدأ الموازن في الهجرة.

يعمل الموازن بطريقة شفافة في الغالب للتطبيقات ، ولكن يمكن تعطيلها مؤقتًا لأغراض الصيانة أو الضبط. كما يحترم المناطق التي تم تكوينها داخل المجموعة ، مما يضمن ترحيل القطع داخل حدود المنطقة المناسبة.

أوامر الترحيل اليدوي

بينما يقوم الموازن بأتمتة ترحيل قطعة ، يسمح MongoDB أيضًا بالتحكم اليدوي باستخدام أوامر مثل "Movechunk" و "Moverange". هذه الأوامر تجبر هجرة أجزاء محددة أو قطعة كبيرة من قطة إلى أخرى.

- يتم استخدام "MoveChunk" لترحيل قطعة تحتوي على قيمة مفتاح Shard محددة إلى Shard المحددة. هذا مفيد للترحيل المستهدف لموازنة التحميل أو محلية البيانات.

- يسمح "Moverange" بترحيل مجموعة متجاورة من مفاتيح Shard ، مفيدة لاستراتيجيات إعادة توازن البيانات الأكثر تعقيدًا.

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

التعامل مع المستندات اليتيمة والاتساق

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

يضمن MongoDB الاتساق خلال الترحيل من خلال تطبيق العمليات بالتسلسل واستخدام آلية التنسيق التي تكتب خلال القسم الحرج. بعد الترحيل ، يعمل تنظيف اليتيم بشكل غير متزامن مع تجنب التداخل مع الاستفسارات المستمرة.

بدء MongoDB 5.3 ، لا تنشئ تدفقات التغيير أحداثًا للحصول على تحديثات إلى المستندات اليتيمة أثناء الترحيل ، للحفاظ على دقة دفق الحدث.

التأثير على الأداء والعمليات

تحمل الترحيل القطع النفقات العامة بما في ذلك استهلاك النطاق الترددي للشبكة ، وحدة المعالجة المركزية ، والقرص I/O والتي يمكن أن تؤثر على أداء المجموعة. MongoDB يقلل من هذا التأثير من خلال:

- تقييد مشاركة شارد في هجرة واحدة في وقت واحد.

- تصطف الترحيل والسماح بمراحل الحذف لتتداخل بشكل متداخل لتفريغ أسرع.

- استخدام خيارات الاختناق لضبط تزامن الترحيل وكتابة القلق أثناء الترحيل.

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

الترحيل في سيناريوهات محددة

في حالات مثل ترحيل البيانات بين المناطق مع نطاقات العلامات ، أو من عمليات الإعداد غير المتوقعة ، فإن MongoDB يقوم بترحيل البيانات تدريجياً بناءً على نطاقات مفتاح Shard المحدثة أو المناطق بعد إعادة التشكيل. على سبيل المثال ، يؤدي إزالة نطاقات العلامات القديمة وإنشاء تلك الجديدة إلى ترحيل الموازن لنقل البيانات وفقًا لذلك.

عند ترحيل مجموعات MongoDB إلى الحلول التي تديرها السحابة أو بين المجموعات المقطوعة ، غالبًا ما تؤدي أدوات الترحيل ترحيلًا شدًا ، ونسخ بيانات Shard بشكل فردي مع الحفاظ على توزيعات مفتاح Shard.

الأدوات والمرافق للترحيل

تساعد خدمات نقل البيانات (DTS) وأدوات الطرف الثالث الأخرى في ترحيل البيانات بين مثيلات MongoDB أو المجموعات ، والتعامل مع رسم خرائط Shard ، واتساق البيانات ، والتحديثات الإضافية. غالبًا ما تدعم هذه الأدوات الترحيل من المجموعات غير المشوهة إلى المجموعات من خلال تعيين قيم مفتاح Shard الافتراضية لبيانات المصدر التي تفتقر إلى مفاتيح Shard.

ملخص النقاط الرئيسية

- أقسام MongoDB في قطع موزعة عبر شظايا باستخدام مفاتيح Shard.

- يقوم الموازن تلقائيًا بترحيل الأجزاء للحفاظ على توزيع البيانات المتوازنة.

- تتضمن الترحيل بيانات استنساخ ، وكتب اللحاق بالركب ، والتسليم الذري ، والتنظيف غير المتزامن.

- تقتصر الهجرات على واحد لكل قشرة لتقليل تأثير النظام.

- توفر أوامر الترحيل اليدوي تحكمًا إداريًا لتوزيع الجزء.

- يتم تنظيف وثائق اليتيم بشكل غير متزامن بعد الهجرة.

- تؤثر الترحيل على الأداء والاتساق القراءة الثانوية مؤقتًا.

- تتم معالجة الترحيل بين المناطق أو التغييرات في نطاقات مفتاح Shard من خلال إعادة التكوين التي تؤدي إلى هجرات.

- تساعد أدوات الترحيل في حركة البيانات بين المجموعات أو البنى.

تضمن آلية الترحيل هذه أن تظل مجموعات MongoDB متوازنة وقابلة للتطوير وأداء مع نمو البيانات وتتطور تكوينات الكتلة ، مما يوفر توافرًا مستمرًا مع الحد الأدنى من الاضطراب في التطبيقات.