إنشاء مفتاح قسم اصطناعي

ينطبق على: NoSQL

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

سلسلة خصائص متعددة لعنصر

يمكنك تشكيل مفتاح قسم عن طريق ربط قيم خصائص متعددة في خاصية اصطناعية واحدة partitionKey. ويشار إلى هذه المفاتيح كمفاتيح اصطناعية. على سبيل المثال، خذ بعين الاعتبار المستند المثال التالي:

{
"deviceId": "abc-123",
"date": 2018
}

بالنسبة للمستند السابق، أحد الخيارات هو تعيين /deviceId أو /date كمفتاح القسم. استخدم هذا الخيار، إذا كنت تريد تقسيم الحاوية استناداً إلى معرّف الجهاز أو التاريخ. خيار آخر هو لسلسلة هذه القيمتين في الخاصية الاصطناعية partitionKey التي يتم استخدامها كمفتاح القسم.

{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}

في سيناريوهات الوقت الحقيقي، يمكنك الحصول على آلاف العناصر في قاعدة البيانات. بدلا من إضافة المفتاح الاصطناعي يدويا، حدد منطق العميل لتسلسل القيم وإدراج المفتاح الاصطناعي في العناصر الموجودة في حاويات Azure Cosmos DB.

استخدام مفتاح قسم مع لاحقة عشوائية

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

مثال على ذلك إذا كان مفتاح قسم يمثل تاريخاً. قد تختار رقماً عشوائياً بين 1 و400 وتسجّله كلاحقة للتاريخ. ينتج عن هذا الأسلوب قيم مفتاح القسم مثل 2018-08-09.1 و2018-08-09.2، وهكذا، من خلال 2018-08-09.400. نظراً لأنك تقوم بترتيب مفتاح القسم عشوائياً، فإن عمليات الكتابة على الحاوية في كل يوم تنتشر بالتساوي عبر أقسام متعددة. ينتج عن هذه الطريقة أقصى درجة من التوازي وإجمالي إنتاجية أعلى.

استخدام مفتاح القسم مع لاحقات محسوبة مسبقاً

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

خذ بعين الاعتبار المثال السابق، حيث تستخدم حاوية تاريخ كمفتاح القسم. نفترض الآن أن كل عنصر له سمة Vehicle-Identification-Number (VIN) نريد الوصول إليها. علاوة على ذلك، افترض أنك غالبا ما تقوم بتشغيل الاستعلامات للبحث عن العناصر حسب VIN، بالإضافة إلى التاريخ. قبل أن يقوم التطبيق بكتابة العنصر إلى الحاوية، فإنه يمكن حساب لاحقة تجزئة استناداً إلى VIN وإلحاقه بتاريخ مفتاح القسم. قد ينتج عن الحساب عدد بين 1 و400 مُوزّع بالتساوي. هذه النتيجة مشابهة للنتائج الناتجة عن أسلوب إستراتيجية لاحقة عشوائية. قيمة مفتاح القسم ثم تاريخ سلسلة مع النتيجة المحسوبة.

مع هذه الإستراتيجية، يتم نشر الكتابات بالتساوي عبر قيم مفتاح القسم، وعبر الأقسام. يمكنك بسهولة قراءة عنصر معين وتاريخ معين، لأنه يمكنك حساب قيمة مفتاح القسم للعنصر معينVehicle-Identification-Number. الفائدة من هذا الأسلوب هو أنه يمكنك تجنب إنشاء مفتاح قسم واحد ساخن، أي مفتاح القسم الذي يأخذ كل حمل العمل.

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

يمكنك معرفة المزيد حول مفهوم التقسيم في المقالات التالية: