ترقيم الصفحات في Azure Cosmos DB ل NoSQL

ينطبق على: NoSQL

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

عمليات تنفيذ الاستعلام

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

يمكنك تحديد الحد الأقصى لعدد العناصر المرتجعة عن طريق استعلام عن طريق تعيين MaxItemCount. يُحدد MaxItemCount لكل طلب ويخبر محرك الاستعلام بأنه سيعيد هذا العدد من العناصر أو أقل. يمكنك تعيين MaxItemCount على -1 إذا كنت لا تريد وضع حد لعدد النتائج لكل تنفيذ استعلام.

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

  • تم تقييد الحاوية ولم تكن هناك وحدات RU متاحة لإرجاع المزيد من نتائج الاستعلام
  • كانت استجابة تنفيذ الاستعلام كبيرة جداً
  • كان وقت تنفيذ الاستعلام طويلاً جداً
  • كان من الأكثر كفاءة لمحرك الاستعلام إرجاع النتائج في عمليات تنفيذ إضافية

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

معالجة صفحات متعددة من النتائج

لضمان دقة نتائج الاستعلام، يجب أن تتقدم في جميع الصفحات. يجب الاستمرار في تنفيذ الاستعلامات حتى لا توجد صفحات إضافية.

فيما يلي بعض الأمثلة لمعالجة النتائج من الاستعلامات ذات الصفحات المتعددة:

رموز الاستمرار

في .NET SDK وJava SDK، يمكنك اختيارياً استخدام الرموز المميزة للاستمرار كإشارة مرجعية لتقدم استعلامك. تعد عمليات تنفيذ استعلام Azure Cosmos DB ل NoSQL عديمة الحالة على جانب الخادم ويمكن استئنافها في أي وقت باستخدام رمز المتابعة المميز. بالنسبة إلى Python SDK، يتم دعم الرموز المميزة للمتابعة لاستعلامات القسم الفردي فقط. يجب تحديد مفتاح القسم في كائن الخيارات لأنه لا يكفي أن يكون في الاستعلام نفسه.

فيما يلي بعض الأمثلة على استخدام الرموز المميزة للمتابعة:

إذا أرجع الاستعلام رمزا مميزا للمتابعة، فهناك نتائج استعلام إضافية.

في Azure Cosmos DB لواجهة برمجة تطبيقات REST الخاصة ب NoSQL، يمكنك إدارة رموز المتابعة المميزة x-ms-continuation بالعنوان. كما هو الحال مع الاستعلام باستخدام .NET أو Java SDK، إذا لم x-ms-continuation يكن عنوان الاستجابة فارغا، فهذا يعني أن الاستعلام له نتائج إضافية.

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

لا يمكنك استخدام الرموز المميزة للمتابعة للاستعلامات مع GROUP BY أو DISTINCT لأن هذه الاستعلامات تتطلب تخزين قدر كبير من الحالة. بالنسبة لطلبات البحث التي تحتوي على DISTINCT، يمكنك استخدام الرموز المميزة للمتابعة إذا قمت بإضافة ORDER BY إلى الاستعلام.

فيما يلي مثال على استعلام باستخدام DISTINCT والذي يمكن أن يستخدم رمز المتابعة:

SELECT DISTINCT VALUE
    e.name
FROM
    employees e
ORDER BY
    e.name