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).
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 efterrowMarker
).RowMaker
värden:0
för INSERT1
för UPDATE2
för DELETE4
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 och00000000000000000002.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.