MongoDB / المتقدم: التشغيل الموزع والقابل للتعافي / الدرس 15
التجزئة وتصميم التوجيه
اختر مفتاح التجزئة من التوزيع والتوجيه والدورة، وافهم الفحص الموزع ونطاق التفرد وكلفة نقل البيانات.
في هذه الصفحة
أهداف الدرس
- شرح مسؤولية الشظية والموجه والمفتاح.
- تقييم مفاتيح المجال والتجزئة الهاشية والتركيب.
توزع التجزئة البيانات والمسؤولية
توزع البنية البيانات وتنسق الموجهات الملكية. تكون الشظية غالباً مجموعة نسخ، فتعالج المزامنة والتجزئة بعدين. لا تقسم الشظايا وثيقة ساخنة ولا تستهدف كل استعلام. تكلف المهاجرة والفهرسة والاتساق موارد؛ ابدأ بالحجم والتوزيع والقراءة والسخونة لا زر علاج للبطء.
قارن المفاتيح دون تغيير العنقود
تصف الكائنات مرشحين لا أوامر تمكين. قد يلائم المستأجر والزمن البحث ويجمع الكتابة أو يختلف الحجم. قد يوزع الهاش ويضعف استهداف المجال. اجمع تعددية القيم والتواتر والتزايد. يطبع المثال البنى ولا يغير العنقود؛ يحتاج الاختيار توزيعاً وحملاً وخطة نقل.
const tenantTime = { tenantId: 1, createdAt: 1 };
const hashedTenant = { tenantId: 'hashed' };
printjson(tenantTime);
printjson(hashedTenant);
{ tenantId: 1, createdAt: 1 }
{ tenantId: "hashed" }
قيم تصميم محلية فقط دون أمر إدارة تجزئة.
يجب أن يلائم المفتاح حدود الاستعلام
قد يوجه شرط مساواة أو مجال مفيد وفق المفتاح والبيانات الوصفية، ويصل غياب المفتاح لشظايا كثيرة رغم فهارسها. لا يحفظ الهاش تجاور المجالات. تبقى شروط المستأجر لازمة وقد تساعد التوجيه إذا وافقت المفتاح. لا تفقد النتائج أو تختلق نطاقاً لتحسين الخطة ظاهرياً.
افحص مجال المستأجر المقصود
النمط لمجموعة تدريب مفتاحها يبدأ بـ tenantId. المجال نصف مفتوح بتواريخ UTC. تكشف explain توزيع العمل وتعتمد الشظايا والمسارات على العينة. البادئة سبب لفحص التوجيه لا ضمان شظية واحدة بعد كل انقسام أو نقل، ولا اتصال هنا.
db.getSiblingDB('quay_lab').shipments.find({
tenantId: 'training-a',
createdAt: { $gte: ISODate('2026-10-01T00:00:00Z'), $lt: ISODate('2026-11-01T00:00:00Z') }
}).explain('queryPlanner');
راجع خطة الموجه والشظايا معزولاً دون بنية أو أوقات مختلقة.
التفرد وإعادة التجزئة مرتبطان بالبنية
للفريد قيود مفتاح التجزئة ويحتاج عموماً بادئته وفق القواعد. إن لم يكن _id مفتاح التجزئة فلا يضمن فهرسه وحده التفرد العالمي عبر الشظايا؛ صمم الهوية. يختلف تحسين المفتاح عن تغييره ولهما شروط إصدار. تؤثر الموازنة والنقل في الزمن، فراجع النسخ والاتساق والتعارض والرجوع.
الأخطاء الشائعة وإصلاحها
لا تعالج زيادة الشظايا وثيقة ساخنة
- لماذا يحدث؟
- يبقى الهدف الواحد غير المقسم عنق الزجاجة.
- كيف تصلحه؟
- راجع الوثيقة والتنافس قبل التوسع.
- كيف تتجنب تكراره؟
- قس السخونة والذرية معاً.
يتوزع الاستعلام رغم فهارس محلية
- لماذا يحدث؟
- لا تقيد الشروط مفتاح التوجيه.
- كيف تصلحه؟
- افحص التوجيه وطابق متطلبات شرعية.
- كيف تتجنب تكراره؟
- قيم الشائع قبل اختيار المفتاح.
يعمل التفرد المفترض عالمياً محلياً
- لماذا يحدث؟
- أُغفلت قيود التفرد الموزع.
- كيف تصلحه؟
- صمم استراتيجية مدعومة وافحص القديم.
- كيف تتجنب تكراره؟
- راجع البادئات ونطاق _id قبل النقل.
اختبر فهمك
1. يملك مستأجر معظم الكتابة. هل يوزع هاش tenantId وحده وثائقه حتماً؟
اعرض الحل المشروح
لا؛ تهش القيمة المتساوية للقيمة نفسها فلا ينقسم التكرار. افحص التعددية والتواتر والمكونات وفق الحمل. قد توزع المفاتيح المستأجرين المختلفين وتبقي الكبير ساخناً؛ اختر بالدليل لا الكلمة.
2. لماذا يكلف استعلام بلا مفتاح تجزئة رغم فهرس بكل شظية؟
اعرض الحل المشروح
قد يجمع الموجه كثيراً فتضاف المزامنة والدمج، رغم كفاءة المحلي. افحص المستويين ثم النموذج أو الملخص أو المفتاح. لا تضف مرشحاً زائفاً يخفي النتائج اللازمة.
أهم ما تعلمته
- يوازن المفتاح التوزيع والتوجيه والقيود.
- المزامنة والتجزئة والنسخ تصاميم تشغيل منفصلة.