مشاركة عبر


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

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

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

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

نظرة عامة

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

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

إشعار

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

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

كيف يتكامل Azure Cosmos DB وAzure Functions

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

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

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

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

حالة استخدام IoT - Azure Functions trigger and output binding for Azure Cosmos DB

في تطبيقات إنترنت الأشياء، يمكنك استدعاء وظيفة عندما يظهر ضوء فحص المحرك في سيارة متصلة.

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

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

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

Create an Azure Functions trigger for Azure Cosmos DB in Azure portal

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

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

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

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

تظهر الصور التالية الكود في بوابة Azure لهذا السيناريو.

Index.js تقديم طلب لمحفز مؤقت لسيناريو مالي

ملف run.csx لمحفز مؤقت لسيناريو مالي

حالة استخدام الألعاب - زر وربط الإخراج Azure Functions لقاعدة بيانات Azure Cosmos

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

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

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

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

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

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

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

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

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

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

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

الأدوات

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

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

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

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

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

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

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

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

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

فوائد وظائف Azure:

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

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

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

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

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

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