Adatok indexelése rugalmas Azure Database for MySQL-kiszolgálóról
Fontos
A MySQL-támogatás jelenleg nyilvános előzetes verzióban érhető el a kiegészítő használati feltételek alatt. A 2020-06-30-preview vagy újabb verzióval indexelheti a tartalmat. Javasoljuk, hogy a legújabb előzetes verziójú API-t használja. Jelenleg nincs portáltámogatás.
Ebből a cikkből megtudhatja, hogyan konfigurálhat olyan indexelőt, amely tartalmat importál az Azure Database for MySQL-ből, és hogyan teszi kereshetővé az Azure AI Searchben. Az indexelő bemenetei az Ön sorai egyetlen táblában vagy nézetben. A kimenet egy keresési index, amelyben az egyes mezőkben kereshető tartalom található.
Ez a cikk kiegészíti a rugalmas Azure Database for MySQL-kiszolgálóról történő indexelésre vonatkozó információkat tartalmazó indexelő létrehozását. A REST API-k segítségével egy háromrészes munkafolyamatot mutat be, amely az összes indexelőre jellemző: adatforrás létrehozása, index létrehozása, indexelő létrehozása. Az adatkinyerés az Indexelő létrehozása kérés elküldésekor történik.
Ha magas vízjelre és helyreállítható törlésre van konfigurálva, az indexelő elvégzi a MySQL-adatbázis összes módosítását, feltöltését és törlését. A keresési index változásait tükrözi. Az adatkinyerés az Indexelő létrehozása kérés elküldésekor történik.
Előfeltételek
Regisztráljon az előzetes verzióra , hogy visszajelzést adjon a forgatókönyvről. Az űrlap elküldése után a funkció automatikusan elérhető.
Rugalmas Azure Database for MySQL-kiszolgáló és mintaadatok. Az adatoknak egy táblában vagy nézetben kell lenniük. Elsődleges kulcsra van szükség. Ha nézetet használ, annak magas vízjeloszlopot kell tartalmaznia.
Olvasási engedélyek. A teljes hozzáférésű kapcsolati sztring tartalmaz egy kulcsot, amely hozzáférést biztosít a tartalomhoz, de ha Azure-szerepköröket használ, győződjön meg arról, hogy a keresési szolgáltatás által felügyelt identitás rendelkezik olvasói engedélyekkel a MySQL-en.
EGY REST-ügyfél , amely létrehozza az adatforrást, az indexet és az indexelőt.
A .NET-hez készült Azure SDK-t is használhatja. Az indexelők létrehozására nem használhatja a portált, de az indexelőket és az adatforrásokat a létrehozásuk után kezelheti.
Előzetes verzióra vonatkozó korlátozások
A változáskövetés és a törlésészlelés jelenleg nem működik, ha a dátum vagy az időbélyeg minden sorban egységes. Ez a korlátozás egy ismert probléma, amelyet az előzetes verzió frissítésében kell elhárítani. A probléma megoldásáig ne adjon hozzá készségkészletet a MySQL-indexelőhöz.
Az előzetes verzió nem támogatja a geometriatípusokat és a blobokat.
Mint említettük, az indexelők létrehozásához nincs portáltámogatás, de a MySQL-indexelők és -adatforrások a portálon kezelhetők, ha már léteznek. Szerkesztheti például a definíciókat, és alaphelyzetbe állíthatja, futtathatja vagy ütemezheti az indexelőt.
Az adatforrás meghatározása
Az adatforrás definíciója meghatározza az adatok indexeléséhez, hitelesítő adataihoz és szabályzataihoz az adatok változásainak azonosításához. Az adatforrás független erőforrásként van definiálva, így több indexelő is használhatja.
Az adatforrás létrehozása vagy frissítése határozza meg a definíciót. Az adatforrás létrehozásakor mindenképpen használjon előzetes REST API-t.
{
"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]"
}
}
Főbb pontok:
Állítsa be a (kötelező) értéket
type
"mysql"
.Állítsa be
credentials
egy ADO.NET kapcsolati sztring. Kapcsolati sztring az Azure Portalon, a MySQL Kapcsolati sztringek lapján találhatja meg.Állítsa be
container
a tábla nevét.Adja meg
dataChangeDetectionPolicy
, hogy az adatok változékonyak-e, és azt szeretné, hogy az indexelő csak az új és frissített elemeket vegye fel a későbbi futtatások során.Ha
dataDeletionDetectionPolicy
el szeretné távolítani a keresési dokumentumokat a keresési indexből a forráselem törlésekor.
Index létrehozása
Az indexséma létrehozása vagy frissítése:
{
"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 }
]
}
Ha a forrástábla elsődleges kulcsa megegyezik a dokumentumkulcstal (ebben az esetben az "ID"), az indexelő importálja az elsődleges kulcsot dokumentumkulcsként.
Adattípusok leképezése
Az alábbi táblázat leképzi a MySQL-adatbázist az Azure AI Search megfelelőire. További információ: Támogatott adattípusok (Azure AI Search).
Feljegyzés
Az előzetes verzió nem támogatja a geometriatípusokat és a blobokat.
MySQL-adattípusok | Az Azure AI Search mezőtípusai |
---|---|
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 |
aláíratlan numerikus adatok, soros, dec, dec, bit, blob, bináris, geometria | n/a |
A MySQL-indexelő konfigurálása és futtatása
Az index és az adatforrás létrehozása után készen áll az indexelő létrehozására. Az indexelő konfigurációja meghatározza a futási idő viselkedését vezérlő bemeneteket, paramétereket és tulajdonságokat.
Hozzon létre vagy frissítsen egy indexelőt úgy, hogy megad neki egy nevet, és hivatkozik az adatforrásra és a célindexre:
{
"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
}
Főbb pontok:
Mezőleképezéseket adhat meg, ha a mezőnév vagy a típus eltérést mutat, vagy ha egy forrásmező több verziójára van szüksége a keresési indexben.
Az indexelő automatikusan fut a létrehozásakor. A beállítással
disabled
megakadályozhatja a futtatásáttrue
. Az indexelő végrehajtásának szabályozásához futtasson egy indexelőt igény szerint , vagy ütemezze.
Az indexelő állapotának ellenőrzése
Indexelő állapotának lekérése kérés küldése az indexelő végrehajtásának figyeléséhez:
GET https://myservice.search.windows.net/indexers/myindexer/status?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [admin key]
A válasz tartalmazza az állapotot és a feldolgozott elemek számát. A következő példához hasonlóan kell kinéznie:
{
"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
]
}
A végrehajtási előzmények legfeljebb 50 legutóbbi végrehajtást tartalmaznak, amelyek fordított időrendi sorrendben vannak rendezve, hogy a legújabb végrehajtás legyen az első.
Új és módosított sorok indexelése
Miután egy indexelő kitöltött egy keresési indexet, érdemes lehet, hogy a későbbi indexelők növekményesen indexeljenek csak az adatbázis új és módosított sorait.
A növekményes indexelés engedélyezéséhez állítsa be a dataChangeDetectionPolicy
tulajdonságot az adatforrás definíciójában. Ez a tulajdonság tájékoztatja az indexelőt, hogy melyik változáskövetési mechanizmust használja az adatokon.
Az Azure Database for MySQL-indexelők esetében az egyetlen támogatott szabályzat a HighWaterMarkChangeDetectionPolicy
.
Az indexelő változásészlelési szabályzata egy magas vízjelű oszlopra támaszkodik, amely rögzíti a sor verzióját, vagy a sor utolsó frissítésének dátumát és időpontját. Ez gyakran egy DATE
, DATETIME
vagy TIMESTAMP
oszlop olyan részletességgel, amely elegendő a magas vízjelű oszlop követelményeinek való megfeleléshez.
A MySQL-adatbázisban a magas vízjel oszlopnak meg kell felelnie az alábbi követelményeknek:
- Minden adatbeszúrásnak meg kell adnia az oszlop értékét.
- Az elem minden frissítése az oszlop értékét is módosítja.
- Az oszlop értéke minden beszúrással vagy frissítéssel nő.
- A következő
WHERE
ésORDER BY
záradékokkal rendelkező lekérdezések hatékonyan végrehajthatók:WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]
Az alábbi példa egy változásészlelési szabályzattal rendelkező adatforrásdefiníciót mutat be:
{
"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]"
}
}
Fontos
Ha nézetet használ, magas vízjelszabályzatot kell beállítania az indexelő adatforrásában.
Ha a forrástábla nem rendelkezik indexel a magas vízjel oszlopban, a MySQL-indexelő által használt lekérdezések időtúllépést eredményezhetnek. A záradék megköveteli, hogy az ORDER BY [High Water Mark Column]
index hatékonyan fusson, ha a tábla sok sort tartalmaz.
Törölt sorok indexelése
Ha sorokat töröl a táblázatból vagy a nézetből, általában ezeket a sorokat is törölni szeretné a keresési indexből. Ha azonban a sorok fizikailag törlődnek a táblából, az indexelőnek nincs módja arra, hogy a már nem létező rekordok jelenlétét következtethesse. A megoldás egy helyreállítható törlési technika használata sorok logikai törlésére anélkül, hogy eltávolítaná őket a táblából. Adjon hozzá egy oszlopot a táblához, vagy tekintse meg és jelölje meg a sorokat töröltként az adott oszlop használatával.
A törlési állapotot biztosító oszlop miatt az indexelő konfigurálható úgy, hogy eltávolítsa azokat a keresési dokumentumokat, amelyekre a törlési állapot be van állítva true
. Az ezt a viselkedést támogató konfigurációs tulajdonság egy adattörlési észlelési szabályzat, amely az adatforrás definíciójában az alábbiak szerint van megadva:
{
…,
"dataDeletionDetectionPolicy" : {
"@odata.type" : "#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
"softDeleteColumnName" : "[a column name]",
"softDeleteMarkerValue" : "[the value that indicates that a row is deleted]"
}
}
A softDeleteMarkerValue
sztringnek sztringnek kell lennie. Ha például van egy egész szám oszlopa, amelyben a törölt sorok 1 értékkel vannak megjelölve, használja a következőt "1"
: . Ha olyan oszlopa van BIT
, amelyben a törölt sorok logikai igaz értékkel vannak megjelölve, használja a sztringkonstanst True
vagy true
(az eset nem számít).
Következő lépések
Most már futtathatja az indexelőt, figyelheti az állapotot vagy ütemezheti az indexelő végrehajtását. Az alábbi cikkek azOkra az indexelőkre vonatkoznak, amelyek tartalmat kérnek le az Azure MySQL-ből:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: