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

ينطبق على: واجهة برمجة تطبيقات SQL

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

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

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

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

Using Azure Cosmos DB change feed to power real-time analytics and event-driven computing scenarios

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

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

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

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

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

Azure Cosmos DB-based lambda pipeline for ingestion and query

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

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

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

القدرة على الاستعلام

بالإضافة إلى القراءة من موجز تغييرات حاوية Cosmos، يمكنك أيضاً تشغيل استعلامات 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 آخر أو حاوية Azure Cosmos أخرى باستخدام مفتاح قسم منطقي مختلف.

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

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

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

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

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

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

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

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

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

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

يحذف

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

أمر مضمون

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

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

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

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

أمثلة

في ما يلي بعض أمثلة التعليمات البرمجية لموجز التغيير في العالم الواقعي والتي تتجاوز نطاق العينات المتوفرة في مستندات Microsoft:

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