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.
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 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 Vorgänge, die für synchronisierte Tabellen in Postgres zulässig sind.
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.
Hinweis
Quellen, die CDF nicht unterstützen (z. B. Ansichten, materialisierte Ansichten und Iceberg-Tabellen), können nur im Momentaufnahmemodus synchronisiert werden. Für den Snapshot-Modus muss die Quelle SELECT * unterstützen.
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).
Von Bedeutung
Spalten im Primärschlüssel dürfen in der synchronisierten Tabelle nicht null sein. Zeilen mit Nullen in Primärschlüsselspalten werden von der Synchronisierung ausgeschlossen.
(Optional) Wenn zwei Zeilen denselben Primärschlüssel in der Quelltabelle gemeinsam nutzen können, wählen Sie einen Timeseries-Schlüssel aus, um die Deduplizierung zu konfigurieren. Wenn ein Zeitserienschlüssel angegeben wird, enthält die synchronisierte Tabelle nur die Zeile mit dem neuesten Zeitserienschlüsselwert für jeden Primärschlüssel. Informationen zum Fehlermodus ohne Zeitserienschlüssel finden Sie unter "Doppelte Schlüssel".
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.
Python SDK
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import (
SyncedTable,
SyncedTableSyncedTableSpec,
SyncedTableSyncedTableSpecSyncedTableSchedulingPolicy,
)
w = WorkspaceClient()
synced_table = w.postgres.create_synced_table(
synced_table=SyncedTable(spec=SyncedTableSyncedTableSpec(
source_table_full_name="main.sales.orders",
branch="projects/my-project/branches/production",
primary_key_columns=["order_id"],
scheduling_policy=SyncedTableSyncedTableSpecSyncedTableSchedulingPolicy.SNAPSHOT,
postgres_database="mydb",
create_database_objects_if_missing=True,
)),
synced_table_id="my-catalog.sales.orders",
).wait()
print(f"Synced table created: {synced_table.name}")
Das synced_table_id nutzt das Format catalog.schema.table und wird zum synchronisierten Tabellennamen des Unity Catalog. In Postgres wird die Tabelle {table} im Schema {schema} erstellt, in der Datenbank, die Sie mit postgres_database festgelegt haben (hier, mydb).
Java SDK
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;
import java.util.List;
WorkspaceClient w = new WorkspaceClient();
SyncedTable syncedTable = w.postgres().createSyncedTable(
new CreateSyncedTableRequest()
.setSyncedTableId("my-catalog.sales.orders")
.setSyncedTable(new SyncedTable()
.setSpec(new SyncedTableSyncedTableSpec()
.setSourceTableFullName("main.sales.orders")
.setBranch("projects/my-project/branches/production")
.setPrimaryKeyColumns(List.of("order_id"))
.setSchedulingPolicy(SyncedTableSyncedTableSpecSyncedTableSchedulingPolicy.SNAPSHOT)
.setPostgresDatabase("mydb")
.setCreateDatabaseObjectsIfMissing(true))))
.waitForCompletion();
System.out.println("Synced table created: " + syncedTable.getName());
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",
"branch": "projects/my-project/branches/production",
"primary_key_columns": ["order_id"],
"scheduling_policy": "SNAPSHOT",
"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".
Ü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.
Python SDK
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
table = w.postgres.get_synced_table("synced_tables/my-catalog.sales.orders")
print(f"State: {table.status.detailed_state}")
print(f"Last sync: {table.status.last_sync_time}")
print(f"Message: {table.status.message}")
Java SDK
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.SyncedTable;
WorkspaceClient w = new WorkspaceClient();
SyncedTable table = w.postgres().getSyncedTable("synced_tables/my-catalog.sales.orders");
System.out.println("State: " + table.getStatus().getDetailedState());
System.out.println("Last sync: " + table.getStatus().getLastSyncTime());
System.out.println("Message: " + table.getStatus().getMessage());
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
- Der erste Fehler tritt auf, wenn ein NULL-Byte in einer Top-Level-Zeichenfolgenspalte angezeigt wird, die direkt Postgres
TEXTzugeordnet ist. - Der zweite Fehler tritt auf, wenn in einer Zeichenfolge, die in einen komplexen Typ (
STRUCT,ARRAYoderMAP) eingebettet ist, ein Null-Byte vorkommt, der alsJSONBserialisiert wird. Während der Serialisierung werden alle Zeichenfolgen in PostgresTEXTumgewandelt, wo\u0000nicht zulässig ist.
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.
- Full-Refresh-Größe: Beim Auslösen einer vollständigen Aktualisierung wird die alte Version in Postgres erst gelöscht, wenn die neue Synchronisierung abgeschlossen ist. Beide Versionen zählen vorübergehend zum Grenzwert für die Größe der logischen Datenbank während der Aktualisierung.
- Tabellen pro Quelle: Eine einzelne Quelltabelle kann bis zu 20 synchronisierte Tabellen aufweisen.
-
Benennungsanforderungen: Datenbank-, Schema- und Tabellennamen dürfen nur alphanumerische Zeichen und Unterstriche (
[A-Za-z0-9_]+) enthalten. - Quellbezeichnerleitfaden: Vermeiden Sie die Verwendung von Großbuchstaben oder Sonderzeichen in Spalten- oder Tabellennamen in der Unity-Quelltabelle. Wenn Sie sie beibehalten, müssen Sie diese Bezeichner zitieren, wenn Sie sie in Postgres referenzieren.
- Schemaentwicklung: Nur additive Schemaänderungen (z. B. das Hinzufügen von Spalten) werden für triggered- und Continuous-Modi unterstützt.
- Doppelte Schlüssel: Wenn zwei Zeilen denselben Primärschlüssel in der Quelltabelle aufweisen, schlägt die Synchronisierungspipeline fehl, es sei denn, Sie konfigurieren die Deduplizierung mithilfe eines Zeitserienschlüssels.
- API-Idempotenz: APIs für synchronisierte Tabellen sind idempotent. Versuchen Sie es daher bei vorübergehenden Fehlern erneut, um eine rechtzeitige Ausführung sicherzustellen.
- Aktualisierungsrate: Für die automatische Skalierung der Lakebase-Synchronisierungspipeline werden 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 unterstützt.
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.
Besitz und Berechtigungen
Wenn Sie eine neue Postgres-Datenbank, ein neues Schema oder eine neue Tabelle erstellen, wird der Besitz von Postgres wie folgt festgelegt:
- Der Besitz wird dem Benutzer zugewiesen, der die Datenbank, das Schema oder die Tabelle erstellt, wenn seine Azure Databricks-Anmeldung als Rolle in Postgres vorhanden ist. Informationen zum Hinzufügen einer Azure Databricks Identitätsrolle in Postgres finden Sie unter Postgres-Rollen.
- Andernfalls wird das Eigentum dem Besitzer des übergeordneten Objekts in Postgres zugewiesen (typischerweise der/dem/den
databricks_superuser).
Verwalten des synchronisierten Tabellenzugriffs
Nachdem eine synchronisierte Tabelle erstellt wurde, kann databricks_superuser eine synchronisierte Tabelle aus Postgres lesen. Der databricks_superuser besitzt pg_read_all_data, wodurch diese Rolle von allen Tabellen lesen kann. Außerdem verfügt sie über die pg_write_all_data Berechtigung, die es dieser Rolle erlaubt, in alle Tabellen zu schreiben. Dies bedeutet, dass ein databricks_superuser auch in eine synchronisierte Tabelle in Postgres schreiben kann. Lakebase unterstützt dieses Schreibverhalten, falls Sie dringende Änderungen an Ihrer Zieltabelle vornehmen müssen. Azure Databricks empfiehlt jedoch, stattdessen Korrekturen in der Quelltabelle vorzunehmen.
Dies
databricks_superuserkann auch anderen Benutzern berechtigungen gewähren:GRANT USAGE ON SCHEMA synced_table_schema TO user;GRANT SELECT ON synced_table_name TO user;databricks_superuserkann diese Berechtigungen widerrufen:REVOKE USAGE ON SCHEMA synced_table_schema FROM user;REVOKE {SELECT | INSERT | UPDATE | DELETE} ON synced_table_name FROM user;
Verwalten von synchronisierten Tabellenvorgängen
Die databricks_superuser Kann verwalten, welche Benutzer berechtigt sind, bestimmte Vorgänge für eine synchronisierte Tabelle auszuführen. Die unterstützten Vorgänge für synchronisierte Tabellen sind:
CREATE INDEXALTER INDEXDROP INDEXDROP TABLE
Alle anderen DDL-Vorgänge werden für synchronisierte Tabellen verweigert.
Um diese Berechtigungen zusätzlichen Benutzern zu gewähren, muss databricks_superuser zuerst eine Erweiterung für databricks_auth erstellen.
CREATE EXTENSION IF NOT EXISTS databricks_auth;
Anschließend kann ein databricks_superuser Benutzer zum Verwalten einer synchronisierten Tabelle hinzugefügt werden:
SELECT databricks_synced_table_add_manager('"synced_table_schema"."synced_table"'::regclass, '[user]');
Der databricks_superuser kann einen Benutzer von der Verwaltung einer synchronisierten Tabelle entfernen.
SELECT databricks_synced_table_remove_manager('[table]', '[user]');
databricks_superuser kann alle Vorgesetzten anzeigen:
SELECT * FROM databricks_synced_table_managers;
Löschen einer synchronisierten Tabelle
Durch das Löschen einer synchronisierten Tabelle aus dem Unity-Katalog wird auch die entsprechende Postgres-Tabelle gelöscht.
Benutzeroberfläche
Suchen Sie im Katalog ihre synchronisierte Tabelle, klicken Sie auf das Menü, und wählen Sie "Löschen" aus.
Python SDK
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.postgres.delete_synced_table("synced_tables/my-catalog.sales.orders").wait()
Java SDK
import com.databricks.sdk.WorkspaceClient;
WorkspaceClient w = new WorkspaceClient();
w.postgres().deleteSyncedTable("synced_tables/my-catalog.sales.orders").waitForCompletion();
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}"
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.