مشاركة عبر


استخدام البيانات المرجعية من SQL Database لوظيفة Azure Stream Analytics

يدعم Azure Stream Analytics Azure SQL Database كمصدر لإدخال البيانات المرجعية. يمكنك استخدام SQL Database كبيانات مرجعية لوظيفة Stream Analytics في مدخل Microsoft Azure وفي Visual Studio باستخدام أدوات Stream Analytics. توضح هذه المقالة كيفية القيام بكلتا الطريقتين.

مدخل Azure

استخدم الخطوات التالية لإضافة Azure SQL Database كمصدر إدخال مرجعي باستخدام مدخل Microsoft Azure:

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

  1. إنشاء وظيفة تحليلات البث.

  2. أنشئ حساب تخزين لتستخدمه وظيفة Stream Analytics.

    هام

    يحتفظ Azure Stream Analytics باللقطات داخل حساب التخزين هذا. عند تكوين نهج الاستبقاء، من الضروري التأكد من أن الفترة الزمنية المختارة تشمل بشكل فعال مدة الاسترداد المطلوبة لمهمة Stream Analytics.

  3. أنشئ Azure SQL Database باستخدام مجموعة بيانات لاستخدامها كبيانات مرجعية بواسطة وظيفة Stream Analytics.

تحديد إدخال بيانات مرجع SQL Database

  1. في وظيفتك في Stream Analytics، حدد Inputs ضمن Job topology. انقر فوق Add reference input واختر SQL Database.

    يتم تحديد المدخلات في جزء التنقل الأيسر. في المدخلات، يتم تحديد + إضافة إدخال مرجعي، ما يكشف عن قائمة منسدلة تعرض قيم تخزين Blob وقاعدة بيانات SQL.

  2. املأ تكوينات إدخال Stream Analytics. اختر اسم قاعدة البيانات واسم الخادم واسم المستخدم وكلمة المرور. إذا كنت تريد تحديث إدخال البيانات المرجعية بشكل دوري، فاختر "تشغيل" لتحديد معدل التحديث في DD: HH: MM. إذا كانت لديك مجموعات بيانات كبيرة بمعدل تحديث قصير. يمكنك استعلام Delta من تعقب التغييرات داخل البيانات المرجعية الخاصة بك عن طريق استرداد جميع الصفوف في قاعدة بيانات SQL التي تم إدراجها أو حذفها خلال وقت البدء و @deltaStartTimeووقت @deltaEndTimeالانتهاء .

الرجاء مراجعة استعلام دلتا.

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

  1. اختبر استعلام اللقطة في محرر استعلام SQL. لمزيد من المعلومات، راجع استخدام محرر استعلام SQL للمدخل Microsoft Azure للاتصال والاستعلام عن البيانات

حدد حساب التخزين في تكوين الوظيفة

انتقل إلى Storage account settings ضمن تكوين وحدد Add storage account.

تم تحديد إعدادات حساب التخزين في الجزء الأيمن. يوجد زر إضافة حساب تخزين في الجزء الأيمن.

بدء الوظيفة

بمجرد تكوين المدخلات والمخرجات والاستعلام الأخرى، يمكنك بدء وظيفة Stream Analytics.

أدوات لـ Visual Studio

استخدم الخطوات التالية لإضافة Azure SQL Database كمصدر إدخال مرجعي باستخدام Visual Studio:

المتطلبات الأساسية لبرنامج Visual Studio

  1. تثبيت أدوات Stream Analytics لبرنامج Visual Studio. الإصدارات التالية من Visual Studio مدعومة:

    • Visual Studio 2015
    • Visual Studio 2019
  2. التعرف على كيفية بدء التشغيل السريع لأدوات Stream Analytics لبرنامج Visual Studio.

  3. قم بإنشاء حساب تخزين.

    هام

    يحتفظ Azure Stream Analytics باللقطات داخل حساب التخزين هذا. عند تكوين نهج الاستبقاء، من الضروري التأكد من أن الفترة الزمنية المختارة تشمل بشكل فعال مدة الاسترداد المطلوبة لمهمة Stream Analytics.

قم بإنشاء جدول SQL Database

استخدم SQL Server Management Studio لإنشاء جدول لتخزين بياناتك المرجعية. راجع تصميم أول Azure SQL Database باستخدام Management Studio للحصول على التفاصيل.

تم إنشاء الجدول النموذجي المستخدم في المثال التالي من العبارة التالية:

create table chemicals(Id Bigint,Name Nvarchar(max),FullName Nvarchar(max));

اختر اشتراكك

  1. في Visual Studio، في القائمة عرض، حدد مستكشف الخادم.

  2. انقر بزر الماوس الأيمن على Azure، وحدد Connect to Microsoft Azure Subscription، وقم بتسجيل الدخول باستخدام حساب Azure الخاص بك.

قم بإنشاء مشروع Stream Analytics

  1. حدد File > New Project.

  2. في قائمة القوالب على اليمين، حدد Stream Analytics، ثم حدد تطبيق Azure Stream Analytics.

  3. أدخل المشروع Name، وLocation، وSolution name، وحدد OK.

    تم تحديد قالب Stream Analytics وتحديد تطبيق Azure Stream Analytics وتمييز مربعات أسماء الاسم والموقع والحل.

تحديد إدخال بيانات مرجع SQL Database

  1. قم بإنشاء مدخلات جديدة.

    عند إضافة عنصر جديد، يتم تحديد الإدخال.

  2. انقر نقراً مزدوجاً فوق Input.json في مستكشف الحلول.

  3. املأ تكوين إدخال Stream Analytics. اختر اسم قاعدة البيانات واسم الخادم ونوع التحديث ومعدل التحديث. حدد معدل التحديث بالتنسيق DD:HH:MM.

    في Stream Analytics Input Configuration، يتم إدخال القيم أو تحديدها من القوائم المنسدلة.

    إذا اخترت "التنفيذ مرة واحدة فقط" أو "التنفيذ بشكل دوري"، فسيتم إنشاء ملف SQL CodeBehind واحد باسم [Input Alias].snapshot.sql في المشروع ضمن ملف Input.json العقدة.

    تم تمييز ملف SQL CodeBehind Chemicals.snapshot.sql.

    إذا اخترت "التحديث دورياً باستخدام دلتا"، فسيتم إنشاء ملفي SQL CodeBehind: [Input Alias].snapshot.sql و[Input Alias].delta.sql.

    يتم تمييز ملفات SQL CodeBehind Chemicals.delta.sql وChemicals.snapshot.sql.

  4. افتح ملف SQL في المحرر واكتب استعلام SQL.

  5. إذا كنت تستخدم Visual Studio 2019، وقمت بتثبيت أدوات بيانات Microsoft SQL Server، يمكنك اختبار الاستعلام بالنقر فوق Execute. ستظهر نافذة معالج لمساعدتك على الاتصال بـ SQL Database وستظهر نتيجة الاستعلام في النافذة في الأسفل.

حدد حساب التخزين

افتح JobConfig.json لتحديد حساب التخزين لتخزين لقطات مرجع SQL.

يتم عرض تكوين وظيفة Stream Analytics بالقيم الافتراضية. يتم تمييز إعدادات التخزين العمومية.

اختبر محلياً وقم بتوزيعها في Azure

قبل توزيع المهمة على Azure، يمكنك اختبار منطق الاستعلام محلياً مقابل بيانات الإدخال المباشر. لمزيد من المعلومات بشأن هذه الميزة، راجع اختبار البيانات المباشرة محلياً باستخدام أدوات Azure Stream Analytics لبرنامج Visual Studio (إصدار أولي). عند الانتهاء من الاختبار، انقر فوق Submit to Azure. راجع البداية السريعة إنشاء تحليلات البث باستخدام أدوات Azure Stream Analytics لبرنامج Visual Studio لمعرفة كيفية بدء المهمة.

استعلام عن دلتا

عند استخدام استعلام دلتا، يوصى باستخدام الجداول الزمنية في Azure SQL Database.

  1. قم بإنشاء جدول زمني في Azure SQL Database.

       CREATE TABLE DeviceTemporal
       (
          [DeviceId] int NOT NULL PRIMARY KEY CLUSTERED
          , [GroupDeviceId] nvarchar(100) NOT NULL
          , [Description] nvarchar(100) NOT NULL
          , [ValidFrom] datetime2 (0) GENERATED ALWAYS AS ROW START
          , [ValidTo] datetime2 (0) GENERATED ALWAYS AS ROW END
          , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo)
       )
       WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.DeviceHistory));  -- DeviceHistory table will be used in Delta query
    
  2. تأليف استعلام اللقطة.

    استخدم المعلمة snapshotTime لإرشاد وقت تشغيل Stream Analytics للحصول على مجموعة البيانات المرجعية من الجدول الزمني لـ SQL Database الصالحة في وقت النظام. إذا لم تقدم هذه المعلمة، فإنك تخاطر بالحصول على مجموعة بيانات مرجعية أساسية غير دقيقة بسبب انحرافات الساعة. فيما يلي مثال على استعلام لقطة كاملة:

       SELECT DeviceId, GroupDeviceId, [Description]
       FROM dbo.DeviceTemporal
       FOR SYSTEM_TIME AS OF @snapshotTime
    
  3. تأليف استعلام دلتا.

    يسترد هذا الاستعلام جميع الصفوف في SQL Database التي تم إدراجها أو حذفها خلال وقت البدء وdeltaStartTimeووقت الانتهاء deltaEndTime. يجب أن يُرجع استعلام دلتا نفس الأعمدة مثل استعلام اللقطة، بالإضافة إلى العمود العملية. يحدد هذا العمود ما إذا كان الصف قد تم إدراجه أو حذفه بين deltaStartTime وdeltaEndTime. يتم وضع علامة على الصفوف الناتجة كـ 1 إذا تم إدراج السجلات، أو 2 إذا تم حذفها. يجب أن يضيف الاستعلام أيضاً علامة مائية من جانب SQL Server لضمان تسجيل كافة التحديثات في فترة دلتا بشكل مناسب. قد ينتج عن استخدام استعلام دلتا دون علامة مائية مجموعة بيانات مرجعية غير صحيحة.

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

       SELECT DeviceId, GroupDeviceId, Description, ValidFrom as _watermark_, 1 as _operation_
       FROM dbo.DeviceTemporal
       WHERE ValidFrom BETWEEN @deltaStartTime AND @deltaEndTime   -- records inserted
       UNION
       SELECT DeviceId, GroupDeviceId, Description, ValidTo as _watermark_, 2 as _operation_
       FROM dbo.DeviceHistory   -- table we created in step 1
       WHERE ValidTo BETWEEN @deltaStartTime AND @deltaEndTime     -- record deleted
    

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

    هام

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

     UPDATE myTable SET VALUE=2 WHERE ID = 1;
     UPDATE myTable SET VALUE=2 WHERE ID = 1;      
    

    المثال الصحيح:

     UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);
    

    يضمن هذا عدم تنفيذ أي تحديثات مكررة.

اختبار الاستعلام

من المهم التحقق من أن استعلامك يقوم بإرجاع مجموعة البيانات المتوقعة التي ستستخدمها وظيفة Stream Analytics كبيانات مرجعية. لاختبار استعلامك، انتقل إلى الإدخال ضمن قسم طوبولوجيا الوظيفة على المدخل. يمكنك بعد ذلك تحديد نموذج البيانات في إدخال مرجع SQL Database. بعد أن يصبح النموذج متاحاً، يمكنك تنزيل الملف والتحقق لمعرفة ما إذا كانت البيانات التي يتم إرجاعها كما هو متوقع. إذا كنت ترغب في تحسين التطوير واختبار التكرارات، فمن المستحسن استخدام أدوات Stream Analytics لبرنامج Visual Studio. يمكنك أيضاً أي أداة أخرى تفضلها للتأكد أولاً من أن الاستعلام يعيد النتائج الصحيحة من Azure SQL Database ثم استخدمها في وظيفة Stream Analytics.

اختبر استعلامك باستخدام Visual Studio Code

قم بتثبيت Azure Stream Analytics Tools وSQL Server (mssql) على Visual Studio Code وقم بإعداد مشروع ASA الخاص بك. لمزيد من المعلومات، راجع التشغيل السريع: إنشاء مهمة Azure Stream Analytics في Visual Studio Code والبرنامج التعليمي بشأن إضافة SQL Server (mssql).

  1. تكوين إدخال البيانات المرجعية SQL الخاص بك.

    يعرض محرر Visual Studio Code (علامة التبويب) ReferenceSQLDatabase.json.

  2. حدد رمز SQL Server وانقر على Add Connection.

    + تظهر إضافة اتصال في الجزء الأيمن ويتم تمييزها.

  3. املأ معلومات الاتصال.

    يتم تمييز المربعين الخاصين بقاعدة البيانات ومعلومات الخادم.

  4. انقر بزر الماوس الأيمن في مرجع SQL وحدد Execute Query.

    يتم تمييز تنفيذ الاستعلام في قائمة السياق.

  5. اختر الاتصال الخاص بك.

    يقول مربع الحوار

  6. مراجعة والتحقق من نتيجة الاستعلام الخاص بك.

    توجد نتائج بحث الاستعلام في علامة تبويب محرر VS Code.

الأسئلة المتداولة

هل سأتحمل تكلفة إضافية باستخدام إدخال بيانات مرجع SQL في Azure Stream Analytics؟

لا توجد تكلفة إضافية لكل وحدة بث في وظيفة Stream Analytics. ومع ذلك، يجب أن يكون لوظيفة Stream Analytics حساب تخزين Azure مرتبط. تستعلم مهمة Stream Analytics عن قاعدة بيانات SQL (خلال بدء المهمة والفاصل الزمني للتحديث) لاسترداد مجموعة البيانات المرجعية وتخزين تلك اللقطة في حساب التخزين. سيؤدي تخزين هذه اللقطات إلى تحميل تكاليف إضافية مفصلة في صفحة الأسعار لحساب التخزين Azure.

كيف أعرف أنه يتم الاستعلام عن لقطة البيانات المرجعية من قاعدة بيانات SQL واستخدامها في وظيفة Azure Stream Analytics؟

هناك مقياسان تمت تصفيتهما حسب الاسم المنطقي (ضمن مدخل Metrics Azure) والتي يمكنك استخدامها لمراقبة صحة إدخال بيانات مرجع SQL Database.

  • InputEvents: يقيس هذا المقياس عدد السجلات التي تم تحميلها من مجموعة البيانات المرجعية لـ SQL Database.
  • InputEventBytes: يقيس هذا المقياس حجم لقطة البيانات المرجعية التي تم تحميلها في ذاكرة مهمة Stream Analytics.

يمكن استخدام مزيج من هذين المقياسين لاستنتاج ما إذا كانت المهمة هي الاستعلام عن SQL Database لجلب مجموعة البيانات المرجعية ثم تحميلها في الذاكرة.

هل سأطلب نوعاً خاصاً من Azure SQL Database؟

سيعمل Azure Stream Analytics مع أي نوع من Azure SQL Database. ومع ذلك، من المهم أن تفهم أن معدل التحديث المحدد لإدخال البيانات المرجعية يمكن أن يؤثر على تحميل الاستعلام الخاص بك. لاستخدام خيار استعلام دلتا، يوصى باستخدام الجداول الزمنية في Azure SQL Database.

لماذا يخزن Azure Stream Analytics اللقطات في حساب Azure Storage؟

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

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