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

MongoDB / المتقدم: التشغيل الموزع والقابل للتعافي / الدرس 18

التشغيل والتطور وموثوقية الإصدارات

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

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • تصميم توسيع الوثيقة ثم تقليصها.
  • تقييم الإصدار والبنية والتعافي قبل التحويل.

ثبت الافتراضات لا أحدث إصدار متحرك

تستخدم الأمثلة أساس8.0 وتوضح حدود الميزات. قد تشمل الوثائق أحدث، فحدد الخادم والمشغل والبيئة والنشر. تختلف الإدارة والقدرات بين Community وEnterprise وAtlas. اتبع المسار والنشرات الدقيقة؛ يختلف الإصدار الثنائي وfeatureCompatibilityVersion ولا يثبت تغيير أحدهما كل متطلبات التطبيق والرجوع.

احصر نطاق التطبيق الفعلي

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

javascript mongosh توضيحية؛ النتائج المتوقعة مستنتجة وليست قياسات.
db.getSiblingDB('quay_lab').getCollectionInfos({ name: 'shipments' });
db.getSiblingDB('quay_lab').shipments.getIndexes();

المتوقع وصف المجموعة المرئية دون جرد مختلق.

وسع وقارب قبل إزالة الأشكال القديمة

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

صرح بدلالة مقارنة الملء

افترض اتفاق legacyCode وtrackingCode وتعامل الترحيل المقصود مع الغياب وnull كغياب واحد. يعيد المسار الاختلاف بعد $ifNull. المتوقع فراغ للمتفق وفق القاعدة ولا يثبت هوية النوع أو بقية الحقول. استخدم مقارنة تراعي النوع إذا اختلف معنى الغائب والفراغ.

javascript mongosh توضيحية؛ النتائج المتوقعة مستنتجة وليست قياسات.
db.getSiblingDB('quay_lab').shipments.aggregate([
  { $match: { $expr: { $ne: [
    { $ifNull: ['$legacyCode', null] }, { $ifNull: ['$trackingCode', null] }
  ] } } },
  { $project: { _id: 1, legacyCode: 1, trackingCode: 1 } },
  { $sort: { _id: 1 } }, { $limit: 20 }
]);

بعد ملء صحيح وفق سياسة الغياب: لا وثائق اختلاف.

حدد آخر نقطة رجوع آمنة

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

الأخطاء الشائعة وإصلاحها

تفترض الترقية الثنائية اكتمال التوافق

لماذا يحدث؟
لم تراجع شروط المشغل وFCV والميزات والرجوع.
كيف تصلحه؟
اتبع الإجراء الدقيق وافحص العقود.
كيف تتجنب تكراره؟
سجل الإصدارات والقدرات قبل النشر.

تفشل القراءة القديمة بعد كتابة شكل جديد

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

يفقد الرجوع أحداث الوجهة الجديدة

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

اختبر فهمك

1. لماذا يكسر إضافة trackingCode وحذف legacyCode فوراً نشراً تدريجياً؟

اعرض الحل المشروح

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

2. قبلت الوجهة كتابة خاصة ساعة. ماذا ينقص رجوع يغير URI فقط؟

اعرض الحل المشروح

يجب حفظ كل حدث أو مصالحته ومنع كتابات متعارضة، وإثبات الحد والمستهلكين والمسار العكسي أو التعافي. URI توجيه لا تطابق تاريخ؛ احفظ النسخ وقرار المرجع قبل الملكية.

أهم ما تعلمته

  • لا تلغي المرونة التوافق والتعافي.
  • يجعل التقارب المرصود والكاتب المنضبط التغيير قابلاً للمراجعة.

المراجع الرسمية