فهرسة البيانات من قاعدة بيانات Azure لخادم MySQL المرن

هام

يتوفر دعم MySQL حاليا في المعاينة العامة ضمن شروط الاستخدام التكميلية. استخدم معاينة REST API (2020-06-30-preview أو أحدث) لفهرسة المحتوى الخاص بك. لا يوجد حاليا دعم المدخل.

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

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

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

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

  • سجل للمعاينة لتقديم ملاحظات السيناريو. يمكنك الوصول إلى الميزة تلقائيا بعد إرسال النموذج.

  • خادم Azure Database for MySQL المرن وعينة البيانات. يجب أن تتواجد البيانات في جدول أو طريقة عرض. مطلوب مفتاح أساسي. إذا كنت تستخدم طريقة عرض، فيجب أن تحتوي على عمود علامة مائية عالية.

  • قراءة الأذونات. يتضمن سلسلة الاتصال الوصول الكامل مفتاحا يمنح الوصول إلى المحتوى، ولكن إذا كنت تستخدم أدوار Azure، فتأكد من أن الهوية المدارة لخدمة البحث لديها أذونات القارئ على MySQL.

  • عميل REST لإنشاء مصدر البيانات والفهرس والمفهرس.

    يمكنك أيضا استخدام Azure SDK ل .NET. لا يمكنك استخدام المدخل لإنشاء المفهرس، ولكن يمكنك إدارة المفهرسات ومصادر البيانات بمجرد إنشائها.

قيود المعاينة

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

لا تدعم المعاينة أنواع الهندسة والكائنات الثنائية كبيرة الحجم.

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

تعريف مصدر البيانات

يحدد تعريف مصدر البيانات البيانات للفهرسة وبيانات الاعتماد والنهج لتحديد التغييرات في البيانات. يتم تعريف مصدر البيانات كمورد مستقل بحيث يمكن استخدامه من قبل مفهرسات متعددة.

يحدد إنشاء مصدر البيانات أو تحديثه التعريف. تأكد من استخدام إصدار معاينة REST API (2020-06-30-Preview أو أحدث) عند إنشاء مصدر البيانات.

{   
    "name" : "hotel-mysql-ds",
    "description" : "[Description of MySQL data source]",
    "type" : "mysql",
    "credentials" : { 
        "connectionString" : 
            "Server=[MySQLServerName].MySQL.database.azure.com; Port=3306; Database=[DatabaseName]; Uid=[UserName]; Pwd=[Password]; SslMode=Preferred;" 
    },
    "container" : { 
        "name" : "[TableName]" 
    },
    "dataChangeDetectionPolicy" : { 
        "@odata.type": "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName": "[HighWaterMarkColumn]"
    }
}

النقاط الرئيسية:

  • تعيين type إلى "mysql" (مطلوب).

  • تعيين credentials إلى ADO.NET سلسلة الاتصال. يمكنك العثور على سلسلة الاتصال في مدخل Microsoft Azure، في صفحة سلاسل الاتصال ل MySQL.

  • تعيين container إلى اسم الجدول.

  • قم بتعيين dataChangeDetectionPolicy ما إذا كانت البيانات متقلبة وتريد أن يلتقط المفهرس العناصر الجديدة والمحدثة فقط على عمليات التشغيل اللاحقة.

  • قم بتعيين dataDeletionDetectionPolicy ما إذا كنت تريد إزالة مستندات البحث من فهرس بحث عند حذف العنصر المصدر.

إنشاء فهرس

يحدد إنشاء فهرس أو تحديثه مخطط الفهرس:

{
    "name" : "hotels-mysql-ix",
    "fields": [
        { "name": "ID", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false },
        { "name": "Category", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true  },
        { "name": "City", "type": "Edm.String", "searchable": false, "filterable": true, "sortable": true },
        { "name": "Description", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false  }     
    ]
}

إذا تطابق المفتاح الأساسي في الجدول المصدر مع مفتاح المستند (في هذه الحالة، "المعرف")، يقوم المفهرس باستيراد المفتاح الأساسي كمفتاح المستند.

تعيين أنواع البيانات

يعين الجدول التالي قاعدة بيانات MySQL إلى مكافئات Azure الذكاء الاصطناعي Search. لمزيد من المعلومات، راجع أنواع البيانات المدعومة (Azure الذكاء الاصطناعي Search).

إشعار

لا تدعم المعاينة أنواع الهندسة والكائنات الثنائية كبيرة الحجم.

أنواع بيانات MySQL أنواع حقول Azure الذكاء الاصطناعي Search
bool, boolean Edm.Boolean, Edm.String
tinyint، smallint، mediumint، int، ، integeryear Edm.Int32، Edm.Int64، Edm.String
bigint Edm.Int64، Edm.String
float، ، doublereal Edm.Double، Edm.String
date، ، datetimetimestamp Edm.DateTimeOffset, Edm.String
char، ، tinytextvarchar، mediumtext، text، longtext، enum، ، set،time Edm.String
بيانات رقمية غير موقعة، تسلسلية، عشرية، عشرية، بت، blob، ثنائية، هندسية ‏‫غير متوفر‬

تكوين وتشغيل مفهرس MySQL

بمجرد إنشاء الفهرس ومصدر البيانات، تصبح جاهزا لإنشاء المفهرس. يحدد تكوين المفهرس المدخلات والمعلمات والخصائص التي تتحكم في سلوكيات وقت التشغيل.

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

{
    "name" : "hotels-mysql-idxr",
    "dataSourceName" : "hotels-mysql-ds",
    "targetIndexName" : "hotels-mysql-ix",
    "disabled": null,
    "schedule": null,
    "parameters": {
        "batchSize": null,
        "maxFailedItems": null,
        "maxFailedItemsPerBatch": null,
        "base64EncodeKeys": null,
        "configuration": { }
        },
    "fieldMappings" : [ ],
    "encryptionKey": null
}

النقاط الرئيسية:

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

  • يتم تشغيل المفهرس تلقائيا عند إنشائه. يمكنك منع تشغيله عن طريق تعيين disabled إلى true. للتحكم في تنفيذ المفهرس، قم بتشغيل مفهرس عند الطلب أو وضعه في جدول زمني.

التحقق من حالة المفهرس

إرسال طلب الحصول على حالة المفهرس لمراقبة تنفيذ المفهرس:

GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2023-11-01
  Content-Type: application/json  
  api-key: [admin key]

تتضمن الاستجابة الحالة وعدد العناصر التي تمت معالجتها. يجب أن يبدو مشابها للمثال التالي:

{
    "status":"running",
    "lastResult": {
        "status":"success",
        "errorMessage":null,
        "startTime":"2024-02-21T00:23:24.957Z",
        "endTime":"2024-02-21T00:36:47.752Z",
        "errors":[],
        "itemsProcessed":1599501,
        "itemsFailed":0,
        "initialTrackingState":null,
        "finalTrackingState":null
    },
    "executionHistory":
    [
        {
            "status":"success",
            "errorMessage":null,
            "startTime":"2024-02-21T00:23:24.957Z",
            "endTime":"2024-02-21T00:36:47.752Z",
            "errors":[],
            "itemsProcessed":1599501,
            "itemsFailed":0,
            "initialTrackingState":null,
            "finalTrackingState":null
        },
        ... earlier history items
    ]
}

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

فهرسة صفوف جديدة ومتغيرة

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

لتمكين الفهرسة التزايدية، قم بتعيين الخاصية dataChangeDetectionPolicy في تعريف مصدر البيانات. تخبر هذه الخاصية المفهرس بآلية تعقب التغييرات المستخدمة على بياناتك.

بالنسبة لقاعدة بيانات Azure لمفهرسات MySQL، فإن النهج الوحيد المدعوم هو HighWaterMarkChangeDetectionPolicy.

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

في قاعدة بيانات MySQL، يجب أن يفي عمود علامة المياه العالية بالمتطلبات التالية:

  • يجب أن تحدد كافة إدراجات البيانات قيمة للعمود.
  • تقوم جميع التحديثات لعنصر أيضا بتغيير قيمة العمود.
  • تزداد قيمة هذا العمود مع كل إدراج أو تحديث.
  • يمكن تنفيذ الاستعلامات التي لها ما يلي WHERE والعبارات ORDER BY بكفاءة: WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]

يوضح المثال التالي تعريف مصدر بيانات مع نهج الكشف عن التغيير:

{
    "name" : "[Data source name]",
    "type" : "mysql",
    "credentials" : { "connectionString" : "[connection string]" },
    "container" : { "name" : "[table or view name]" },
    "dataChangeDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.HighWaterMarkChangeDetectionPolicy",
        "highWaterMarkColumnName" : "[last_updated column name]"
    }
}

هام

إذا كنت تستخدم طريقة عرض، فيجب عليك تعيين نهج علامة مائية عالية في مصدر بيانات المفهرس.

إذا لم يكن الجدول المصدر يحتوي على فهرس على عمود علامة مائية عالية، فقد مهلة الاستعلامات المستخدمة من قبل مفهرس MySQL. على وجه الخصوص، تتطلب العبارة ORDER BY [High Water Mark Column] فهرسا لتشغيله بكفاءة عندما يحتوي الجدول على العديد من الصفوف.

فهرسة الصفوف المحذوفة

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

بالنظر إلى عمود يوفر حالة الحذف، يمكن تكوين مفهرس لإزالة أي مستندات بحث تم تعيين حالة الحذف لها إلى true. خاصية التكوين التي تدعم هذا السلوك هي نهج الكشف عن حذف البيانات، والذي يتم تحديده في تعريف مصدر البيانات كما يلي:

{
    …,
    "dataDeletionDetectionPolicy" : {
        "@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
        "softDeleteColumnName" : "[a column name]",
        "softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
    }
}

softDeleteMarkerValue يجب أن يكون سلسلة. على سبيل المثال، إذا كان لديك عمود عدد صحيح حيث يتم وضع علامة على الصفوف المحذوفة بالقيمة 1، فاستخدم "1". إذا كان لديك BIT عمود حيث يتم وضع علامة على الصفوف المحذوفة بالقيمة المنطقية الحقيقية، فاستخدم السلسلة الحرفية True أو true (الحالة لا تهم).

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

يمكنك الآن تشغيل المفهرس أو مراقبة الحالة أو جدولة تنفيذ المفهرس. تنطبق المقالات التالية على المفهرسات التي تسحب المحتوى من Azure MySQL: