قم بتغيير أنماط تصميم موجز التغيير في Azure Cosmos DB

ينطبق على: NoSQL

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

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

  • تشغيل إعلام أو مكالمة إلى واجهة برمجة تطبيقات عند إدراج عنصر أو تحديثه أو حذفه.
  • معالجة الدفق في الوقت الفعلي لإنترنت الأشياء أو معالجة التحليلات في الوقت الفعلي على البيانات التشغيلية.
  • حركة البيانات مثل المزامنة مع ذاكرة التخزين المؤقت أو محرك البحث أو مستودع البيانات أو التخزين البارد.

يمكّنك موجز التغيير في Azure Cosmos DB من إنشاء حلول فعالة وقابلة للتطوير لكل من هذه الأنماط، كما هو موضح في الصورة التالية:

رسم تخطيطي يوضح استخدام موجز تغيير Azure Cosmos DB لتشغيل التحليلات في الوقت الحقيقي وسيناريوهات الحوسبة المستندة إلى الأحداث.

حوسبة الأحداث والإخطارات

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

يمكنك أيضاً تشغيل إشعار بشكل انتقائي أو إرسال مكالمة إلى واجهة برمجة تطبيقات بناءً على معايير محددة. على سبيل المثال، إذا كنت تقرأ من موجز التغيير باستخدام Azure Functions، يمكنك وضع المنطق في الدالة لإرسال إشعار فقط إذا تم استيفاء شرط. على الرغم من أن التعليمات البرمجية لوظيفة Azure سيتم تنفيذها لكل تغيير، سيتم إرسال الإعلام فقط إذا تم استيفاء الشرط.

معالجة الدفق في الوقت الحقيقي

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

رسم تخطيطي يوضح مسار lambda المستند إلى Azure Cosmos DB للاستيعاب والاستعلام.

في كثير من الحالات، تتلقى عمليات تنفيذ معالجة الدفق أولاً كمية كبيرة من البيانات الواردة في قائمة انتظار الرسائل المؤقتة مثل مراكز الأحداث أو Apache Kafka. يُعد موجز التغيير بديلاً رائعاً نظراً لقدرة Azure Cosmos DB على دعم معدل مرتفع مستدام لاستيعاب البيانات مع ضمان وقت استجابة منخفض للقراءة والكتابة. تشمل مزايا موجز تغيير Azure Cosmos DB عبر قائمة انتظار الرسائل ما يلي:

ثبات البيانات

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

إمكانية الاستعلام

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

التوافر العالي

يتيح Azure Cosmos DB توفراً يصل إلى 99.999٪ للقراءة والكتابة. على عكس العديد من قوائم انتظار الرسائل، يمكن توزيع بيانات Azure Cosmos DB وتكوينها بسهولة عالميا مع هدف وقت الاسترداد (RTO) من الصفر.

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

حركة البيانات

يمكنك أيضاً القراءة من موجز التغيير لحركة البيانات في الوقت الفعلي.

على سبيل المثال، يساعدك موجز التغيير على أداء المهام التالية بكفاءة:

  • قم بتحديث ذاكرة التخزين المؤقت أو فهرس البحث أو مستودع البيانات بالبيانات المخزنة في Azure Cosmos DB.

  • قم بإجراء عمليات ترحيل دون توقف إلى حساب Azure Cosmos DB آخر أو إلى حاوية Azure Cosmos DB أخرى تحتوي على مفتاح قسم منطقي مختلف.

  • تنفيذ طبقات وأرشفة البيانات على مستوى التطبيق. على سبيل المثال، يمكنك تخزين "البيانات الساخنة" في Azure Cosmos DB وتقادم "البيانات الباردة" إلى أنظمة تخزين أخرى مثل Azure Blob Storage.

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

تحديد مصادر الحدث

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

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

القيود الحالية

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

تحديثات وسيطة

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

يحذف

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

الاحتفاظ

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

أمر مضمون

تحتوي جميع أوضاع موجز التغيير على ترتيب مضمون ضمن قيمة مفتاح القسم، ولكن ليس عبر قيم مفتاح القسم. يجب عليك تحديد مفتاح قسم يمنحك ضمانا بترتيب ذي معنى.

على سبيل المثال، ضع في اعتبارك تطبيق البيع بالتجزئة الذي يستخدم نمط تصميم مصادر الحدث. في هذا التطبيق، تكون إجراءات المستخدم المختلفة هي كل "أحداث"، والتي يتم تصميمها كمكتبات إلى Azure Cosmos DB. تخيل لو حدثت بعض الأمثلة على الأحداث في التسلسل التالي:

  1. يضيف العميل العنصر أ إلى عربة التسوق الخاصة به.
  2. يضيف العميل العنصر B إلى عربة التسوق الخاصة به.
  3. يقوم العميل بإزالة العنصر أ من عربة التسوق الخاصة به.
  4. يقوم العميل بالتحقق من محتويات عربة التسوق ويتم شحنها.

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

الأمثلة

فيما يلي بعض أمثلة التعليمات البرمجية لموجز التغيير في العالم الحقيقي لأحدث وضع إصدار يمتد خارج نطاق العينات المقدمة: