Dela via


Krav och format för öppna speglingslandningszoner

Den här artikeln beskriver kraven på landningszon- och tabell-/kolumnåtgärder för öppen spegling i Microsoft Fabric.

Viktigt!

Den här funktionen är i förhandsversion.

När du har skapat en öppen speglad databas via Fabric-portalen eller det offentliga API:et på din Infrastruktur-arbetsyta får du en URL för landningszonen i OneLake på startsidan för det speglade databasobjektet. Den här landningszonen är den plats där ditt program skapar en metadatafil och landar data i Parquet-format (okomprimerad, Snappy, GZIP, ZSTD).

Skärmbild från Infrastrukturportalen som visar platsen för landningszonens URL på startsidan för det speglade databasobjektet.

Landningszon

För varje speglad databas finns det en unik lagringsplats i OneLake för metadata och deltatabeller. Med öppen spegling finns en mapp för landningszoner där programmet kan skapa en metadatafil och skicka data till OneLake. Spegling övervakar dessa filer i landningszonen och läser mappen för nya tabeller och data som lagts till.

Om du till exempel har tabeller (Table A, Table B, Table C) som ska skapas i landningszonen skapar du mappar som följande URL:er:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/TableC

Metadatafil i landningszonen

Varje tabellmapp måste innehålla en _metadata.json fil.

Den här tabellmetadatafilen innehåller en JSON-post för att för närvarande endast ange de unika nyckelkolumnerna som keyColumns.

Om du till exempel vill deklarera kolumner C1 och C2 som en sammansatt unik nyckel för tabellen:

{
   "keyColumns" : ["C1", "C2"]
}

Om keyColumns eller _metadata.json inte har angetts går det inte att uppdatera/ta bort. Den här filen kan läggas till när som helst, men när den har lagts till keyColumns kan den inte ändras.

Datafil och format i landningszonen

Öppen spegling stöder Parquet som landningszonfilformat med eller utan komprimering. Komprimeringsformat som stöds är Snappy, GZIP och ZSTD.

Alla Parquet-filer som skrivits till landningszonen har följande format:

<RowMarker><DataColumns>

  • RowMarker: kolumnnamnet är __rowMarker__ (inklusive två understreck före och efter rowMarker).

    • RowMaker värden:
      • 0 för INSERT
      • 1 för UPDATE
      • 2 för DELETE
      • 4 för UPSERT
  • Radordning: Alla loggar i filen ska vara i naturlig ordning enligt vad som tillämpas i transaktionen. Detta är viktigt för samma rad som uppdateras flera gånger. Öppna spegling tillämpar ändringarna med hjälp av ordningen i filerna.

  • Filordning: Filer ska läggas till i monotont ökande tal.

  • Filnamn: Filnamnet är 20 siffror, till exempel 00000000000000000001.parquet för den första filen och 00000000000000000002.parquet för den andra. Filnamnen ska vara i kontinuerliga tal. Filer tas bort automatiskt av speglingstjänsten, men den sista filen lämnas så att utgivarsystemet kan referera till den för att lägga till nästa fil i följd.

Inledande inläsning

För den första inläsningen av data till en öppen speglad databas bör alla rader ha INSERT som radmarkör. Utan RowMarker data i en fil behandlar spegling hela filen som en INSERT.

Inkrementella ändringar

Öppna spegling läser inkrementella ändringar i ordning och tillämpar dem på Delta-måltabellen. Ordningen är implicit i ändringsloggen och i filernas ordning.

Uppdaterade rader måste innehålla fullständiga raddata, med alla kolumner.

Här är några exempelparquet-data i radhistoriken EmployeeLocation för att ändra för EmployeeID E0001 från Redmond till Bellevue. I det här scenariot EmployeeID har kolumnen markerats som en nyckelkolumn i metadatafilen i landningszonen.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue

Om nyckelkolumner uppdateras bör den visas av en DELETE på tidigare nyckelkolumner och en INSERT-rad med ny nyckel och data. Till exempel radhistoriken för att ändra den unika identifieraren RowMarker för EmployeeID E0001 till E0002. Du behöver inte ange alla kolumndata för en DELETE-rad, bara nyckelkolumnerna.

__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue

Tabellåtgärder

Öppna spegling stöder tabellåtgärder som att lägga till, släppa och byta namn på tabeller.

Lägg till tabell

Öppna spegling hämtar alla tabeller som läggs till i landningszonen av programmet. Öppna speglingssökningar efter nya tabeller i varje iteration.

Ta bort tabell

Öppna spegling håller reda på mappnamnet. Om en tabellmapp tas bort släpper öppna spegling tabellen i den speglade databasen.

Om en mapp återskapas släpper öppna spegling tabellen och återskapar den med nya data i mappen, vilket uppnås genom att spåra ETag för mappen.

När du försöker släppa en tabell kan du prova att ta bort mappen, men det finns en risk att öppen spegling fortfarande använder data från mappen, vilket orsakar ett borttagningsfel för utgivaren.

Byt namn på tabell

Om du vill byta namn på en tabell släpper och återskapar du mappen med inledande och inkrementella data. Data måste fyllas i igen i den omdöpta tabellen.

Schema

En tabellsökväg kan anges i en schemamapp. En schemalandningszon ska ha ett <schemaname>.schema mappnamn. Det kan finnas flera scheman och det kan finnas flera tabeller i ett schema.

Om du till exempel har scheman (Schema1, Schema2) och tabeller (Table A, Table B, Table C) som ska skapas i landningszonen skapar du mappar som följande sökvägar i OneLake:

  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableA
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema1.schema/TableB
  • https://onelake.dfs.fabric.microsoft.com/<workspace id>/<mirrored database id>/LandingZone/Schema2.schema/TableC

Tabellkolumner och kolumnåtgärder

Kolumntyper

  • Enkla parquettyper stöds i landningszonen.
  • Komplexa typer ska skrivas som en JSON-sträng.
  • Binära komplexa typer som geografi, bilder osv. kan lagras som binär typ i landningszonen.

Lägg till kolumn

Om nya kolumner läggs till i parquet-filerna lägger öppna spegling till kolumnerna i deltatabellerna.

Ta bort kolumn

Om en kolumn tas bort från de nya loggfilerna öppnar du speglingslager NULL för dessa kolumner i nya rader och gamla rader har kolumnerna i data. Om du vill ta bort kolumnen släpper du tabellen och skapar tabellmappen i landningszonen igen, vilket leder till att Delta-tabellen återskapas med nya scheman och data.

Öppna spegling genererar alltid alla kolumner från tidigare version av tillagda data. Om du vill ta bort en kolumn återskapar du tabellen/mappen.

Ändra kolumntyp

Om du vill ändra en kolumntyp släpper och återskapar du mappen med inledande och inkrementella data med den nya kolumntypen. Om du anger en ny kolumntyp utan att återskapa tabellen uppstår ett fel, och replikeringen för tabellen stoppas. När tabellmappen har återskapats återupptas replikeringen med nya data och scheman.

Byt namn på kolumn

Om du vill byta namn på en kolumn tar du bort tabellmappen och återskapar mappen med alla data och med det nya kolumnnamnet.

Gå vidare