حساب قاعدة بيانات بلا خادم باستخدام Azure Cosmos DB ودوال Azure Functions

ينطبق على: NoSQL

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

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

نظرة عامة

تمكّنك قاعدة بيانات Azure Cosmos ودوال Azure من دمج قواعد البيانات والتطبيقات بلا خادم بالطرق التالية:

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

ملاحظة

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

يوضح الرسم البياني التالي كل من هذه التكاملات الثلاثة:

كيف تتكامل قاعدة بياناتAzure Cosmos ودوال Azure

يمكن استخدام مشغل دوال Azure وربط الإدخال وربط الإخراج لـقاعدة بيانات Azure Cosmos في المجموعات التالية:

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

حالات الاستخدام

توضح حالات الاستخدام التالية بعض الطرق التي يمكنك من خلالها تحقيق أقصى استفادة من بيانات قاعدة بيانات Azure Cosmos - عن طريق توصيل بياناتك بدوال Azure المستندة إلى الأحداث.

حالة استخدام IoT - مشغل Azure Functions وربط الإخراج ل Azure Cosmos DB

في تطبيقات (IoT)، يمكنك استدعاء وظيفة عند عرض ضوء فحص المحرك في سيارة متصلة.

تنفيذ: استخدام مشغل Azure Functions وربط الإخراج ل Azure Cosmos DB

  1. يتم استخدام مشغل Azure Functions ل Azure Cosmos DB لتشغيل الأحداث المتعلقة بتنبيهات السيارة، مثل ضوء محرك الفحص القادم في سيارة متصلة.
  2. عندما يأتي ضوء محرك الفحص، يتم إرسال بيانات المستشعر إلى قاعدة بيانات Azure Cosmos.
  3. يقوم Azure Cosmos DB بإنشاء مستندات بيانات مستشعر جديدة أو تحديثها، ثم يتم دفق هذه التغييرات إلى مشغل Azure Functions ل Azure Cosmos DB.
  4. يتم استدعاء المشغل عند كل تغيير للبيانات على مجموعة بيانات المستشعر، حيث يتم دفق جميع التغييرات عبر موجز التغيير.
  5. يتم استخدام شرط العتبة في الوظيفة لإرسال بيانات المستشعر إلى قسم الضمان.
  6. إذا تجاوزت درجة الحرارة أيضاً قيمة معينة، فسيتم أيضاً إرسال تنبيه إلى المالك.
  7. يقوم ربط الإخراج على الوظيفة بتحديث سجل السيارة في حاوية Azure Cosmos DB أخرى لتخزين معلومات حول حدث محرك الفحص.

تُظهر الصورة التالية التعليمات البرمجية المكتوبة في مدخل Microsoft Azure لهذا المشغل.

إنشاء مشغل Azure Functions ل Azure Cosmos DB في مدخل Microsoft Azure

حالة الاستخدام المالي - تشغيل المؤقت وربط الإدخال

في عمليات التنفيذ المالية، يمكنك استدعاء دالة عندما يقل رصيد الحساب المصرفي عن مبلغ معين.

التنفيذ: مشغل مؤقت بربط إدخال قاعدة بيانات Azure Cosmos

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

تُظهر الصور التالية التعليمات البرمجية في مدخل Microsoft Azure لهذا السيناريو.

ملف Index.js لمشغل Timer لسيناريو مالي

ملف Run.csx لمشغل Timer لسيناريو مالي

حالة استخدام الألعاب - مشغل Azure Functions وربط الإخراج ل Azure Cosmos DB

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

تنفيذ: استخدام مشغل Azure Functions وربط الإخراج ل Azure Cosmos DB

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

حالة استخدام البيع بالتجزئة - وظائف متعددة

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

تنفيذ: مشغلات Azure Functions المتعددة ل Azure Cosmos DB التي تستمع إلى حاوية واحدة

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

    • قد تقوم وظيفة أخرى بتحديث إجماليات المخزون.

    • قد تقوم وظيفة أخرى بإرسال معلومات العملاء الخاصة بمنتجات معينة إلى قسم التسويق، الذي يرسل لهم بريداً ترويجياً.

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

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

الأدوات

يتوفر التكامل الأصلي بين Azure Cosmos DB وAzure Functions في مدخل Azure وفي Visual Studio.

لماذا تختار تكامل دوال Azure للحوسبة بلا خادم؟

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

قاعدة بيانات Azure Cosmos هي قاعدة البيانات الموصى بها لبنية الحوسبة بلا خادم للأسباب التالية:

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

  • المخطط. تعد قاعدة بيانات Azure Cosmos مخططاً - لذا فهي قادرة بشكل فريد على معالجة أي بيانات ناتجة من دالة Azure. يجعل منهج "التعامل مع أي شيء" من السهل إنشاء مجموعة متنوعة من حلول Functions التي يتم إخراجها جميعها إلى Azure Cosmos DB.

  • معدل النقل القابل للتطوير. يمكن تطوير معدل النقل وتقليصه على الفور في قاعدة بيانات Azure Cosmos. إذا كان لديك مئات أو آلاف من الدوال التي تستعلم وتكتب في نفس الحاوية، فيمكنك توسيع نطاق RU/s للتعامل مع الحمل. يمكن أن تعمل جميع الوظائف بشكل متوازٍ باستخدام وحدات RU/s المخصصة التي تملكها وتضمن لك أن تكون بياناتك متسقة.

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

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

فوائد دوال Azure:

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

  • بلا حدود. يتم تنفيذ الوظائف بالتوازي ويتم تدوير الخدمة بقدر ما تحتاج. عينت المعلمات.

  • جيد للمهام السريعة. تقوم الخدمة بتدوير حالات جديدة من الوظائف كلما تم إطلاق حدث ما وإغلاقه بمخزون اكتمال الوظيفة. تدفع فقط مقابل الوقت الذي تعمل فيه وظائفك.

إذا لم تكن متأكداً مما إذا كانت Flow أو Logic Apps أو Azure Functions أو WebJobs هي الأفضل لتنفيذ عملياتك، فراجع الاختيار بينLogic Apps أو Azure Functions أو WebJobs.

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

الآن دعنا نربط قاعدة بيانات Cosmos ودوال Azure بشكل حقيقي: