الأسئلة المتداولة حول مفاتيح الأقسام الهرمية في Azure Cosmos DB

ينطبق على: NoSQL MongoDB كاساندرا العفريت جدول

تسمح لك مفاتيح التقسيم الهرمية أو التقسيم الفرعي بتكوين تسلسل هرمي يصل إلى ثلاثة مستويات لمفاتيح التقسيم من أجل تحسين توزيع البيانات وتمكين المقياس الأعلى. تجيب هذه المقالة على الأسئلة الشائعة حول مفاتيح التقسيم الهرمي Azure Cosmos DB.

هل يمكنني إضافة مفاتيح أقسام هرمية إلى الحاويات الموجودة؟

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

هل ثمة حد للتخزين على حجم مفتاح التقسيم المنطقي؟

نعم. تماما كما هو الحال في Azure Cosmos DB اليوم، لا يزال حجم القسم المنطقي محدودا ب 20 غيغابايت. ومع ذلك، باستخدام مفاتيح التقسيم الهرمي، يصبح التقسيم المنطقي الآن مسار مفتاح التقسيم بأكمله. على سبيل المثال، إذا قمت بتقسيم بواسطة TenantId -> UserId، فإن القسم المنطقي المثال سيكون Contoso_Alice. يعني استخدام التقسيم الفرعي أنه يمكنك الحصول على 20 غيغابايت من البيانات حيث تكون قيمة مفتاح القسم .Contoso_Alice تبلغ سعة التخزين المسموح بها للبيانات في "Contoso حوالي " 20 جيجابايت * عدد معرفات المستخدم الفريدة للمستأجر "Contoso."

هل ثمة تغييرات على حدود التخزين ووحدة الطلب/الثانية على التقسيم الفعلي؟

‏‏لا. تماما كما هو الحال في Azure Cosmos DB اليوم، يمكن أن يحتوي القسم الفعلي على 50 جيجابايت من التخزين ويخدم ما يصل إلى 10000 وحدة طلب/ثانية. ومع ذلك، باستخدام مفاتيح التقسيم الهرمي، إذا كانت البيانات الخاصة ببادئة مفتاح تقسيم معين - على سبيل المثال، TenantId - موجودة في تقسيم فعلي متعدد، فإن التقسيم الفرعي يعني أن إجمالي وحدات الطلب/الثواني الذي يمكن تحقيقه لمعرف المستأجر الفريد يمكن أن يتجاوز 10,000 وحدة طلب/ثانية.

ماذا يحدث إذا قمت بالاستعلام وتحديد مفتاح تقسيم فقط في "وسط" المسار؟

الاستعلام الخاص بك هو استعلام عبر الأقسام. على سبيل المثال، إذا قمت بالتقسيم حسب TenantId -> UserId، وقمت بتوفير UserId فقط في الاستعلام، فإن هذا الاستعلام ينعش جميع الأقسام المادية.

للحصول على استعلام توجيه بكفاءة باستخدام مثال TenantId -> UserId، فهناك خياران:

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

هل يتعين عليّ إنشاء خاصية جديدة في مستنداتي لاستخدام هذه الميزة؟

‏‏لا. حدد التسلسل الهرمي لمسارات مفتاح التقسيم التي تريد استخدامها أثناء إنشاء الحاوية. على سبيل المثال، إذا قمت بالتقسيم حسب TenantId -> UserId، فلن تحتاج إلى إنشاء خاصية جديدة بهذه القيم المتسلسلة. تأكد من أن كل مستند يحتوي على خاصية TenantId وخاصية UserId. للحصول على مزيدٍ من المعلومات، راجع مثال على التعليمة البرمجية في subpartitioning.

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

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

  • النهج 1:
  1. يمكنك إنشاء حاوية بأقل من 10000 وحدة طلب للتأكد من أن لديك قسما ماديا واحدا فقط.
  2. استيعاب حوالي 5 غيغابايت من البيانات للتأكد من عدم وجود تقسيمات للأقسام.
  3. توسيع نطاق وحدات الطلب المطلوبة، ومتابعة استيعاب البيانات، ويضمن Azure Cosmos DB تقسيم أقسامك المادية بشكل موحد.
  • النهج 2:
  1. يمكنك رفع العرض الإجمالي إلى عدد أكبر من وحدات الطلب، واستيعاب جميع بياناتك.
  2. بعد ذلك، قم بإجراء دمج الأقسام للتأكد من أن أقسام حمل العمل الخاص بك ليست مجزأة ولها توزيع زوجي
  3. بمجرد اكتمال الدمج، قم بالتحجيم مرة أخرى إلى العدد الأصلي المطلوب من وحدات الطلب.

للحصول على مزيد من التحكم في مقدار معدل النقل لكل قسم، يمكنك أيضا استخدام إعادة توزيع الإنتاجية لضمان أن الأقسام التي يستخدمها حمل العمل لديك تحتوي على وحدات RUs كافية لطلباتك المستقبلية.

الخطوات التالية