Esnek MySQL için Azure Veritabanı sunucudan dizin verileri

Önemli

MySQL desteği şu anda Ek Kullanım Koşulları altında genel önizleme aşamasındadır. İçeriğinizin dizinini oluşturmak için önizleme REST API'sini (2020-06-30-preview veya üzeri) kullanın. Şu anda portal desteği yoktur.

Bu makalede, MySQL için Azure Veritabanı içeriği içeri aktaran ve Azure AI Search'te aranabilir hale getiren bir dizin oluşturucu yapılandırmayı öğrenin. Dizin oluşturucuya girişler, tek bir tablo veya görünümdeki satırınızdır. Çıkış, tek tek alanlarda aranabilir içeriğe sahip bir arama dizinidir.

Bu makale, esnek MySQL için Azure Veritabanı sunucudan dizin oluşturmaya özgü bilgilerle dizin oluşturucu oluşturma işlemini tamamlar. Rest API'lerini kullanarak tüm dizin oluşturucular için ortak olan üç parçalı bir iş akışını gösterir: veri kaynağı oluşturma, dizin oluşturma, dizin oluşturucu oluşturma. Dizin Oluşturucu Oluştur isteğini gönderdiğinizde veri ayıklama gerçekleşir.

Dizin oluşturucu, yüksek su işareti ve geçici silme içerecek şekilde yapılandırıldığında MySQL veritabanınız için tüm değişiklikleri, karşıya yüklemeleri ve silmeleri alır. Bu değişiklikleri arama dizininize yansıtır. Dizin Oluşturucu Oluştur isteğini gönderdiğinizde veri ayıklama gerçekleşir.

Önkoşullar

  • Senaryo geri bildirimi sağlamak için önizlemeye kaydolun. Bu özelliğe form gönderildikten sonra otomatik olarak erişebilirsiniz.

  • Esnek sunucu ve örnek verileri MySQL için Azure Veritabanı. Verilerin bir tabloda veya görünümde bulunması gerekir. Birincil anahtar gereklidir. Görünüm kullanıyorsanız, yüksek su işareti sütununa sahip olmalıdır.

  • Okuma izinleri. Tam erişim bağlantı dizesi, içeriğe erişim sağlayan bir anahtar içerir, ancak Azure rolleri kullanıyorsanız arama hizmeti yönetilen kimliğininMySQL üzerinde Okuyucu izinlerine sahip olduğundan emin olun.

  • Veri kaynağını, dizini ve dizin oluşturucuyu oluşturmak için bir REST istemcisi.

    .NET için Azure SDK'sını da kullanabilirsiniz. Dizin oluşturucu oluşturma için portalı kullanamazsınız, ancak dizin oluşturucuları ve veri kaynaklarını oluşturulduktan sonra yönetebilirsiniz.

Önizleme sınırlamaları

Tarih veya zaman damgası tüm satırlar için tekdüzense, değişiklik izleme ve silme algılaması şu anda çalışmıyordur. Bu sınırlama, önizleme güncelleştirmesinde ele alınması gereken bilinen bir sorundur. Bu sorun giderilene kadar MySQL dizin oluşturucusna beceri kümesi eklemeyin.

Önizleme geometri türlerini ve blobları desteklemez.

Belirtildiği gibi, dizin oluşturucu oluşturma için portal desteği yoktur, ancak bir MySQL dizin oluşturucu ve veri kaynağı mevcut olduktan sonra portalda yönetilebilir. Örneğin, tanımları düzenleyebilir ve dizin oluşturucuyu sıfırlayabilir, çalıştırabilir veya zamanlayabilirsiniz.

Veri kaynağını tanımlama

Veri kaynağı tanımı, verilerdeki değişiklikleri tanımlamak için dizine eklenecek verileri, kimlik bilgilerini ve ilkeleri belirtir. Veri kaynağı, birden çok dizin oluşturucu tarafından kullanılabilmesi için bağımsız bir kaynak olarak tanımlanır.

Veri Kaynağı Oluştur veya Güncelleştir tanımı belirtir. Veri kaynağını oluştururken önizleme REST API sürümünü (2020-06-30-Preview veya üzeri) kullandığınızdan emin olun.

{   
    "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]"
    }
}

Önemli noktalar:

  • olarak "mysql" ayarlayın type (gerekli).

  • bir ADO.NET bağlantı dizesi olarak ayarlayıncredentials. bağlantı dizesi'leri Azure portalında MySQL'in Bağlan ion dizeleri sayfasında bulabilirsiniz.

  • Tablonun adına ayarlayın container .

  • Verilerin geçici olup olmadığını ve dizin oluşturucunun sonraki çalıştırmalarda yalnızca yeni ve güncelleştirilmiş öğeleri almasını isteyip istemediğinizi ayarlayın dataChangeDetectionPolicy .

  • Kaynak öğe silindiğinde arama belgelerini bir arama dizininden kaldırmak istiyorsanız ayarlayın dataDeletionDetectionPolicy .

Dizin oluşturma

Dizin Oluştur veya Güncelleştir dizin şemasını belirtir:

{
    "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  }     
    ]
}

Kaynak tablodaki birincil anahtar belge anahtarıyla (bu örnekte "Kimlik") eşleşiyorsa, dizin oluşturucu birincil anahtarı belge anahtarı olarak içeri aktarır.

Eşleme veri türleri

Aşağıdaki tablo MySQL veritabanını Azure AI Search eşdeğerleriyle eşler. Daha fazla bilgi için bkz . Desteklenen veri türleri (Azure AI Search).

Not

Önizleme geometri türlerini ve blobları desteklemez.

MySQL veri türleri Azure AI Search alan türleri
bool, boolean Edm.Boolean, 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
işaretsiz sayısal veriler, seri, ondalık, dec, bit, blob, ikili, geometri Yok

MySQL dizin oluşturucusunu yapılandırma ve çalıştırma

Dizin ve veri kaynağı oluşturulduktan sonra dizin oluşturucuyu oluşturmaya hazır olursunuz. Dizin oluşturucu yapılandırması, çalışma zamanı davranışlarını denetleen girişleri, parametreleri ve özellikleri belirtir.

Dizin oluşturucuya bir ad verip veri kaynağına ve hedef dizine başvurarak dizin oluşturucu oluşturun veya güncelleştirin:

{
    "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
}

Önemli noktalar:

Dizin oluşturucu durumunu denetleme

Dizin oluşturucu yürütmesini izlemek için Dizin Oluşturucu Durumunu Al isteği gönderin:

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

Yanıt, durumu ve işlenen öğe sayısını içerir. Aşağıdaki örneğe benzer görünmelidir:

{
    "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
    ]
}

Yürütme geçmişi, en son tamamlanan yürütmelerin en son 50'sini içerir ve en son yürütme önce gelecek şekilde ters kronolojik sırada sıralanır.

Yeni ve değiştirilmiş satırları dizine ekleme

Dizin oluşturucu bir arama dizinini tam olarak doldurduktan sonra, sonraki dizin oluşturucu çalıştırmalarının veritabanınızdaki yalnızca yeni ve değiştirilmiş satırları artımlı olarak dizinlemesini isteyebilirsiniz.

Artımlı dizin oluşturmayı etkinleştirmek için veri kaynağı tanımınızda özelliğini ayarlayın dataChangeDetectionPolicy . Bu özellik, dizin oluşturucuya verilerinizde hangi değişiklik izleme mekanizmasının kullanıldığını bildirir.

MySQL için Azure Veritabanı dizin oluşturucular için desteklenen tek ilkedirHighWaterMarkChangeDetectionPolicy.

Dizin oluşturucunun değişiklik algılama ilkesi, satır sürümünü yakalayan yüksek su işareti sütununa veya satırın en son güncelleştirildiği tarih ve saate dayanır. Genellikle DATE, yüksek su işareti sütununun gereksinimlerini karşılamak için yeterli ayrıntı düzeyinde bir , DATETIMEveya TIMESTAMP sütunu olur.

MySQL veritabanınızda yüksek su işareti sütunu aşağıdaki gereksinimleri karşılamalıdır:

  • Tüm veri eklemeleri sütun için bir değer belirtmelidir.
  • Bir öğedeki tüm güncelleştirmeler sütunun değerini de değiştirir.
  • Her ekleme veya güncelleştirmede bu sütunun değeri artar.
  • Aşağıdaki WHERE ve ORDER BY yan tümcelerine sahip sorgular verimli bir şekilde yürütülebilir: WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]

Aşağıdaki örnekte, değişiklik algılama ilkesine sahip bir veri kaynağı tanımı gösterilmektedir:

{
    "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]"
    }
}

Önemli

Görünüm kullanıyorsanız dizin oluşturucu veri kaynağınızda yüksek su işareti ilkesi ayarlamanız gerekir.

Kaynak tabloda yüksek su işareti sütununda bir dizin yoksa, MySQL dizin oluşturucu tarafından kullanılan sorgular zaman aşımına neden olabilir. Özellikle, ORDER BY [High Water Mark Column] yan tümcesi, tablo birçok satır içerdiğinde bir dizinin verimli bir şekilde çalışmasını gerektirir.

Silinen satırları dizine ekleme

Satırlar tablodan veya görünümden silindiğinde, normalde bu satırları da arama dizininden silmek istersiniz. Ancak, satırlar tablodan fiziksel olarak kaldırılırsa, dizin oluşturucunun artık var olmayan kayıtların varlığını çıkarsama yolu yoktur. Çözüm, satırları tablodan kaldırmadan mantıksal olarak silmek için geçici silme tekniği kullanmaktır. Tablonuza bir sütun ekleyin veya bu sütunu kullanarak satırları silindi olarak işaretleyin.

Silme durumu sağlayan bir sütun verildiğinde, bir dizin oluşturucu, silme durumunun olarak ayarlandığı truetüm arama belgelerini kaldıracak şekilde yapılandırılabilir. Bu davranışı destekleyen yapılandırma özelliği, veri kaynağı tanımında aşağıdaki gibi belirtilen bir veri silme algılama ilkesidir:

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

softDeleteMarkerValue bir dize olmalıdır. Örneğin, silinen satırların 1 değeriyle işaretlendiği bir tamsayı sütununu kullanıyorsanız kullanın "1". Silinen satırların Boole gerçek değeriyle işaretlendiği bir BIT sütuna sahipseniz dize değişmez değerini True kullanın veya true (büyük/küçük harf fark etmez).

Sonraki adımlar

Artık dizin oluşturucuyu çalıştırabilir, durumu izleyebilir veya dizin oluşturucu yürütmesini zamanlayabilirsiniz. Aşağıdaki makaleler Azure MySQL'den içerik çeken dizin oluşturucular için geçerlidir: