كيفية تكوين ذاكرة التخزين المؤقت المتكاملة Azure Cosmos DB
ينطبق على: NoSQL
توضح هذه المقالة كيفية توفير بوابة مخصصة وتكوين ذاكرة التخزين المؤقت المتكاملة ثم الاتصال بالتطبيق الخاص بك.
المتطلبات الأساسية
- في حال لم يكن لديك اشتراك في Azure، قم بإنشاءحساب مجاني قبل البدء.
- تطبيق موجود يستخدم Azure Cosmos DB. إذا لم يكن لديك مثال، فـ هنا بعض الأمثلة.
- واجهة برمجة تطبيقات Azure Cosmos DB موجودة لحساب NoSQL.
توفير البوابة المخصصة
انتقل إلى حساب Azure Cosmos DB في مدخل Azure وحدد علامة التبويب بوابة مخصصة.
املأ نموذج البوابة المخصصة بالتفاصيل التالية:
- بوابة مخصصة - شغِّل التبديل إلى المتوفر.
- SKU - حدد وحدة حفظ المخزون SKU مع حجم الذاكرة والحساب المطلوبة. ستستخدم ذاكرة التخزين المؤقت المتكاملة حوالي 50٪ من الذاكرة، ويتم استخدام الذاكرة المتبقية لبيانات التعريف وطلبات التوجيه إلى أقسام الواجهة الخلفية.
- عدد المثيلات - عدد العقد. لأغراض التطوير، نوصي بالبدء مع عقدة واحدة بحجم D4. استنادًا إلى كمية البيانات التي تحتاج إلى تخزينها مؤقتًا وتحقيق قابلية وصول عالية لها، يمكنك زيادة حجم العقدة بعد الاختبار الأولي.
حدد حفظ وانتظر حوالي 5-10 دقائق لإكمال توفير البوابة المخصصة. عند الانتهاء من التوفير، سترى الإعلام التالي:
تكوين ذاكرة التخزين المؤقت المتكاملة
عند إنشاء بوابة مخصصة، يتم توفير ذاكرة تخزين مؤقت متكاملة تلقائياً.
قم بتعديل سلسلة اتصال التطبيق الخاص بك لاستخدام نقطة نهاية البوابة المخصصة الجديدة.
سلسلة اتصال البوابة المخصصة المحدثة في شفرة المفاتيح:
تتبع جميع سلاسل اتصال البوابة المخصصة نفس النمط. قم بإزالة
documents.azure.com
من سلسلة الاتصال الأصلية واستبدالها بـsqlx.cosmos.azure.com
. سيكون للبوابة المخصصة دائماً نفس سلسلة الاتصال، حتى إذا قمت بإزالتها وإعادة توفيرها.لا تحتاج إلى تعديل سلسلة الاتصال في جميع التطبيقات باستخدام نفس حساب Azure Cosmos DB. على سبيل المثال، يمكن أن يكون لديك اتصال
CosmosClient
واحد باستخدام وضع البوابة ونقطة نهاية البوابة المخصصة بينما يستخدم اتصالCosmosClient
الآخر الوضع المباشر. وبعبارة أخرى، لا تؤثر إضافة بوابة مخصصة على الطرق الحالية للاتصال بـ Azure Cosmos DB.إذا كنت تستخدم .NET أو Java SDK، فقم بتعيين وضع الاتصال إلى وضع البوابة. هذه الخطوة ليست ضرورية لـ Python وSDKs Node.js لأنها لا تملك خيارات إضافية للاتصال بجانب وضع البوابة.
إشعار
إذا كنت تستخدم أحدث إصدار من .NET أو Java SDK، فإن وضع الاتصال الافتراضي هو الوضع المباشر. لاستخدام ذاكرة التخزين المؤقت المتكاملة، يجب منع الاتصال الافتراضي هذا.
ضبط تناسق الطلب
يجب عليك التأكد من أن تناسق الطلب هو جلسة عمل أو تناسق نهائي. إذا لم يكن كذلك، فسيسمح الطلب دوماً لذاكرة التخزين المؤقت المتكاملة. أسهل طريقة لتكوين تناسق محدد لجميع عمليات القراءة هي تعيينه على مستوى الحساب. يمكنك أيضاً تكوين التناسق على مستوى الطلب، وهو ما ينصح به إذا كنت تريد فقط مجموعة فرعية من القراءات لاستخدام ذاكرة التخزين المؤقت المتكاملة.
إشعار
إذا كنت تستخدم Python SDK، يجب تعيين مستوى التناسق لكل طلب بشكل صريح. لن يتم تطبيق الإعداد الافتراضي على مستوى الحساب تلقائياً.
ضبط MaxIntegratedCacheStaleness
تكوين MaxIntegratedCacheStaleness
، وهو الحد الأقصى للوقت الذي تكون فيه على استعداد لتحمل البيانات المخزنة مؤقتا التي لا معنى لها. يوصى بتعيين MaxIntegratedCacheStaleness
أعلى مستوى ممكن لأنه سيزيد من احتمالية أن تكون عمليات قراءة النقاط والاستعلامات المتكررة بمثابة مرات وصول إلى ذاكرة التخزين المؤقت. إذا قمت بتعيين MaxIntegratedCacheStaleness
إلى 0، فلن يستخدم طلب القراءة ذاكرة التخزين المؤقت المتكاملة، بغض النظر عن مستوى التناسق. عند عدم التكوين، تكون القيمة الافتراضية MaxIntegratedCacheStaleness
هي 5 دقائق.
إشعار
MaxIntegratedCacheStaleness
يمكن تعيين حتى 10 سنوات. في الممارسة العملية، هذه القيمة هي الحد الأقصى للتالفة وقد تتم إعادة تعيين ذاكرة التخزين المؤقت في وقت أقرب بسبب إعادة تشغيل العقدة التي قد تحدث.
يتم اعتماد ضبط MaxIntegratedCacheStaleness
في هذه الإصدارات من كل SDK:
SDK | الإصدارات المدعومة |
---|---|
NET SDK. الإصدار 3 | >= 3.30.0 |
Java SDK v4 | >= 4.34.0 |
Node.js SDK | >=3.17.0 |
Python SDK | >=4.3.1 |
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
{
DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions
{
MaxIntegratedCacheStaleness = TimeSpan.FromMinutes(30)
}
}
);
تجاوز ذاكرة التخزين المؤقت المتكاملة
BypassIntegratedCache
استخدم خيار الطلب للتحكم في الطلبات التي تستخدم ذاكرة التخزين المؤقت المتكاملة. لن تستخدم عمليات الكتابة وقراءات النقاط والاستعلامات التي تتجاوز ذاكرة التخزين المؤقت المتكاملة تخزين ذاكرة التخزين المؤقت، مما يوفر مساحة للعناصر الأخرى. لا تزال الطلبات التي تتجاوز ذاكرة التخزين المؤقت توجه عبر البوابة المخصصة. يتم تقديم هذه الطلبات من الخلفية ووحدات طلب التكلفة.
يتم اعتماد تجاوز ذاكرة التخزين المؤقت في هذه الإصدارات من كل SDK:
SDK | الإصدارات المدعومة |
---|---|
NET SDK. الإصدار 3 | >= 3.39.0 |
Java SDK v4 | >= 4.49.0 |
Node.js SDK | غير مدعوم |
Python SDK | غير مدعوم |
FeedIterator<MyClass> myQuery = container.GetItemQueryIterator<MyClass>(new QueryDefinition("SELECT * FROM c"), requestOptions: new QueryRequestOptions
{
DedicatedGatewayRequestOptions = new DedicatedGatewayRequestOptions
{
BypassIntegratedCache = true
}
}
);
التحقق من عمليات البحث الناجحة في ذاكرة التخزين المؤقت
وأخيرًا، يمكنك إعادة تشغيل التطبيق الخاص بك والتحقق من الوصول إلى ذاكرة التخزين المؤقت المتكامل لقراءات نقطة أو استعلامات متكررة من خلال معرفة ما إذا كانت رسوم الطلب 0. بمجرد تعديل CosmosClient
الخاص بك لاستخدام نقطة نهاية البوابة المخصصة، سيتم توجيه جميع الطلبات من خلال بوابة مخصصة.
للحصول على طلب قراءة (قراءة نقطة أو استعلام) للاستفادة من ذاكرة التخزين المؤقت المتكاملة يجب أن تكون جميع المعايير التالية صحيحة:
- يتصل العميل بنقطة نهاية البوابة المخصصة
- يستخدم العميل وضع البوابة (يستخدم Python وNode.js SDKs وضع البوابة دائمًا)
- يجب تعيين تناسق الطلب إلى جلسة عمل أو في نهاية المطاف
إشعار
هل لديك أي ملاحظات حول ذاكرة التخزين المؤقت المتكاملة؟ نريد أن نسمعه! لا تتردد في مشاركة التعليقات مباشرةً مع الفريق الهندسي لـ Azure Cosmos DB:cosmoscachefeedback@microsoft.com
الخطوات التالية
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ