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 2020-06-30-preview veya üzerini kullanabilirsiniz. En son önizleme API'sini öneririz. Ş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ğinin MySQL ü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'sini 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ıntype
(gerekli).bir ADO.NET bağlantı dizesi olarak ayarlayın
credentials
. bağlantı dizesi Azure portalında MySQL'in Bağlantı 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 oluşturulduğunda otomatik olarak çalışır. olarak ayarlayarak
disabled
true
çalışmasını engelleyebilirsiniz. Dizin oluşturucu yürütmesini denetlemek için isteğe bağlı olarak bir dizin oluşturucu çalıştırın veya zamanlamaya yerleştirin.
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=2024-05-01-preview
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 , DATETIME
veya 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
veORDER 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ığı true
tü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: