Freigeben über


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.

Screenshot des Fabric-Portals mit der Zielzonen-URL des Speicherorts auf der Startseite des gespiegelten Datenbankelements.

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 nach rowMarker).

    • RowMaker-Werte:
      • 0 für INSERT
      • 1 für UPDATE
      • 2 für DELETE
      • 4 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 und 00000000000000000002.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.

Nächster Schritt