إنشاء مفتاح تقسيم اصطناعي
ينطبق على:
واجهة برمجة تطبيقات SQL
من أفضل الممارسات أن يكون لديك مفتاح قسم يحتوي على العديد من القيم المميزة، مثل المئات أو الآلاف. الهدف هو توزيع بياناتك وحمل العمل بالتساوي عبر العناصر المرتبطة بقيم مفتاح القسم هذه. في حالة عدم وجود مثل هذه الخاصية في بياناتك، يمكنك إنشاء مفتاح قسم تركيبي. يصف هذا المستند العديد من الأساليب الأساسية لإنشاء مفتاح تقسيم تركيبي لحاوية Cosmos الخاصة بك.
سلسلة خصائص متعددة لعنصر
يمكنك تشكيل مفتاح قسم عن طريق ربط قيم خصائص متعددة في خاصية اصطناعية partitionKey واحدة. يشار إلى هذه المفاتيح باسم المفاتيح الاصطناعية. على سبيل المثال، ضع في اعتبارك المستند المثال التالي:
{
"deviceId": "abc-123",
"date": 2018
}
بالنسبة للمستند السابق، يتمثل أحد الخيارات في تعيين / معرف الجهاز أو / تاريخ كمفتاح القسم. استخدم هذا الخيار، إذا كنت تريد تقسيم الحاوية الخاصة بك بناءً على معرف الجهاز أو التاريخ. خيار آخر هو لسلسلة هذه القيمتين في خاصية الاصطناعية partitionKey التي يتم استخدامها كمفتاح القسم.
{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}
في سيناريوهات الوقت الفعلي، يمكن أن يكون لديك آلاف العناصر في قاعدة بيانات. بدلاً من إضافة المفتاح الاصطناعي يدوياً، حدد منطق العميل لربط القيم وإدخال المفتاح الاصطناعي في العناصر الموجودة في حاويات Cosmos الخاصة بك.
استخدم مفتاح قسم مع لاحقة عشوائية
تتمثل الإستراتيجية الأخرى الممكنة لتوزيع حمل العمل بشكل متساوٍ في إلحاق رقم عشوائي في نهاية قيمة مفتاح القسم. عند توزيع العناصر بهذه الطريقة، يمكنك إجراء عمليات كتابة متوازية عبر الأقسام.
مثال على ذلك إذا كان مفتاح القسم يمثل تاريخاً. يمكنك اختيار رقم عشوائي بين 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 محدد. تكمن فائدة هذه الطريقة في أنه يمكنك تجنب إنشاء مفتاح قسم ساخن واحد، أي مفتاح قسم يأخذ كل أحمال العمل.
الخطوات التالية
يمكنك معرفة المزيد حول مفهوم التقسيم في المقالات التالية:
- تعرف على المزيد عن الأقسام المنطقية.
- تعرف على المزيد حول كيفية توفير معدل النقل على حاويات وقواعد بيانات Azure Cosmos.
- تعرف على كيفية توفير سرعة النقل في حاوية Azure Cosmos.
- تعرف على كيفية توفير سرعة النقل في قاعدة بيانات Azure Cosmos.
- هل تحاول القيام بتخطيط السعة للترحيل إلى Azure Cosmos DB؟ يمكنك استخدام معلومات حول مجموعة قاعدة البيانات الموجودة لتخطيط السعة.
- إذا كان كل ما تعرفه هو عدد vcores والخوادم في مجموعة قاعدة البيانات الموجودة، فاقرأ عن تقدير وحدات الطلب باستخدام vCores أو vCPUs
- إذا كنت تعرف المعدلات النموذجية للطلب لحمل العمل الحالي في قاعدة بياناتك، فاقرأ عن تقدير وحدات الطلب باستخدام مخطط السعة من Azure Cosmos DB