دمج الأقسام في Azure Cosmos DB (إصدار أولي)

ينطبق على: NoSQL MongoDB

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

الشروع في العمل

للبدء في استخدام دمج الأقسام، انتقل إلى صفحة الميزات في حساب Azure Cosmos DB الخاص بك. حدد ميزة دمج الأقسام (معاينة) وقم بتمكينها.

قبل تمكين الميزة، تحقق من أن حساب (حسابات) Azure Cosmos DB الخاص بك يفي بجميع معايير الأهلية للمعاينة. بمجرد تمكين الميزة، يستغرق الأمر من 15 إلى 20 دقيقة حتى تصبح سارية المفعول.

تنبيه

عند تمكين الدمج على حساب، سيتم السماح فقط بالطلبات من إصدار >.NET SDK = 3.27.0 أو Java SDK >= 4.42.0 أو موصل >Azure Cosmos DB Spark = 4.18.0 على الحساب، بغض النظر عما إذا كانت عمليات الدمج مستمرة أم لا. سيتم حظر الطلبات من SDK الأخرى (.NET SDK الأقدم وJava SDK الأقدم وأي JavaScript SDK وأي Python SDK وأي Go SDK) أو موصلات غير مدعومة (Azure Data Factory وAzure Search وAzure Functionsextension <= 3.x وAzure Stream Analytics وغيرها) وستفشل. تأكد من الترقية إلى إصدار SDK مدعوم قبل تمكين الميزة. بعد تمكين الميزة أو تعطيلها، قد يستغرق النشر الكامل إلى الحساب من 15 إلى 20 دقيقة. إذا كنت تخطط لتعطيل الميزة بعد الانتهاء من استخدامها، فقد يستغرق الأمر من 15 إلى 20 دقيقة قبل السماح بالطلبات من SDKs والموصلات غير المدعومة للدمج.

Screenshot of Features pane and Partition merge feature.

للتحقق مما إذا كان حساب Azure Cosmos DB مؤهلاً للإصدار الأولي، يمكنك استخدام مدقق الأهلية المدمج في مدخل Microsoft Azure. من صفحة نظرة عامة على حساب Azure Cosmos DB في مدخل Microsoft Azure، انتقل إلى Diagnose and solve problems ->Throughput and Scaling ->Partition Merge. قم بتشغيل التحقق من الأهلية لتشخيص الإصدار الأولي لدمج الأقسام.

Screenshot of Throughput and Scaling content in Diagnose and solve issues page.

Screenshot of merge eligibility check with table of all preview eligibility criteria.

كيفية تحديد الحاويات المراد دمجها

من المحتمل أن تستفيد الحاويات التي تفي بكلا الشرطين من دمج الأقسام:

  • الشرط 1: وحدة الطلب/الثانية الحالية لكل قسم فعلي هي <3000 وحدة طلب/ثانية
  • الشرط 2: متوسط التخزين الحالي بالجيجابايت لكل قسم فعلي هو <20 غيغابايت

غالباً ما يحدث الشرط 1 عندما تكون قد قمت مسبقاً بزيادة وحدات الطلب/الثانية (غالباً لاستيعاب البيانات) وتريد الآن تقليصها في حالة ثابتة. غالباً ما يحدث الشرط 2 عند حذف/TTL كمية كبيرة من البيانات، تاركاً أقساماً غير مستخدمة.

الشرط 1

لتحديد وحدات الطلب/الثانية الحالية لكل قسم فعلي، من حساب Cosmos انتقل إلى "المقاييس". حدد مقياس "معدل نقل القسم الفعلي" والتصفية إلى قاعدة البيانات والحاوية. طبّق التقسيم حسب "PhysicalPartitionId".

بالنسبة للحاويات التي تستخدم التحجيم التلقائي، يعرض هذا المقياس الحد الأقصى لوحدة الطلب/ الثانية المتوفرة حاليا على كل قسم مادي. بالنسبة للحاويات التي تستخدم معدل النقل اليدوي، يعرض هذا المقياس RU/s اليدوي على كل قسم مادي.

لدينا في المثال أدناه حاوية مقياس تلقائي مُزودة بـ 5000 وحدة طلب/ثانية (المقاييس بين 500 -5000 وحدة طلب/ثانية). يحتوي على خمسة أقسام مادية ولكل قسم مادي 1000 وحدة طلب/ثانية.

Screenshot of Azure Monitor metric Physical Partition Throughput in Azure portal.

الشرط 2

لتحديد متوسط التخزين الحالي لكل قسم فعلي، ابحث أولاً عن التخزين الإجمالي (البيانات + الفهرس) للحاوية.

انتقل إلى Insights>Storage>Data & Index Usage. التخزين الإجمالي هو مجموع البيانات واستخدام الفهرس. تبلغ مساحة التخزين الإجمالية للحاوية في المثال أدناه 74 غيغابايت.

Screenshot of Azure Monitor storage (data + index) metric for container in Azure portal.

ابحث بعد ذلك عن العدد الإجمالي للأقسام الفعلية. هذا المقياس هو العدد المميز ل PhysicalPartitionIds في مخطط PhysicalPartitionThroughput الذي رأيناه في الشرط 1. في مثالنا، لدينا خمسة أقسام مادية.

أخيراً، احسب: إجمالي التخزين بالغيغابايت / عدد الأقسام الفعلية. في مثالنا، لدينا متوسط (74 غيغابايت / خمسة أقسام مادية) = 14.8 غيغابايت لكل قسم مادي.

استنادا إلى الشرطين 1 و2، يمكن أن تستفيد حاويتنا من دمج الأقسام.

دمج أقسام مادية

في PowerShell، عند تمرير العلامة -WhatIf ، يقوم Azure Cosmos DB بتشغيل محاكاة وإرجاع النتيجة المتوقعة للدمج. يتم إرجاع هذه النتيجة على الرغم من عدم تشغيل الدمج نفسه. عندما لا يتم تمرير العلامة، يتم تنفيذ الدمج مقابل المورد. عند الانتهاء، يقوم الأمر إخراج مقدار التخزين الحالي في كيلوبايت لكل قسم فعلي بعد الدمج.

تلميح

قبل تشغيل الدمج، يوصى بتعيين وحدات الطلب/ الثانية المتوفرة (إما وحدات الطلب/ الثانية اليدوية أو الحد الأقصى لوحدات الطلب/ الثانية للتحجيم التلقائي) في أقرب وقت ممكن إلى الحالة الثابتة المطلوبة RU/s بعد الدمج، للمساعدة في ضمان حساب النظام لتخطيط قسم فعال.

استخدم Install-Module لتثبيت الوحدة النمطية Az.CosmosDB مع تمكين ميزات الإصدار التجريبي.

$parameters = @{
    Name = "Az.CosmosDB"
    AllowPrerelease = $true
    Force = $true
}
Install-Module @parameters

بالنسبة لحاويات معدل النقل المتوفرة، استخدم Invoke-AzCosmosDBSqlContainerMerge مع المعلمة -WhatIf لمعاينة الدمج دون تنفيذ العملية فعليا.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
    WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

ابدأ الدمج عن طريق تشغيل نفس الأمر بدون المعلمة -WhatIf .

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

بالنسبة لقواعد بيانات معدل النقل المشترك، ابدأ الدمج باستخدام az cosmosdb mongodb database merge.

az cosmosdb mongodb database merge \
	--account-name '<cosmos-account-name>'                               
	--name '<cosmos-database-name>'                                
	--resource-group '<resource-group-name>'

مراقبة عمليات الدمج

دمج الأقسام هو عملية طويلة الأمد ولا توجد اتفاقية مستوى الخدمة على المدة التي يستغرقها لإنجازها. يعتمد الوقت على كمية البيانات في الحاوية وعدد الأقسام الفعلية. يوصى بالسماح بإكمال الدمج لمدة 5-6 ساعات على الأقل.

أثناء تشغيل دمج الأقسام على الحاوية الخاصة بك، إذا قمت بتغيير إعدادات الحاوية (TTL، ونهج الفهرسة، والمفاتيح الفريدة، وما إلى ذلك)، فسيتم إلغاء عملية الدمج المستمرة. إذا قمت بزيادة وحدات الطلب/الثانية الخاصة بك أثناء تشغيل الدمج، فسيتم إلغاء عملية الدمج الجارية وسيتم تحديث RU/s للحاوية بقيمتك الجديدة. اعتمادا على وحدات الطلب/ثانية المطلوبة، قد يكون توسيع نطاقك فوريا أو يستغرق وقتا أطول. إذا قمت بتقليص وحدات الطلب/ الثانية الخاصة بك أثناء تشغيل الدمج، فسيتم تحديث RU/s على الفور إلى RU/s الجديدة. سيستمر الدمج قيد التقدم، مع نفس عدد الأقسام الهدف استنادا إلى مجموعة RU/s في وقت تشغيل الدمج. كأفضل ممارسة، يوصى بالانتظار حتى تكتمل عملية الدمج قبل تغيير إعدادات الحاوية أو معدل النقل.

يمكنك تعقب ما إن كان الدمج لا يزال قيد التقدم عن طريق التحقق من سجل النشاط وتصفية الأحداث دمج الأقسام الفعلية لمجموعة MongoDB أو دمج الأقسام الفعلية لحاوية SQL.

القيود

فيما يلي قيود على ميزة الدمج في هذا الوقت.

معاينة معايير الأهلية

للتسجيل في المعاينة، يجب أن يفي حساب Azure Cosmos DB بجميع المعايير التالية:

  • يستخدم حساب Azure Cosmos DB API ل NoSQL أو MongoDB مع الإصدار >=3.6.
  • يستخدم حساب Azure Cosmos DB معدل النقل المقدم (يدويا أو تلقائيا). ولا تنطبق الميزة على الحسابات بِلا خادم.
  • حساب Azure Cosmos DB الخاص بك هو حساب منطقة كتابة واحدة (الدمج غير مدعوم حاليا لحسابات الكتابة متعددة المناطق).
  • لا يستخدم حساب Azure Cosmos DB أي من الميزات التالية:
  • إذا كنت تستخدم واجهة برمجة التطبيقات ل NoSQL، يجب أن يستخدم تطبيقك Azure Cosmos DB .NET v3 SDK (الإصدار 3.27.0 أو أعلى) أو Java v4 SDK (الإصدار 4.42.0 أو أعلى). عند تمكين معاينة الدمج على حسابك، لا يقبل الحساب الطلبات المرسلة من .NET/Java SDKs أو إصدارات .NET/Java SDK الأقدم.
    • لا توجد متطلبات SDK أو برامج تشغيل لاستخدام الميزة مع واجهة برمجة التطبيقات ل MongoDB.
  • لا يستخدم حساب Azure Cosmos DB الخاص بك أي موصلات غير مدعومة حاليا:
    • Azure Data Factory
    • Azure Stream Analytics
    • Logic Apps
    • ملحق <Azure Functions = 3.x (يتم دعم ملحق Azure Functions 4.0 والإضافات الأحدث)
    • Azure Search
    • موصل < Azure Cosmos DB Spark 4.18.0
    • أي مكتبة أو أداة تابعة لجهة خارجية تعتمد على Azure Cosmos DB SDK ليست .NET v3 SDK >= v3.27.0 أو Java v4 SDK >= 4.42.0

موارد الحساب وتكوينها

  • يتوفر الدمج فقط لواجهة برمجة التطبيقات لحسابات NoSQL وMongoDB. بالنسبة إلى API لحسابات MongoDB، يجب أن يكون إصدار حساب MongoDB 3.6 أو أحدث.
  • يتوفر الدمج فقط لحسابات الكتابة في منطقة واحدة. لا يتوفر دعم حسابات الكتابة متعدد المناطق.
  • لا يمكن للحسابات التي تستخدم وظيفة الدمج أيضا استخدام هذه الميزات (إذا تمت إضافة هذه الميزات إلى حساب تمكين الدمج، فلن يتمكن الحساب من دمج الموارد):
  • بعد دمج حاوية، لا يمكن قراءة موجز التغيير أثناء وقت البدء. من المقرر دعم مجموعات SDK الأخرى مستقبلا.

متطلبات SDK (API ل NoSQL فقط)

يتم دعم الحسابات التي تم تمكين ميزة الدمج فيها فقط عند استخدام أحدث إصدار من .NET v3 SDK أو Java v4 SDK. عند تمكين الميزة على حسابك (بغض النظر عما إذا كنت تقوم بتشغيل الدمج أم لا)، يجب عليك فقط استخدام SDK المدعوم باستخدام الحساب. لا يتم قبول الطلبات المرسلة من SDKs الأخرى أو الإصدارات السابقة. طالما أنك تستخدم SDK المدعوم، يمكن أن يستمر التطبيق الخاص بك في التشغيل أثناء استمرار الدمج.

اعثر على أحدث إصدار لـ SDK المدعوم:

SDK الإصدارات المدعومة ارتباط مدير الحزمة
NET SDK. الإصدار 3 >= 3.27.0 https://www.nuget.org/packages/Microsoft.Azure.Cosmos
Java SDK v4 >= 4.42.0 https://mvnrepository.com/artifact/com.azure/azure-cosmos

من المقرر دعم مجموعات SDK الأخرى في المستقبل.

تلميح

يجب عليك التأكد من تحديث تطبيقك لاستخدام إصدار SDK متوافق قبل التسجيل في الإصدار الأوَّلي. إذا كنت تستخدم SDK قديما، فاتبع دليل الترحيل المناسب:

الموصلات غير المدعومة

إذا قمت بالتسجيل في المعاينة، تفشل الموصلات التالية.

  • Azure Data Factory ¹
  • Azure Stream Analytics ¹
  • Logic Apps ¹
  • ملحق <Azure Functions = 3.x (يتم دعم ملحق Azure Functions 4.0 والإضافات الأحدث) ¹
  • Azure Search ¹
  • موصل < Azure Cosmos DB Spark 4.18.0
  • أي مكتبة أو أداة تابعة لجهة خارجية تعتمد على Azure Cosmos DB SDK ليست .NET v3 SDK >= v3.27.0 أو Java v4 SDK >= 4.42.0

¹ يتم التخطيط لدعم هذه الموصلات في المستقبل.

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