فصل الصفحات في Azure Cosmos DB
ينطبق على:
واجهة برمجة التطبيقات SQL
في قاعدة بيانات Azure Cosmos، قد تحتوي الاستعلامات على صفحات متعددة من النتائج. يشرح هذا المستند المعايير التي يستخدمها محرك استعلامAzure Cosmos DB لتقرير ما إذا كانت نتائج الاستعلام ستقسم إلى صفحات متعددة. يمكنك استخدام الرموز المميزة للمتابعة اختيارياً لإدارة نتائج الاستعلام الممتدة عبر صفحات متعددة.
فهم عمليات تنفيذ الاستعلام
في بعض الأحيان تُقسَّم نتائج الاستعلام على صفحات متعددة. تُنشأ نتائج كل صفحة من خلال تنفيذ استعلام منفصل. عند تعذر إرجاع نتائج الاستعلام في تنفيذ واحد، ستقوم Azure Cosmos DB تلقائيًا بتقسيم النتائج إلى صفحات متعددة.
يمكنك تحديد الحد الأقصى لعدد العناصر المرتجعة عن طريق استعلام عن طريق تعيين MaxItemCount. يُحدد MaxItemCount لكل طلب ويخبر محرك الاستعلام بأنه سيعيد هذا العدد من العناصر أو أقل. يمكنك تعيين MaxItemCount على -1 إذا كنت لا تريد وضع حد لعدد النتائج لكل تنفيذ استعلام.
بالإضافة إلى ذلك، هناك أسباب أخرى قد تجعل محرك الاستعلام بحاجة إلى تقسيم نتائج الاستعلام إلى صفحات متعددة. وتشمل هذه القيود ما يلي:
- تم تقييد الحاوية ولم تكن هناك وحدات RU متاحة لإرجاع المزيد من نتائج الاستعلام
- كانت استجابة تنفيذ الاستعلام كبيرة جداً
- كان وقت تنفيذ الاستعلام طويلاً جداً
- كان من الأفضل لمحرك الاستعلام إرجاع النتائج في عمليات تنفيذ إضافية
سيكون عدد العناصر التي يتم إرجاعها لكل تنفيذ استعلام دائماً أقل من أو يساوي MaxItemCount. ومع ذلك، من الممكن أن تكون المعايير الأخرى قد حدت من عدد النتائج التي يمكن للاستعلام عرضها. في حالة تنفيذ الاستعلام نفسه عدة مرات، فقد لا يكون عدد الصفحات ثابتاً. على سبيل المثال، في حالة تقييد الاستعلام، فقد يكون هناك عدد أقل من النتائج المتاحة لكل صفحة، مما يعني أن الاستعلام سيحتوي على صفحات إضافية. في بعض الحالات، من الممكن أيضاً أن يعرض الاستعلام صفحة فارغة من النتائج.
التعامل مع صفحات متعددة من النتائج
لضمان دقة نتائج الاستعلام، يجب أن تتقدم في جميع الصفحات. يجب عليك الاستمرار في تنفيذ الاستعلامات حتى عدم وجود صفحات إضافية.
فيما يلي بعض الأمثلة لمعالجة النتائج من الاستعلامات ذات الصفحات المتعددة:
رموز الاستمرار
في .NET SDK وJava SDK، يمكنك اختيارياً استخدام الرموز المميزة للاستمرار كإشارة مرجعية لتقدم استعلامك. عمليات تنفيذ استعلام Azure Cosmos DB بدون حالة على جانب الخادم ويمكن استئنافها في أي وقت باستخدام رمز المتابعة. بالنسبة إلى Python SDK و Node.js SDK، تُدعم لاستعلامات القسم الفردي، ويجب تحديد PK في عنصر الخيارات لعدم كفاية وجودها في الاستعلام نفسه.
فيما يلي بعض الأمثلة على استخدام الرموز المميزة للمتابعة:
إذا قام الاستعلام بإرجاع رمز استمرار، فهناك نتائج استعلام إضافية.
في واجهة برمجة تطبيقات REST الخاصة بـ Azure Cosmos DB يمكنك إدارة الرموز المميزة للمتابعة باستخدام x-ms-continuationالعنوان. كما هو الحال مع الاستعلام باستخدام .NET أو Java SDK، إذا لم يكن عنوان استجابة x-ms-continuation فارغاً، فهذا يعني أن الاستعلام له نتائج إضافية.
طالما أنك تستخدم نفس إصدار SDK، فلن تنتهي صلاحية الرموز المميزة للمتابعة أبداً. يمكنك اختيارياً تقييد حجم رمز المتابعة. بغض النظر عن مقدار البيانات أو عدد الأقسام المادية في الحاوية الخاصة بك، تُرجع الاستعلامات رمز متابعة واحد.
لا يمكنك استخدام الرموز المميزة للمتابعة للاستعلامات ذات GROUP BY أو DISTINCT لأن طلبات البحث هذه تتطلب تخزين قدر كبير من الحالة. بالنسبة لطلبات البحث التي تحتوي على DISTINCT، يمكنك استخدام الرموز المميزة للمتابعة إذا قمت بإضافة ORDER BY إلى الاستعلام.
فيما يلي مثال على استعلام باستخدام DISTINCT والذي يمكن أن يستخدم رمز المتابعة:
SELECT DISTINCT VALUE c.name
FROM c
ORDER BY c.name