نسخة دلتا من قاعدة بيانات مع جدول تحكم

ينطبق على: Azure Data Factory Azure Synapse Analytics

تلميح

جرب Data Factory في Microsoft Fabric، وهو حل تحليلي متكامل للمؤسسات. يغطي Microsoft Fabric كل شيء بدءا من حركة البيانات إلى علم البيانات والتحليلات في الوقت الحقيقي والمعلومات المهنية وإعداد التقارير. تعرف على كيفية بدء إصدار تجريبي جديد مجانا!

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

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

إشعار

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

حول قالب الحل هذا

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

يحتوي القالب على أربعة أنشطة:

  • يسترد البحث قيمة العلامة المائية القديمة التي تم تخزينها في جدول تحكم خارجي.
  • يسترد نشاط بحث آخر قيمة العلامة المائية العالية الحالية من قاعدة البيانات المصدر.
  • نسخ ينسخ التغييرات فقط من قاعدة البيانات المصدر إلى المخزن الوجهة. الاستعلام الذي يحدد التغييرات في قاعدة البيانات المصدر يشبه 'SELECT * FROM Data_Source_Table WHERE TIMESTAMP_Column > “last high-watermark” and TIMESTAMP_Column <= “current high-watermark”'.
  • يكتب SqlServerStoredProcedure القيمة الحالية للعلامة المائية العالية إلى جدول تحكم خارجي لنسخ دلتا في المرة القادمة.

يحدد القالب المعلمات التالية:

  • Data_Source_Table_Name هو الجدول الموجود في قاعدة البيانات المصدر الذي تريد تحميل البيانات منه.
  • Data_Source_WaterMarkColumn هو اسم العمود الموجود في الجدول المصدر والذي يُستخدم لتحديد الصفوف الجديدة أو المحدثة. عادةً ما يكون نوع هذا العمود هو التاريخ والوقت أو INT أو ما شابه ذلك.
  • Data_Destination_Container هو المسار الجذر للمكان الذي يتم نسخ البيانات إليه في المتجر الوجهة.
  • Data_Destination_Directory هو مسار الدليل الموجود أسفل جذر المكان الذي تم نسخ البيانات إليه في المتجر الوجهة.
  • Data_Destination_Table_Name هو المكان الذي يتم نسخ البيانات إليه في المتجر الوجهة (ينطبق عند تحديد "Azure Synapse Analytics" كوجهة بيانات).
  • Data_Destination_Folder_Path هو المكان الذي يتم نسخ البيانات إليه في المخزن الوجهة (ينطبق عند تحديد "نظام الملفات" أو "Azure Data Lake Storage Gen1" كوجهة بيانات).
  • Control_Table_Table_Name هو جدول التحكم الخارجي الذي يخزن القيمة العالية للعلامة المائية.
  • Control_Table_Column_Name هو العمود الموجود في جدول التحكم الخارجي الذي يخزن قيمة العلامة المائية العالية.

كيفية استخدام قالب الحل هذا

  1. استكشف الجدول المصدر الذي تريد تحميله، وحدد عمود العلامة المائية العالية الذي يمكن استخدامه لتحديد الصفوف الجديدة أو المحدثة. قد يكون نوع هذا العمود datetime أو INT أو ما شابه ذلك. تزداد قيمة هذا العمود كلما تمت إضافة صفوف جديدة. من نموذج الجدول التالي (data_source_table)، يمكننا استخدام العمود LastModifytime كعمود ذو علامة مائية عالية.

    PersonID	Name            LastModifytime
    1           aaaa            2017-09-01 00:56:00.000
    2           bbbb            2017-09-02 05:23:00.000
    3           cccc            2017-09-03 02:36:00.000
    4           dddd            2017-09-04 03:21:00.000
    5           eeee            2017-09-05 08:06:00.000
    6           fffffff         2017-09-06 02:23:00.000
    7           gggg            2017-09-07 09:01:00.000
    8           hhhh            2017-09-08 09:01:00.000
    9           iiiiiiiii       2017-09-09 09:01:00.000
    
  2. أنشئ جدول تحكم في SQL Server أو قاعدة بيانات Azure SQL لتخزين قيمة العلامة المائية العالية لتحميل بيانات دلتا. في المثال التالي، اسم جدول التحكم هو watermarktable . في هذا الجدول، WatermarkValue هو العمود الذي يخزن قيمة العلامة المائية العالية، ونوعها هو datetime .

    create table watermarktable
    (
    WatermarkValue datetime,
    );
    INSERT INTO watermarktable
    VALUES ('1/1/2010 12:00:00 AM')
    
  3. قم بإنشاء إجراء مخزن في نفس مثيل SQL Server أو مثيل قاعدة بيانات Azure SQL الذي استخدمته لإنشاء جدول التحكم. يتم استخدام الإجراء المخزن لكتابة قيمة العلامة المائية الجديدة العالية إلى جدول التحكم الخارجي لتحميل بيانات دلتا في المرة القادمة.

    CREATE PROCEDURE update_watermark @LastModifiedtime datetime
    AS
    
    BEGIN
    
        UPDATE watermarktable
        SET [WatermarkValue] = @LastModifiedtime 
    
    END
    
  4. انتقل إلى قالب نسخة دلتا من قاعدة البيانات . قم بإنشاء اتصال جديد بقاعدة البيانات المصدر التي تريد نسخ البيانات منها.

    لقطة شاشة تعرض إنشاء اتصال جديد بالجدول المصدر.

  5. قم بإنشاء اتصال جديد بمخزن البيانات الوجهة الذي تريد نسخ البيانات إليه.

    لقطة شاشة تعرض إنشاء اتصال جديد بجدول الوجهة.

  6. قم بإنشاء اتصال جديد بجدول التحكم الخارجي والإجراء المخزن الذي قمت بإنشائه في الخطوتين 2 و3.

    لقطة شاشة تعرض إنشاء اتصال جديد بمخزن بيانات جدول التحكم.

  7. حدد استخدام هذا القالب.

  8. راجع البنية الأساسية المتاحة، كما موضح في المثال التالي:

    لقطة شاشة تعرض البنية الأساسية لبرنامج ربط العمليات التجارية.

  9. حدد إجراء مخزن . بالنسبة إلى اسم الإجراء المخزن ، اختر [dbo]. [update_watermark] . حدد استيراد معلمة ، ثم حدد إضافة محتوى ديناميكي .

    لقطة شاشة توضح مكان تعيين نشاط الإجراء المخزن.

  10. اكتب المحتوى @{activity('LookupCurrentWaterMark').output.firstRow.NewWatermarkValue} ثم حدد Finish.

    لقطة شاشة توضح مكان كتابة المحتوى لمعلمات الإجراء المخزن.

  11. حدد "Debug"، وأدخل المعلمات، ثم حدد "Finish".

    لقطة شاشة تعرض زر تتبع الأخطاء.

  12. يتم عرض نتائج مشابهة للمثال التالي:

    لقطة شاشة تعرض نتيجة تشغيل البنية الأساسية لبرنامج ربط العمليات التجارية.

  13. يمكنك إنشاء صفوف جديدة في الجدول المصدر الخاص بك. فيما يلي نموذج للغة SQL لإنشاء صفوف جديدة:

    INSERT INTO data_source_table
    VALUES (10, 'newdata','9/10/2017 2:23:00 AM')
    
    INSERT INTO data_source_table
    VALUES (11, 'newdata','9/11/2017 9:01:00 AM')
    
  14. لتشغيل خط الأنابيب مرة أخرى، حدد تصحيح ، وأدخل المعلمات ، ثم حدد إنهاء .

    ستلاحظ أنه تم نسخ الصفوف الجديدة فقط إلى الوجهة.

  15. (اختياري :) إذا حددت Azure Synapse Analytics كوجهة للبيانات، فيجب عليك أيضاً توفير اتصال بتخزين Azure Blob للتشغيل المرحلي، وهو ما يتطلبه Azure Synapse Analytics Polybase. سيقوم القالب بإنشاء مسار حاوية لك. بعد تشغيل البنية الأساسية، تحقق مما إذا كان قد تم إنشاء الحاوية في تخزين Blob.

    لقطة شاشة توضح مكان تكوين Polybase.