كيفية تكوين ذاكرة التخزين المؤقت المتكاملة Azure Cosmos DB

ينطبق على: NoSQL

توضح هذه المقالة كيفية توفير بوابة مخصصة وتكوين ذاكرة التخزين المؤقت المتكاملة ثم الاتصال بالتطبيق الخاص بك.

المتطلبات الأساسية

توفير البوابة المخصصة

  1. انتقل إلى حساب Azure Cosmos DB في مدخل Azure وحدد علامة التبويب بوابة مخصصة.

    لقطة شاشة لمدخل Azure توضح كيفية الانتقال إلى علامة تبويب البوابة المخصصة ل Azure Cosmos DB.

  2. املأ نموذج البوابة المخصصة بالتفاصيل التالية:

    • بوابة مخصصة - شغِّل التبديل إلى المتوفر.
    • SKU - حدد وحدة حفظ المخزون SKU مع حجم الذاكرة والحساب المطلوبة. ستستخدم ذاكرة التخزين المؤقت المتكاملة حوالي 50٪ من الذاكرة، ويتم استخدام الذاكرة المتبقية لبيانات التعريف وطلبات التوجيه إلى أقسام الواجهة الخلفية.
    • عدد المثيلات - عدد العقد. لأغراض التطوير، نوصي بالبدء مع عقدة واحدة بحجم D4. استنادًا إلى كمية البيانات التي تحتاج إلى تخزينها مؤقتًا وتحقيق قابلية وصول عالية لها، يمكنك زيادة حجم العقدة بعد الاختبار الأولي.

    لقطة شاشة لعلامة تبويب البوابة المخصصة لمدخل Microsoft Azure التي تعرض عينة إعدادات الإدخال لإنشاء مجموعة بوابة مخصصة.

  3. حدد حفظ وانتظر حوالي 5-10 دقائق لإكمال توفير البوابة المخصصة. عند الانتهاء من التوفير، سترى الإعلام التالي:

    لقطة شاشة لإشعار في مدخل Microsoft Azure يوضح كيفية التحقق مما إذا كان توفير البوابة المخصصة قد اكتمل.

تكوين ذاكرة التخزين المؤقت المتكاملة

عند إنشاء بوابة مخصصة، يتم توفير ذاكرة تخزين مؤقت متكاملة تلقائياً.

  1. قم بتعديل سلسلة اتصال التطبيق الخاص بك لاستخدام نقطة نهاية البوابة المخصصة الجديدة.

    سلسلة اتصال البوابة المخصصة المحدثة في شفرة المفاتيح:

    لقطة شاشة لعلامة تبويب مفاتيح مدخل Azure مع سلسلة الاتصال البوابة المخصصة.

    تتبع جميع سلاسل اتصال البوابة المخصصة نفس النمط. قم بإزالة documents.azure.com من سلسلة الاتصال الأصلية واستبدالها بـ sqlx.cosmos.azure.com. سيكون للبوابة المخصصة دائماً نفس سلسلة الاتصال، حتى إذا قمت بإزالتها وإعادة توفيرها.

    لا تحتاج إلى تعديل سلسلة الاتصال في جميع التطبيقات باستخدام نفس حساب Azure Cosmos DB. على سبيل المثال، يمكن أن يكون لديك اتصال CosmosClient واحد باستخدام وضع البوابة ونقطة نهاية البوابة المخصصة بينما يستخدم اتصال CosmosClient الآخر الوضع المباشر. وبعبارة أخرى، لا تؤثر إضافة بوابة مخصصة على الطرق الحالية للاتصال بـ Azure Cosmos DB.

  2. إذا كنت تستخدم .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

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