Anforderungen und Format der Zielzone für die offene Spiegelung
In diesem Artikel werden die Anforderungen für die Zielzone und die Tabellen-/Spaltenvorgänge zur offenen Spiegelung in Microsoft Fabric beschrieben.
Wichtig
Dieses Feature befindet sich in der Vorschauphase.
Nachdem Sie Ihre offen gespiegelte Datenbank über das Fabric-Portal oder die öffentliche API in Ihrem Fabric-Arbeitsbereich erstellt haben, erhalten Sie in OneLake auf der Startseite des gespiegelten Datenbankelements eine Zielzonen-URL. Diese Zielzone ist der Speicherort, an dem Ihre Anwendung eine Metadatendatei erstellt und wohin sie Daten im Parquet-Format (unkomprimiert, Snappy, GZIP, ZSTD) überträgt.
Zielzone
Für jede gespiegelte Datenbank gibt es einen eindeutigen Speicherort in OneLake für Metadaten und Delta-Tabellen. Eine offene Spiegelung stellt einen Zielzonenordner für die Anwendung bereit, um dort eine Metadatendatei zu erstellen und Daten in OneLake zu übertragen. Die Spiegelung überwacht diese Dateien in der Zielzone und liest den Ordner für neue Tabellen und hinzugefügte Daten.
Wenn Sie beispielsweise Tabellen (Table A
, Table B
, Table C
) in der Zielzone erstellen möchten, erstellen Sie Ordner wie die folgenden URLs:
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
Metadatendatei in der Zielzone
Jeder Tabellenordner muss eine _metadata.json
-Datei enthalten.
Diese Tabellenmetadatendatei enthält einen JSON-Eintrag, um gegenwärtig nur die eindeutigen Schlüsselspalten als keyColumns
anzugeben.
Hier ein Beispiel, um die Spalten C1
und C2
als zusammengesetzten eindeutigen Schlüssel für die Tabelle zu deklarieren:
{
"keyColumns": ["C1", "C2"],
}
Wenn keyColumns
oder _metadata.json
nicht angegeben wird, sind Aktualisierungen/Löschungen nicht möglich. Diese Datei kann jederzeit hinzugefügt werden, kann aber nach dem Hinzufügen von keyColumns
nicht mehr geändert werden.
Datendatei und -format in der Zielzone
Offene Spiegelung unterstützt Parquet mit oder ohne Komprimierung als Zielzonendateiformat. Unterstützte Komprimierungsformate sind Snappy, GZIP und ZSTD.
Alle in die Zielzone geschriebenen Parquet-Dateien weisen das folgende Format auf:
<RowMarker><DataColumns>
RowMarker
: Der Spaltenname lautet__rowMarker__
(einschließlich zweier Unterstriche vor und nachrowMarker
).RowMaker
-Werte:0
für INSERT1
für UPDATE2
für DELETE4
für UPSERT
Zeilenreihenfolge: Alle Protokolle in der Datei sollten in natürlicher Reihenfolge wie bei der Transaktion angewendet werden. Dies ist wichtig für dieselbe Zeile, die mehrmals aktualisiert wird. Die offene Spiegelung wendet die Änderungen unter Verwendung der Reihenfolge in den Dateien an.
Dateireihenfolge: Dateien sollten in stetig steigenden Zahlen hinzugefügt werden.
Dateiname: Der Dateiname hat 20 Ziffern, z. B.
00000000000000000001.parquet
für die erste und00000000000000000002.parquet
für die zweite Datei. Dateinamen sollten aus fortlaufenden Zahlen bestehen. Dateien werden automatisch vom Spiegelungsdienst gelöscht, die letzte Datei bleibt jedoch erhalten, sodass das Herausgebersystem darauf verweisen kann, um die nächste Datei in der Sequenz hinzuzufügen.
Anfängliches Laden
Für das anfängliche Laden von Daten in eine offene gespiegelte Datenbank sollten alle Zeilen „INSERT“ als Zeilenmarkierung haben. Ohne RowMarker
-Daten in einer Datei behandelt die Spiegelung die gesamte Datei als INSERT.
Inkrementelle Änderungen
Beim Öffnen der Spiegelung werden inkrementelle Änderungen nacheinander gelesen und auf die Delta-Zieltabelle angewendet. Die Reihenfolge ist im Änderungsprotokoll und in der Reihenfolge der Dateien implizit.
Aktualisierte Zeilen müssen die vollständigen Zeilendaten mit allen Spalten enthalten.
Hier sind einige beispielhafte Parquet-Dateien des Zeilenverlaufs, um EmployeeLocation
für EmployeeID
E0001 von Redmond in Bellevue zu ändern. In diesem Szenario wurde die Spalte EmployeeID
in der Metadatendatei in der Zielzone als Schlüsselspalte markiert.
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Redmond
0,E0002,Redmond
0,E0003,Redmond
1,E0001,Bellevue
Wenn Schlüsselspalten aktualisiert werden, sollten sie von einem DELETE in vorangehenden Schlüsselspalten und einer INSERT-Zeile mit neuem Schlüssel und Daten übergeben werden. Beispielsweise ändert der Zeilenverlauf den eindeutigen Bezeichner RowMarker
für EmployeeID
E0001 in E0002. Sie müssen nicht alle Spaltendaten für eine DELETE-Zeile bereitstellen, sondern nur die Schlüsselspalten.
__rowMarker__,EmployeeID,EmployeeLocation
0,E0001,Bellevue
2,E0001,NULL
0,E0002,Bellevue
Tabellenvorgänge
Die offene Spiegelung unterstützt Tabellenvorgänge wie das Hinzufügen, Löschen und Umbenennen von Tabellen.
Tabelle hinzufügen
Die offene Spiegelung nimmt beliebige Tabellen auf, die von der Anwendung zur Zielzone hinzugefügt wird. Die offene Spiegelung sucht bei jeder Iteration nach neuen Tabellen.
Löschen einer Tabelle
Die offene Spiegelung beobachtet den Ordnernamen. Wenn ein Tabellenordner gelöscht wird, löscht die Spiegelung die Tabelle in der gespiegelten Datenbank.
Wenn ein Ordner neu erstellt wird, löscht die offene Spiegelung die Tabelle und erstellt sie mit den neuen Daten im Ordner neu. Dies geschieht durch die Nachverfolgung des ETags für den Ordner.
Wenn Sie versuchen, eine Tabelle zu löschen, können Sie versuchen, den Ordner zu löschen. Es besteht jedoch die Möglichkeit, dass die offene Spiegelung weiterhin die Daten aus dem Ordner verwendet, was für den Herausgeber zu einem Löschfehler führt.
Umbenennen von Tabellen
Um eine Tabelle umzubenennen, löschen Sie den Ordner und erstellen ihn dann mit anfänglichen und inkrementellen Daten neu. Die umbenannte Tabelle muss dann erneut mit den Daten aufgefüllt werden.
Schema
Ein Tabellenpfad kann in einem Schemaordner angegeben werden. Eine Schemazielzone sollte einen <schemaname>.schema
-Ordnernamen aufweisen. Es können mehrere Schemas und mehrere Tabellen in einem Schema vorhanden sein.
Wenn Sie beispielsweise Schemas (Schema1
, Schema2
) und Tabellen (Table A
, Table B
, Table C
) in der Zielzone erstellen möchten, erstellen Sie Ordner wie die folgenden Pfade in 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
Tabellenspalten und Spaltenvorgänge
Typen von Spalten
- Einfache Parquet-Typen werden in der Zielzone unterstützt.
- Komplexe Typen sollten als JSON-Zeichenfolge geschrieben werden.
- Binäre komplexe Typen wie Geografie, Bilder usw. können als binärer Typ in der Zielzone gespeichert werden.
Spalte hinzufügen
Wenn zu den Parquet-Dateien neue Spalten hinzugefügt werden, fügt die offene Spiegelung die Spalten zu den Delta-Tabellen hinzu.
Spalte löschen
Wenn eine Spalte aus den neuen Protokolldateien gelöscht wird, speichert die offene Spiegelung NULL
für diese Spalten in neuen Zeilen, und alte Zeilen weisen die Spalten in den Daten auf. Um die Spalte zu löschen, löschen Sie die Tabelle und erstellen Sie den Tabellenordner in der Zielzone neu. Dies führt zur Neuerstellung der Delta-Tabelle mit neuen Schemas und Daten.
Offene Spiegelungen fügen grundsätzlich alle Spalten aus früheren Versionen hinzugefügter Daten zusammen. Um eine Spalte zu entfernen, erstellen Sie die Tabelle bzw. den Ordner neu.
Spaltentyp ändern
Wenn Sie einen Spaltentyp ändern möchten, löschen Sie den Ordner, und erstellen Sie ihn mit anfänglichen und inkrementellen Daten und dem neuen Spaltentyp neu. Wenn Sie einen neuen Spaltentyp bereitstellen, ohne die Tabelle neu zu erstellen, tritt ein Fehler auf, und die Replikation für diese Tabelle wird beendet. Nachdem der Tabellenordner neu erstellt wurde, wird die Replikation mit neuen Daten und neuem Schema fortgesetzt.
Spalte umbenennen
Um eine Spalte umzubenennen, löschen Sie den Tabellenordner und erstellen ihn mit allen Daten und dem neuen Spaltennamen neu.