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

هام

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

في هذه المقالة، تعرف على كيفية تكوين مفهرس يستورد المحتوى من قاعدة بيانات Azure ل MySQL ويجعله قابلا للبحث في البحث المعرفي في Azure.

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

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

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

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

لا تدعم المعاينة أنواع الهندسة والنقط.

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

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

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

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

    POST https://[search service name].search.windows.net/datasources?api-version=2020-06-30-Preview
    Content-Type: application/json
    api-key: [admin key]
    
    {   
        "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]"
        }
    }
    
  2. اضبط "النوع" على "mysql" (مطلوب).

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

  4. اضبط "الحاوية" على اسم الجدول.

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

  6. قم بتعيين "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  }     
    ]

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

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

يقوم الجدول التالي بتعيين قاعدة بيانات MySQL إلى مكافئات البحث المعرفي. راجع أنواع البيانات المدعومة (Azure Cognitive Search) لمزيد من المعلومات.

ملاحظة

لا تدعم المعاينة أنواع الهندسة والنقط.

أنواع بيانات MySQL أنواع حقول البحث المعرفي
bool, boolean Edm.Boolian ، Edm.String
tinyint, smallint, mediumint, int, integer, year Edm.Int32, Edm.Int64, Edm.String
bigint Edm.Int64, Edm.String
float, double, real Edm.Double, Edm.String
date, datetime, timestamp Edm.DateTimeOffset, Edm.String
char, varchar, tinytext, mediumtext, text, longtext, enum, set, time Edm.String
بيانات رقمية غير موقعة، تسلسلية، عشرية، ديسمبر، بت، نقطة، ثنائية، هندسة غير متوفر

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

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

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

    POST https://[search service name].search.windows.net/indexers?api-version=2020-06-30
    
    {
        "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
    }
    
  2. حدد تعيينات الحقول إذا كانت هناك اختلافات في اسم الحقل أو نوعه، أو إذا كنت بحاجة إلى إصدارات متعددة من حقل مصدر في فهرس البحث.

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

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

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

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

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

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

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

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

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

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

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

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

في قاعدة بيانات MySQL الخاصة بك، يجب أن يفي عمود العلامة المائية العالية بالمتطلبات التالية:

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

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

POST https://[search service name].search.windows.net/datasources?api-version=2020-06-30-Preview
Content-Type: application/json
api-key: [admin key]
    {
        "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: