دفع البيانات إلى فهرس Azure Cognitive Search باستخدام Azure Data Factory

ملاحظة

يطبق هذا البند على الإصدار 1 من Data Factory. إذا كنت تستخدم الإصدار الحالي من خدمة Data Factory، راجع موصلAzure Cognitive Search في الإصدار 2.

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

تمكين الاتصالية

للسماح لخدمة Data Factory بالاتصال بمخزن بيانات داخلي، عليك تثبيت Data Management Gateway في بيئتك الداخلية. يمكنك تثبيت البوابة على نفس الجهاز الذي يستضيف مخزن البيانات المصدر أو على جهاز منفصل لتجنب التنافس على الموارد مع مخزن البيانات.

تقوم "بوابة إدارة البيانات" بتوصيل مصادر البيانات الداخلية بالخدمات السحابية بطريقة آمنة ومُدارة. راجع نقل البيانات بين مقالة داخلية ومقالة السحابة للحصول على تفاصيل حول "بوابة إدارة البيانات".

الشروع في العمل

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

إن أسهل طريقة لإنشاء مسار هي استخدام معالج النسخ. راجع البرنامج التعليمي: إنشاء البنية الأساسية لبرنامج ربط العمليات التجارية باستخدام معالج النسخ للحصول على جولة سريعة حول إنشاء مسار باستخدام معالج نسخ البيانات.

يمكنك أيضًا استخدام الأدوات التالية لإنشاء البنية الأساسية لبرنامج ربط العمليات التجارية: Visual Studio، وAzure PowerShell، وقالب Azure Resource Manager، وواجهة برمجة التطبيقات ، وAPI REST. راجع نسخ البرنامج التعليمي للنشاط للحصول على إرشادات خطوة بخطوة لإنشاء مسار مع نشاط نسخ.

سواء كنت تستخدم الأدوات أو واجهات برمجة التطبيقات، يمكنك تنفيذ الخطوات التالية لإنشاء المسار المسؤول عن نقل البيانات من مخزن بيانات مَصدر إلى مخزن بيانات المُتلقّي:

  1. أنشئ خدمات مرتبطة لربط مخازن بيانات الإدخال والإخراج بمصنع البيانات.
  2. أنشئ مجموعات بيانات لتمثيل بيانات الإدخال والإخراج الخاصة بعملية النسخ.
  3. إنشاء مسار مع نشاط نسخ يتّخذ مجموعة بيانات كمدخل ومجموعة بيانات كمخرج.

عند استخدام المعالج، يتم إنشاء تعريفات JSON لكيانات مصنع البيانات هذه (الخدمات المرتبطة ومجموعات البيانات والمسار) تلقائياً لك. عند استخدام أدوات/ API (باستثناء NET API)، فإنك تحدد كيانات Data Factory هذه باستخدام نموذج JSON. للحصول على عينة مع تعريفات JSON لكيانات Data Factory التي تُستخدم لنسخ البيانات إلى فهرس البحث، راجع قسم مثال JSON: نسخ البيانات من SQL Server إلى فهرس Azure Cognitive Search من هذه المقالة.

توفر الأقسام التالية تفاصيل حول خصائص JSON المستخدمة لتعريف كيانات Data Factory الخاصة بفهرس البحث:

خصائص الخدمة المرتبطة

يوفر الجدول التالي أوصافاً لعناصر JSON الخاصة بالخدمة المرتبطة بـ Azure Cognitive Search.

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية النوع إلى: AzureSearch. نعم
عنوان url "URL" لخدمة البحث. نعم
المفتاح مفتاح المسؤول لخدمة البحث. نعم

خصائص مجموعة البيانات

للحصول على قائمة كاملة بالأقسام والخصائص المتوفرة لتعريف مجموعات البيانات، راجع مقالة إنشاء مجموعات البيانات. تتشابه الأقسام مثل البنية والتوافر وسياسة مجموعة البيانات JSON لجميع أنواع مجموعات البيانات. القسم typeProperties مختلف لكل نوع من مجموعة البيانات. يحتوي قسم typeProperties لمجموعة بيانات من النوع AzureSearchIndex على الخصائص التالية:

الخاصية الوصف مطلوب
النوع يجب تعيين خاصية نوع مجموعة البيانات إلى: AzureSearchIndex. نعم
indexName اسم فهرس البحث. لا يقوم Data Factory بإنشاء الفهرس. يجب أن يكون الفهرس موجوداً في Azure Cognitive Search. نعم

نسخ خصائص النشاط

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

بالنسبة إلى "نشاط النسخ" عندما يكون المتلقي من النوع AzureSearchIndexSink، تتوفر الخصائص التالية في قسم typeProperties:

الخاصية الوصف القيم المسموح بها مطلوب
WriteBehavior تحديد ما إذا كان سيتم دمج مستند موجود بالفعل في الفهرس أو استبداله. يرجى مراجعة خاصية WriteBehavior. دمج (افتراضي)
تحميل
لا
WriteBatchSize تحميل البيانات في فهرس البحث عندما يصل حجم المخزن المؤقت writeBatchSize. راجع خاصية WriteBatchSize للمزيد من التفاصيل. من 1 إلى 1000. القيمة الافتراضية هي 1000. لا

خاصية WriteBehavior

يقوم AzureSearchSink بالإدراج أو التحديث "upsert" عند كتابة البيانات. بمعنى آخر، عند كتابة مستند، إذا كان مفتاح المستند موجوداً بالفعل في فهرس البحث، يقوم Azure Cognitive Search بتحديث المستند الموجود بدلاً من طرح استثناء تعارض.

يوفر AzureSearchSink سلوكين upsert التاليين (باستخدام AzureSearch SDK):

  • Merge: ضم جميع الأعمدة في المستند الجديد مع المستند الموجود. بالنسبة للأعمدة ذات القيمة الفارغة في المستند الجديد، يتم الاحتفاظ بالقيمة الموجودة في المستند الحالي.
  • Upload: يحل المستند الجديد محل المستند الموجود. بالنسبة للأعمدة غير المحددة في المستند الجديد، يتم تعيين القيمة إلى قيمة خالية سواء كانت هناك قيمة غير خالية في المستند الموجود أم لا.

السلوك الافتراضي هو Merge.

خاصية WriteBatchSize

تدعم خدمة Azure Cognitive Search كتابة المستندات كدُفعة. يمكن أن تحتوي الدُفعة على من 1 إلى 1000 إجراء. يعالج الإجراء مستنداً واحداً لتنفيذ عملية التحميل/الدمج.

دعم نوع البيانات

يحدد الجدول التالي ما إذا كان نوع بيانات Azure Cognitive Search مدعوماً أم لا.

نوع بيانات Azure Cognitive Search مدعوم في متلقي Azure Cognitive Search
سلسلة Y
Int32 Y
Int64 Y
مزدوج Y
منطقي Y
DataTimeOffset Y
صفيف السلسلة -N
GeographyPoint -N

مثال على JSON: نسخ البيانات من SQL Server إلى فهرس Azure Cognitive Search

تعرض العينة التالية:

  1. خدمة مرتبطة من نوع AzureStorage.
  2. خدمة مرتبطة من نوع OnPremisesSqlServer.
  3. مجموعة بيانات إدخال من النوع SqlServerTable.
  4. مجموعة بيانات إخراج من النوع AzureSearchIndex.
  5. البنية الأساسية لبرنامج ربط العمليات التجارية مع نشاط نسخ والذي يستخدم SqlSource وAzureSearchIndexSink.

ينسخ النموذج بيانات السلاسل الزمنية من قاعدة بيانات SQL Server للبحث في الفهرس كل ساعة. خصائص JSON المستخدمة في هذه العينات موضَّحة في المقاطع التالية للعينات.

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

الخدمة المرتبطة بـ Azure Cognitive Search:

{
    "name": "AzureSearchLinkedService",
    "properties": {
        "type": "AzureSearch",
        "typeProperties": {
            "url": "https://<service>.search.windows.net",
            "key": "<AdminKey>"
        }
    }
}

الخدمة المرتبطة بـ Microsoft SQL Server

{
  "Name": "SqlServerLinkedService",
  "properties": {
    "type": "OnPremisesSqlServer",
    "typeProperties": {
      "connectionString": "Data Source=<servername>;Initial Catalog=<databasename>;Integrated Security=False;User ID=<username>;Password=<password>;",
      "gatewayName": "<gatewayname>"
    }
  }
}

مجموعة بيانات إدخال Microsoft SQL Server

يفترض النموذج إنشاء جدول "MyTable" في Microsoft SQL Server ويحتوي على عمود يسمى "timestampcolumn" لبيانات السلسلة الزمنية. يمكنك الاستعلام عبر جداول متعددة داخل نفس قاعدة البيانات باستخدام مجموعة بيانات واحدة، ولكن يجب استخدام جدول واحد لـ tableName typeProperty الخاصة بمجموعة البيانات.

إعداد "خارجي": "صحيح" يبلغ خدمة Data Factory أن مجموعة البيانات خارجية لمصنع البيانات ولا يتم إنتاجها بواسطة نشاط في مصنع البيانات.

{
  "name": "SqlServerDataset",
  "properties": {
    "type": "SqlServerTable",
    "linkedServiceName": "SqlServerLinkedService",
    "typeProperties": {
      "tableName": "MyTable"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

مجموعة بيانات إخراج Azure Cognitive Search:

ينسخ النموذج البيانات إلى فهرس Azure Cognitive Search المُسمى منتجات. لا يقوم Data Factory بإنشاء الفهرس. لاختبار العينة، قم بإنشاء فهرس بهذا الاسم. أنشئ فهرس البحث بنفس عدد الأعمدة كما في مجموعة بيانات الإدخال. يتم إضافة إدخالات جديدة إلى فهرس البحث كل ساعة.

{
    "name": "AzureSearchIndexDataset",
    "properties": {
        "type": "AzureSearchIndex",
        "linkedServiceName": "AzureSearchLinkedService",
        "typeProperties" : {
            "indexName": "products",
        },
        "availability": {
            "frequency": "Minute",
            "interval": 15
        }
    }
}

نشاط النسخ في البنية الأساسية لبرنامج ربط العمليات التجارية باستخدام مصدر SQL ومتلقي Azure Cognitive Search:

يحتوي المسار على نشاط نسخ تم تكوينه لاستخدام مجموعتي بيانات الإدخال والإخراج ومن المقرر تشغيله كل ساعة. في تعريف البنية الأساسية لبرنامج ربط العمليات التجارية لـ JSON، يتم تعيين نوع المصدر إلى SqlSource ويتم تعيين نوع المتلقي إلى AzureSearchIndexSink. يُحدد استعلام SQL المحدد للخاصية SqlReaderQuery البيانات في الساعة الماضية للنسخ.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "SqlServertoAzureSearchIndex",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": " SqlServerInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureSearchIndexDataset"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd HH:mm}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)"
          },
          "sink": {
            "type": "AzureSearchIndexSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

إذا كنت تنسخ البيانات من مخزن بيانات سحابي إلى Azure Cognitive Search، فإن الخاصية executionLocation مطلوبة. يُظهر مقتطف JSON التالي التغيير المطلوب ضمن نشاط النسخ typeProperties كمثال. تحقق من القسم نسخ البيانات بين مخازن البيانات السحابية للقيم المدعومة ومزيد من التفاصيل.

"typeProperties": {
  "source": {
    "type": "BlobSource"
  },
  "sink": {
    "type": "AzureSearchIndexSink"
  },
  "executionLocation": "West US"
}

النسخ من مصدر سحابي

إذا كنت تنسخ البيانات من مخزن بيانات سحابي إلى Azure Cognitive Search، فإن الخاصية executionLocation مطلوبة. يُظهر مقتطف JSON التالي التغيير المطلوب ضمن نشاط النسخ typeProperties كمثال. تحقق من القسم نسخ البيانات بين مخازن البيانات السحابية للقيم المدعومة ومزيد من التفاصيل.

"typeProperties": {
  "source": {
    "type": "BlobSource"
  },
  "sink": {
    "type": "AzureSearchIndexSink"
  },
  "executionLocation": "West US"
}

يمكنك أيضاً تعيين أعمدة من مجموعة بيانات المصدر إلى أعمدة من مجموعة بيانات الحوض في تعريف نشاط النسخ. للحصول على التفاصيل، راجع تعيين أعمدة مجموعة البيانات فيAzure Data Factory.

الأداء والضبط

راجع أداء نشاط النسخ ودليل الضبط للتعرف على العوامل الرئيسية التي تؤثر على أداء حركة البيانات (نشاط النسخ) والطرق المختلفة لتحسينه.

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

راجع المقالات التالية: