Indexgegevens van Azure Database for MySQL Flexible Server (preview)

Opmerking

Azure AI Zoeken is beschikbaar via de Azure-portal, REST API's en Azure-SDK's. Het vormt ook een basis voor Foundry IQ, de beheerde kennislaag die bedrijfsinhoud transformeert in herbruikbare, machtigingsbewuste knowledge bases voor agents in de Microsoft Foundry-portal.

Belangrijk

Functies, mogelijkheden of eigenschappen die zijn gemarkeerd (preview) vallen niet onder een service level agreement, worden niet aanbevolen voor productieworkloads en kunnen worden gewijzigd of beperkt voordat ze algemeen beschikbaar worden. De Azure AI Zoeken preview-voorwaarden zijn van toepassing op alle preview-functionaliteit, ongeacht of deze zelfstandig is of deel uitmaakt van een algemeen beschikbare functie.

Belangrijk

Deze functies en functionaliteit ondersteunen verbindingen met andere Microsoft-services en services van derden. Het gebruik van deze services is onderhevig aan hun respectieve voorwaarden en kan leiden tot gegevensverwerking of opslag buiten de grens van Azure naleving, evenals gegevens die naar de grens van de Azure naleving stromen.

Het is uw verantwoordelijkheid om te beheren of uw gegevens buiten de nalevings- en geografische grenzen van uw organisatie en eventuele gerelateerde implicaties stromen, en dat de juiste machtigingen, grenzen en goedkeuringen worden ingericht.

U bent verantwoordelijk voor het zorgvuldig beoordelen en testen van toepassingen die u bouwt in de context van uw specifieke use cases en het nemen van alle juiste beslissingen en aanpassingen. Dit omvat het implementeren van uw eigen verantwoorde AI-oplossingen, zoals metaprompts, inhoudsfilters of andere veiligheidssystemen, en ervoor zorgen dat uw toepassingen voldoen aan de juiste kwaliteit, betrouwbaarheid, beveiliging en betrouwbaarheidsstandaarden. Zie de Azure AI Zoeken Transparantienotitie voor meer informatie.

De Azure Database for MySQL indexeerfunctie (preview) importeert inhoud uit Azure Database for MySQL Flexible Server in een Azure AI Zoeken-index. Invoer in de indexeerfunctie zijn rijen uit één tabel of weergave. Uitvoer is een zoekindex met doorzoekbare inhoud in afzonderlijke velden.

Dit artikel is een aanvulling op Maak een indexeerfunctie met informatie die specifiek is voor indexering vanaf Azure Database for MySQL Flexibele server. Hierbij worden de REST API's gebruikt om een driedelige werkstroom te demonstreren die gebruikelijk is voor alle indexeerfuncties: een gegevensbron maken, een index maken, een indexeerfunctie maken. Gegevensextractie vindt plaats wanneer u de aanvraag Indexeerfunctie maken verzendt.

Wanneer deze is geconfigureerd voor het opnemen van een hoogwatermark en zachte verwijdering, neemt de indexer alle wijzigingen, uploads en verwijderingen van uw MySQL-database. Deze wijzigingen worden weergegeven in uw zoekindex. Gegevensextractie vindt plaats wanneer u de aanvraag Indexeerfunctie maken verzendt.

Voorwaarden

  • Vul het registratieformulier voor de indexeerfunctie in. Registratie wordt automatisch goedgekeurd.

  • Azure Database for MySQL Flexible Server en voorbeeldgegevens. Gegevens moeten zich in een tabel of weergave bevinden. Er is een primaire sleutel vereist. Als u een weergave gebruikt, moet deze een hoogwatermerkkolom hebben.

  • Leesmachtigingen. Een volledige toegang verbindingsreeks bevat een sleutel die toegang verleent tot de inhoud, maar als u Azure-rollen gebruikt, moet u ervoor zorgen dat de searchservice beheerde identiteit Reader-machtigingen voor MySQL heeft.

  • Een REST-client voor het maken van de gegevensbron, index en indexeerfunctie.

    U kunt ook de Azure SDK gebruiken voor .NET. U kunt de Azure-portal niet gebruiken voor het maken van indexeerfuncties, maar u kunt indexeerfuncties en gegevensbronnen beheren nadat ze zijn gemaakt.

Preview-beperkingen

Op dit moment werkt de detectie van wijzigingen bijhouden en verwijderen niet als de datum of tijdstempel uniform is voor alle rijen. Deze beperking is een bekend probleem dat moet worden opgelost in een update van de preview. Voeg pas een vaardighedenset toe aan de MySQL-indexeerfunctie als dit probleem is opgelost.

De preview biedt geen ondersteuning voor geometrietypen en blobs.

Zoals vermeld, is er geen portalondersteuning voor het maken van indexeerfuncties, maar een MySQL-indexeerfunctie en gegevensbron kunnen worden beheerd in de Azure-portal zodra deze bestaan. U kunt bijvoorbeeld de definities bewerken en de indexeerfunctie opnieuw instellen, uitvoeren of plannen.

De gegevensbron definiëren

De definitie van de gegevensbron geeft de gegevens op die moeten worden geïndexeerde, referenties en beleidsregels voor het identificeren van wijzigingen in de gegevens. De gegevensbron wordt gedefinieerd als een onafhankelijke resource, zodat deze kan worden gebruikt door meerdere indexeerfuncties.

Gegevensbron maken of bijwerken specificeert de definitie. Zorg ervoor dat u een preview-REST API gebruikt bij het maken van de gegevensbron.

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

Belangrijkste punten:

  • Stel type in op "mysql" (vereist).

  • Stel credentials in op een ADO.NET verbindingsreeks. U vindt verbindingsreeksen in Azure-portal op de pagina Connection-tekenreeksen voor MySQL.

  • Stel container in op de naam van de tabel.

  • Stel dataChangeDetectionPolicy in of gegevens vluchtig zijn en u wilt dat de indexeerfunctie alleen de nieuwe en bijgewerkte items bij volgende uitvoeringen ophaalt.

  • Stel dataDeletionDetectionPolicy in of u zoekdocumenten uit een zoekindex wilt verwijderen wanneer het bronitem wordt verwijderd.

Opmerking

Voor de eigenschap containernaam is de waarde beperkt tot alleen letters, cijfers, onderstrepingstekens (_), puntjes (.), enkele streepjes (-) en vierkante haken ([])

Een index maken

Met index maken of bijwerken wordt het indexschema opgegeven:

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

Als de primaire sleutel in de brontabel overeenkomt met de documentsleutel (in dit geval 'ID'), importeert de indexer de primaire sleutel als documentsleutel.

Toewijzen van gegevenstypen

De volgende tabel wijst de MySQL-database toe aan Azure AI Zoeken equivalenten. Zie Supported data types (Azure AI Zoeken) voor meer informatie.

Opmerking

De preview biedt geen ondersteuning voor geometrietypen en blobs.

MySQL-gegevenstypen Azure AI Zoeken veldtypen
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, tinytext, varchar, mediumtext, text, longtext, set, enum, time Edm.String
niet-ondertekende numerieke gegevens, serieel, decimaal, dec, bit, blob, binair, geometrie N/A

De MySQL-indexeerfunctie configureren en uitvoeren

Zodra de index en de gegevensbron zijn gemaakt, kunt u de indexeerfunctie maken. De configuratie van de indexeerfunctie geeft de invoer, parameters en eigenschappen aan die het gedrag van de uitvoeringstijd regelen.

Maak of werk een indexeerfunctie bij door deze een naam te geven en te verwijzen naar de gegevensbron en doelindex:

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

Belangrijkste punten:

Status van indexeerfunctie controleren

Verzend een Get Indexer Status-aanvraag om de uitvoering van de indexeerfunctie te controleren:

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

Het antwoord bevat de status en het aantal verwerkte items. Het moet er ongeveer uitzien als in het volgende voorbeeld:

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

De uitvoeringsgeschiedenis bevat maximaal 50 van de laatst voltooide uitvoeringen, die in de omgekeerde chronologische volgorde worden gesorteerd, zodat de laatste uitvoering als eerste wordt uitgevoerd.

Nieuwe en gewijzigde rijen indexeren

Zodra een indexeerfunctie een zoekindex volledig heeft ingevuld, wilt u mogelijk dat de volgende indexeerfunctie alleen de nieuwe en gewijzigde rijen in uw database incrementeel indexeert.

Als u incrementele indexering wilt inschakelen, stelt u de dataChangeDetectionPolicy eigenschap in uw gegevensbrondefinitie in. Deze eigenschap vertelt de indexeerfunctie welk mechanisme voor het bijhouden van wijzigingen wordt gebruikt voor uw gegevens.

Voor Azure Database for MySQL indexeerfuncties is het enige ondersteunde beleid de HighWaterMarkChangeDetectionPolicy.

Het wijzigingsdetectiebeleid van een indexeerfunctie is afhankelijk van een kolom met hoge watermarkeringen die de rijversie vastlegt, of de datum en tijd waarop een rij voor het laatst is bijgewerkt. Het is vaak een DATE, DATETIMEof TIMESTAMP kolom met een granulariteit die voldoende is om te voldoen aan de vereisten van een kolom met hoge watermarkeringen.

In uw MySQL-database moet de kolom met hoge watermarkeringen voldoen aan de volgende vereisten:

  • Alle gegevensinvoegingen moeten een waarde voor de kolom opgeven.
  • Alle updates voor een item wijzigen ook de waarde van de kolom.
  • De waarde van deze kolom wordt verhoogd met elke invoeg- of update.
  • Query's met de volgende WHERE en ORDER BY componenten kunnen efficiënt worden uitgevoerd: WHERE [High Water Mark Column] > [Current High Water Mark Value] ORDER BY [High Water Mark Column]

In het volgende voorbeeld ziet u een definitie van een gegevensbron met een wijzigingsdetectiebeleid:

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

Belangrijk

Als u een weergave gebruikt, moet u een high water mark-beleid instellen in de gegevensbron van de indexer.

Als de brontabel geen index heeft voor de hoogwatermerk kolom, kan er een time-out optreden voor query's die door de MySQL-indexeerfunctie worden gebruikt. Met name voor de ORDER BY [High Water Mark Column] clausule is een index nodig om efficiënt te worden uitgevoerd wanneer de tabel veel rijen bevat.

Verwijderde rijen indexeren

Wanneer rijen uit de tabel of weergave worden verwijderd, wilt u deze rijen normaal gesproken ook uit de zoekindex verwijderen. Als de rijen echter fysiek uit de tabel worden verwijderd, kan een index niet concluderen dat er records zijn die niet meer bestaan. De oplossing is het gebruik van een techniek voor voorlopig verwijderen om rijen logisch te verwijderen zonder ze uit de tabel te verwijderen. Voeg een kolom toe aan uw tabel of bekijk en markeer rijen als verwijderd met behulp van die kolom.

Op basis van een kolom die de verwijderingsstatus biedt, kan een indexeerfunctie worden geconfigureerd om alle zoekdocumenten te verwijderen waarvoor de verwijderingsstatus is ingesteld true. De configuratie-eigenschap die dit gedrag ondersteunt, is een beleid voor het detecteren van gegevensverwijdering, dat als volgt is opgegeven in de definitie van de gegevensbron :

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

De softDeleteMarkerValue moet een tekenreeks zijn. Als u bijvoorbeeld een kolom met gehele getallen hebt waarin verwijderde rijen zijn gemarkeerd met de waarde 1, gebruikt u "1". Als u een BIT kolom hebt waarin verwijderde rijen zijn gemarkeerd met de Booleaanse waarde waar, gebruikt u de letterlijke tekenreeks True of true (het geval maakt niet uit).

Volgende stappen

U kunt nu de indexeerfunctie uitvoeren, de status bewaken of de uitvoering van de indexeerfunctie plannen. De volgende artikelen zijn van toepassing op indexeerfuncties die inhoud ophalen uit Azure MySQL: