Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Lakebase Autoscaling ist die neueste Version von Lakebase mit automatischer Berechnung, Skalierung bis Null, Verzweigung und sofortiger Wiederherstellung. Unterstützte Regionen finden Sie unter "Verfügbarkeit der Region". Wenn Sie ein Lakebase Provisioned-Benutzer sind, lesen Sie Lakebase Provisioned.
Mit synchronisierten Tabellen können Sie Lakehouse-Daten über Lakebase Postgres bedienen. Unity Catalog-Tabellen werden in Postgres synchronisiert, sodass Anwendungen Lakehouse-Daten direkt mit geringer Latenz abfragen können. Dieser Prozess wird häufig als Reverse ETL bezeichnet. Das Lakehouse ist für Analysen und Anreicherung optimiert, während Lakebase für operative Workloads konzipiert ist, die schnelle Suchabfragen und transaktionsbezogene Konsistenz erfordern.
Was sind synchronisierte Tabellen?
Mit synchronisierten Tabellen können Sie Analysedaten aus dem Unity-Katalog über Lakebase Postgres bereitstellen und anwendungen zur Verfügung stellen, die Abfragen mit geringer Latenz (Sub-10 ms) und vollständige ACID-Transaktionen benötigen. Sie überbrücken die Lücke zwischen analytischen Speicher- und operativen Systemen, indem Ihre Daten für Echtzeitanwendungen bereit gehalten werden.
Unterstützte Quellen
Synchronisierte Tabellen unterstützen die folgenden Unity Catalog-Quelltypen:
- Verwaltete und externe Delta-Tabellen
- Verwaltete und externe Iceberg-Tabellen
- Ansichten und materialisierte Ansichten
So funktioniert es
Mit synchronisierten Tabellen von Databricks wird eine verwaltete Kopie Ihrer Unity-Katalogdaten in Lakebase erstellt. Wenn Sie eine synchronisierte Tabelle erstellen, erhalten Sie Folgendes:
- Eine synchronisierte Tabelle im Unity-Katalog, die auf die Synchronisierungspipeline verweist
- Eine Postgres-Tabelle in Lakebase (schreibgeschützt, von Ihren Anwendungen abfragbar)
Sie können beispielsweise Goldtabellen, technische Features oder ML-Ausgaben aus analytics.gold.user_profiles in eine neue synchronisierte Tabelle analytics.gold.user_profiles_synced synchronisieren. In Postgres wird der Schemaname des Unity-Katalogs zum Namen des Postgres-Schemas, sodass dies als gold.user_profiles_synced erscheint:
SELECT * FROM gold.user_profiles_synced WHERE user_id = 12345;
Anwendungen verbinden sich mit standardmäßigen Postgres-Treibern und fragen die synchronisierten Daten zusammen mit ihrem eigenen Betriebszustand ab.
Warnung
Obwohl es möglich ist, eine synchronisierte Tabelle direkt in Postgres zu ändern, empfiehlt Azure Databricks streng, nur Leseabfragen auszuführen, um die Datenintegrität mit der Quelle zu schützen. Unterstützte Vorgänge für synchronisierte Tabellen finden Sie unter "Unterstützte Vorgänge".
Synchronisierungspipelinen verwenden verwaltete Lakeflow Spark Declarative Pipelines, um sowohl die synchronisierte Tabelle Unity Catalog als auch die Postgres-Tabelle mit Änderungen aus der Quelltabelle kontinuierlich zu aktualisieren. Jede Synchronisierung kann bis zu 16 Verbindungen mit Ihrer Lakebase-Datenbank verwenden.
Lakebase Postgres unterstützt bis zu 1.000 gleichzeitige Verbindungen mit Transaktionsgarantien, sodass Anwendungen erweiterte Daten lesen und gleichzeitig Einfügungen, Aktualisierungen und Löschungen in derselben Datenbank verarbeiten können.
Synchronisierungsmodi
Wählen Sie den richtigen Synchronisierungsmodus basierend auf Ihren Anwendungsanforderungen aus:
| Modus | Beschreibung | Wann verwenden | Leistung |
|---|---|---|---|
| Momentaufnahme | Einmalige Kopie aller Daten | Änderungen an der Quelle >10% der Zeilen pro Zyklus oder die Quelle unterstützt CDF (Ansichten, Iceberg-Tabellen) nicht. | 10x effizienter, wenn 10% der Quelldaten geändert >werden |
| Ausgelöst | Geplante Updates, die bei Bedarf oder in Intervallen ausgeführt werden | Quellzeilen ändern sich in einem bekannten Rhythmus. Einfügungen, Aktualisierungen und Löschungen werden bei jedem Refresh weitergegeben. | Gute Kosten-/Verzögerungsbilanz. Teuer, wenn Intervalle von 5 Minuten ausgeführt werden< |
| Stetig | Echtzeitstreaming mit Sekunden Latenz | Änderungen müssen in Lakebase in nahezu Echtzeit angezeigt werden | Niedrigste Verzögerung, höchste Kosten. Mindestintervalle von 15 Sekunden |
Für ausgelöste und fortlaufende Modi ist die Aktivierung des Änderungsdatenfeeds (CDF) in der Quelltabelle erforderlich. Wenn CDF nicht aktiviert ist, wird in der Benutzeroberfläche eine Warnung mit dem genauen ALTER TABLE Auszuführenden Befehl angezeigt. Weitere Informationen zum Änderungsdatenfeed finden Sie unter Delta Lake-Änderungsdatenfeed auf Databricks verwenden.
Beispielanwendungsfälle
Sie können synchronisierte Tabellen für datenbezogene Anwendungsfälle wie
- Personalisierungsmodule, die neue Benutzerprofile für Databricks-Apps bereitstellen
- Anwendungen, die Modellvorhersagen oder Featurewerte bereitstellen, die im Lakehouse berechnet wurden.
- Kundenorientierte Dashboards, die KPIs in Echtzeit bedienen
- Betrugserkennungsdienste, die Risikobewertungen für sofortige Maßnahmen bereitstellen
- Supporttools, die angereicherte Kundendatensätze aus Lakehouse-Daten bedienen
Erstellen einer synchronisierten Tabelle
Voraussetzungen
Sie benötigen:
- Ein Databricks-Arbeitsbereich mit aktivierter Lakebase.
- Ein Lakebase-Projekt (siehe Erstellen eines Projekts).
- Eine Unity-Katalog-Tabelle zum Synchronisieren.
- Berechtigungen zum Erstellen synchronisierter Tabellen. Sie benötigen USE_SCHEMA und CREATE_TABLE für jedes schema, das Sie verwenden.
Für den Triggered-Modus oder den Continuous-Modus muss "Change Data Feed" in der Quelltabelle aktiviert sein.
ALTER TABLE your_catalog.your_schema.your_table
SET TBLPROPERTIES (delta.enableChangeDataFeed = true)
Informationen zur Kapazitätsplanung und Datentypkompatibilität finden Sie unter Datentypen und Kompatibilität und Kapazitätsplanung.
Benutzeroberfläche
Wechseln Sie in der Arbeitsbereichs-Randleiste zu "Katalog ", und wählen Sie die Unity-Katalogtabelle aus, die Sie synchronisieren möchten.
Klicken Sie in der Tabellendetailseite auf ">Synchronisierte Tabelle erstellen".
Im Dialogfeld "Synchronisierte Tabelle erstellen ":
Die Katalog- und Schemalisten enthalten nur Unity-Katalogschemas, bei denen der aktuelle Benutzer über USE_SCHEMA und CREATE_TABLE Berechtigungen verfügt. Wenn kein von Ihnen erwartetes Schema angezeigt wird, bestätigen Sie Ihre Berechtigungen mit Ihrem Katalogadministrator.
- Tabellenname: Geben Sie einen Namen für Ihre synchronisierte Tabelle ein (sie wird im selben Katalog und Schema wie die Quelltabelle erstellt). Dadurch wird sowohl eine synchronisierte Unity-Katalogtabelle als auch eine Postgres-Tabelle erstellt, die Sie abfragen können.
- Datenbanktyp: Wählen Sie Lakebase Serverless (Autoscaling) aus.
- Synchronisierungsmodus: Wählen Sie "Momentaufnahme", " Ausgelöst" oder " Fortlaufend" basierend auf Ihren Anforderungen aus (siehe Synchronisierungsmodi oben).
- Konfigurieren Sie Ihre Projekt-, Verzweigungs- und Datenbankoptionen.
- Überprüfen Sie, ob der Primärschlüssel korrekt ist (in der Regel automatisch erkannt).
Wenn Sie den Modus "Ausgelöst" oder "Fortlaufend" ausgewählt haben und den Change Data Feed noch nicht aktiviert haben, wird eine Warnung mit dem genauen auszuführenden Befehl angezeigt. Informationen zur Kompatibilität von Datentypen finden Sie unter Datentypen und Kompatibilität.
Klicken Sie auf "Erstellen ", um die synchronisierte Tabelle zu erstellen.
Überwachen Sie die synchronisierte Tabelle im Katalog. Auf der Registerkarte " Übersicht " werden der Synchronisierungsstatus, die Konfiguration, der Pipelinestatus und der Zeitstempel der letzten Synchronisierung angezeigt. Verwenden Sie "Jetzt synchronisieren " für die manuelle Aktualisierung.
cURL
curl -X POST "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables?synced_table_id=my-catalog.sales.orders" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"spec": {
"source_table_full_name": "main.sales.orders",
"project": "projects/my-project",
"branch": "projects/my-project/branches/production",
"primary_key_columns": ["order_id"],
"scheduling_policy": "TRIGGERED",
"postgres_database": "mydb",
"create_database_objects_if_missing": true
}
}'
Dies gibt einen lang andauernden Vorgang zurück. Abrufen des zurückgegebenen Felds name bis done: true. Siehe Lang andauernde Vorgänge. Informationen zum Einrichten der Authentifizierung finden Sie unter "Authentifizierung".
Planen oder Auslösen von nachfolgenden Synchronisierungen
Die erste Momentaufnahme wird beim Erstellen automatisch ausgeführt. Für Snapshot und Trigger-Modus müssen nachfolgende Synchronisierungen explizit ausgelöst werden. Kontinuierlicher Modus ist selbstverwaltend.
Pipeline-Aufgabe zur Synchronisierung von Datenbanktabellen
Die Aufgabe "Synchronisierung der Datenbanktabelle" in Lakeflow Jobs führt die Pipeline einer synchronisierten Tabelle als Workflowschritt aus. Konfigurieren Sie den Auftrag mit einem Tabellenaktualisierungstrigger oder einem Zeitplan.
Trigger für Quelltabellenaktualisierungen
Löst den Auftrag aus, wenn die Unity-Quelltabelle aktualisiert wird. Mit dem Trigger-Modus werden nur neue Änderungen inkrementell angewendet, sodass die Daten in nahezu Echtzeit aktualisiert werden können, ohne die always-on-Kosten des kontinuierlichen Modus.
- Klicken Sie in der Randleiste auf "Workflows".
- Klicken Sie auf " Auftrag erstellen ", oder öffnen Sie einen vorhandenen Auftrag.
- Klicken Sie auf der Registerkarte "Aufgaben " auf +Einen anderen Vorgangstyp hinzufügen.
- Wählen Sie unter "Aufnahme" und "Transformation" die Pipeline "Datenbanktabellensynchronisierung" aus.
- Wählen Sie im Feld "Pipeline " die Pipeline aus, die Ihrer synchronisierten Tabelle zugeordnet ist.
- Klicken Sie unter "Zeitpläne und Trigger" auf "Trigger hinzufügen".
- Wählen Sie "Tabelle aktualisieren" als Triggertyp aus.
- Wählen Sie unter "Tabellen" die zu überwachende Quelltabelle des Unity-Katalogs aus.
- Klicke auf Speichern.
Auslösen nach Zeitplan
Führt die Synchronisierung in einem festen Rhythmus aus. Gut geeignet für den Snapshot-Modus , bei dem eine nächtliche oder wöchentliche vollständige Aktualisierung in der Regel das effizienteste Muster ist.
- Führen Sie die oben beschriebenen Schritte 1 bis 5 aus, um einem Auftrag eine Pipelineaufgabe für die Datenbanktabellensynchronisierung hinzuzufügen.
- Klicken Sie unter "Zeitpläne und Trigger" auf "Trigger hinzufügen".
- Wählen Sie "Geplant" als Triggertyp aus.
- Legen Sie Ihren Cron-Zeitplan und die Zeitzone fest, und klicken Sie dann auf "Speichern".
Programmgesteuertes Auslösen einer Synchronisierungsausführung
Programmgesteuertes Auslösen einer Synchronisierungsausführung, z. B. am Ende eines upstream-Notizbuchs oder einer Pipeline:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Get the pipeline ID from the synced table
table = w.postgres.get_synced_table("synced_tables/my-catalog.sales.orders")
pipeline_id = table.status.pipeline_id
# Trigger a sync run
w.pipelines.start_update(pipeline_id=pipeline_id)
Überprüfen des Synchronisierungsstatus
So überprüfen Sie den aktuellen Zustand und die uhrzeit der letzten Synchronisierung einer synchronisierten Tabelle:
Benutzeroberfläche
Navigieren Sie im Katalog zu Ihrer synchronisierten Tabelle, und wählen Sie die Registerkarte "Übersicht " aus. Er zeigt den aktuellen Synchronisierungsstatus, den Pipelinestatus und den zeitstempel der letzten Synchronisierung an.
cURL
curl "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables/my-catalog.sales.orders" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}"
Datentypen und Kompatibilität
Unity Catalog-Datentypen werden beim Erstellen synchronisierter Tabellen den Postgres-Typen zugeordnet. Komplexe Typen (ARRAY, MAP, STRUCT) werden als JSONB in Postgres gespeichert.
| Quellspaltentyp | Postgres-Spaltentyp |
|---|---|
| BIGINT | BIGINT |
| BINÄR | BYTEA |
| BOOLEAN | BOOLEAN |
| DATE | DATE |
| DEZIMAL(p;s) | NUMERISCH |
| DOUBLE | DOPPELTE GENAUIGKEIT |
| FLOAT | Echt |
| INT | INTEGER |
| INTERVAL | INTERVAL |
| SMALLINT | SMALLINT |
| STRING | TEXT |
| TIMESTAMP | ZEITSTEMPEL MIT ZEITZONE |
| TIMESTAMP_NTZ | TIMESTAMP OHNE ZEITZONE |
| TINYINT | SMALLINT |
| Array-Elementtyp<> | JSONB |
| MAP<Schlüsseltyp, Werttyp> | JSONB |
| STRUCT<fieldName:fieldType[, ...]> | JSONB |
Hinweis
Geography-, Geometry-, Variant- und Object-Typen werden nicht unterstützt.
Behandeln ungültiger Zeichen
Bestimmte Zeichen wie Nullbytes (0x00) sind in Unity Catalog STRING-, ARRAY-, MAP- oder STRUCT-Spalten zulässig, werden jedoch in Postgres TEXT- oder JSONB-Spalten nicht unterstützt. Dies kann zu Synchronisierungsfehlern wie folgenden führen:
ERROR: invalid byte sequence for encoding "UTF8": 0x00
ERROR: unsupported Unicode escape sequence DETAIL: \u0000 cannot be converted to text
Lösungen :
Löschen sie Zeichenfolgenfelder: Entfernen Sie nicht unterstützte Zeichen vor der Synchronisierung. Für Nullbytes in STRING-Spalten:
SELECT REPLACE(column_name, CAST(CHAR(0) AS STRING), '') AS cleaned_column FROM your_tableIn BINÄR konvertieren: Für STRING-Spalten, bei denen die Beibehaltung von unformatierten Bytes erforderlich ist, konvertieren Sie in DEN BINÄR-Typ.
Kapazitätsplanung
Berücksichtigen Sie bei der Planung der Implementierung synchronisierter Tabellen die folgenden Ressourcenanforderungen:
- Verbindungsverwendung: Jede synchronisierte Tabelle verwendet bis zu 16 Verbindungen mit Ihrer Lakebase-Datenbank, die zum Verbindungslimit der Instanz zählen.
- Größenbeschränkungen: Die maximale Größe der logischen Daten in allen synchronisierten Tabellen beträgt 8 TB. Einzelne Tabellen haben keine Grenzwerte, jedoch empfiehlt Databricks, 1 TB für Tabellen, die Aktualisierungen erfordern, nicht zu überschreiten.
-
Benennungsanforderungen: Datenbank-, Schema- und Tabellennamen dürfen nur alphanumerische Zeichen und Unterstriche (
[A-Za-z0-9_]+) enthalten. - Schemaentwicklung: Nur additive Schemaänderungen (z. B. das Hinzufügen von Spalten) werden für triggered- und Continuous-Modi unterstützt.
- Aktualisierungsrate:: Für die automatische Skalierung der Lakebase-Synchronisierungspipeline unterstützt fortlaufende und ausgelöste Schreibvorgänge mit ca. 150 Zeilen pro Sekunde pro Kapazitätseinheit (CU) und Snapshot-Schreibvorgänge mit bis zu 2.000 Zeilen pro Sekunde pro CU.
Vorgänge, die für synchronisierte Tabellen in Postgres zulässig sind
Azure Databricks empfiehlt, nur die folgenden Vorgänge in Postgres für synchronisierte Tabellen auszuführen, um versehentliche Überschreibungen oder Dateninkonsistenzen zu verhindern:
- Schreibgeschützte Abfragen
- Erstellen von Indizes
- Ablegen der Tabelle (zum Freigeben von Speicherplatz nach dem Entfernen der synchronisierten Tabelle aus dem Unity-Katalog)
Während es möglich ist, synchronisierte Tabellen in Postgres auf andere Weise zu ändern, stört es die Synchronisierungspipeline.
Löschen einer synchronisierten Tabelle
Um eine synchronisierte Tabelle zu löschen, müssen Sie die beiden folgenden Schritte ausführen.
Schritt 1: Aus Unity-Katalog entfernen
Dadurch werden Die Datenaktualisierungen beendet, aber die Postgres-Tabelle bleibt vorhanden.
Benutzeroberfläche
Suchen Sie im Katalog ihre synchronisierte Tabelle, klicken Sie auf das Menü, und wählen Sie "Löschen" aus.
cURL
curl -X DELETE "https://your-workspace.cloud.databricks.com/api/2.0/postgres/synced_tables/my-catalog.sales.orders" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}"
Schritt 2: Ablegen von Postgres
Stellen Sie eine Verbindung mit Ihrer Lakebase-Datenbank her, und legen Sie die Tabelle ab, um Speicherplatz freizugeben:
DROP TABLE your_database.your_schema.your_table;
Sie können den SQL-Editor oder externe Tools verwenden, um eine Verbindung mit Postgres herzustellen.
Weitere Informationen
| Aufgabe | Beschreibung |
|---|---|
| Erstellen eines Projekts | Einrichten eines Lakebase-Projekts |
| Herstellen einer Verbindung mit Ihrer Datenbank | Informationen zu Verbindungsoptionen für Lakebase |
| Registrieren der Datenbank im Unity-Katalog | Machen Sie Ihre Lakebase-Daten im Unity-Katalog für einheitliche Governance- und quellübergreifende Abfragen sichtbar |
| Integration des Unity-Katalogs | Grundlegendes zu Governance und Berechtigungen |
Katalogintegration
- Katalogduplizierung: Das Erstellen einer synchronisierten Tabelle in einem Standardkatalog für eine Postgres-Datenbank, die auch als separater Datenbankkatalog registriert ist, bewirkt, dass die synchronisierte Tabelle im Unity-Katalog sowohl im Standard- als auch im Datenbankkatalog angezeigt wird.
Weitere Optionen
Informationen zu Möglichkeiten, Daten in Nicht-Databricks-Systeme zu synchronisieren, finden Sie unter Partner Connect "reverse ETL"-Lösungen wie Census oder Hightouch.