Registrieren einer Lakebase-Datenbank im Unity-Katalog

Durch das Registrieren einer Lakebase-Datenbank im Unity-Katalog wird ein schreibgeschützter Katalog erstellt, der Ihre Postgres-Datenbank darstellt, wodurch einheitliche Datengovernance und quellübergreifende Analysen über Ihr Lakehouse und Transaktions-Workloads hinweg ermöglicht werden.

Gründe für die Registrierung im Unity-Katalog

Die Registrierung hat mehrere Vorteile:

Einheitliche Governance: Wenden Sie die Governance-Steuerelemente des Unity-Katalogs – Berechtigungen, Linienverfolgung und Überwachungsprotokolle – zusammen mit Ihren Lakehouse-Daten auf Ihre Lakebase-Daten an.

Quellübergreifende Abfragen: Abfragen von Unity-Katalogtabellen und Lakebase-Datenbanken aus einer einzigen SQL-Schnittstelle, wodurch Analysen ermöglicht werden, die transaktionsbezogene und analytische Daten kombinieren.

Zentrale Ermittlung: Suchen und Entdecken Sie Lakebase-Datenbanken, -Schemas und -Tabellen über den Katalog-Explorer zusammen mit anderen Datenquellen in Ihrem Arbeitsbereich.

Integrierte Workflows: Verwenden Sie Lakebase-Daten in Azure Databricks Dashboards und Anwendungen, ohne Kontext zu wechseln oder separate Verbindungen zu verwalten.

Funktionsweise

Bei der Registrierung wird ein schreibgeschützter Unity-Katalog erstellt, der Ihre Postgres-Datenbankstruktur widerspiegelt und Metadatenzugriff auf Ihre Datenbankobjekte (Schemas, Tabellen, Ansichten) über die Governanceebene von Unity Catalog bereitstellt.

Sie initiieren die Registrierung über den Katalog-Explorer und nicht über die Lakebase-Schnittstelle, die natürlich in den Katalogerstellungsworkflow von Unity-Katalog integriert wird.

Nach der Registrierung:

  • Ihre Lakebase-Datenbank wird als Katalog im Unity-Katalog angezeigt.
  • Unity Catalog-Berechtigungen bestimmen, wer die Datenbank anzeigen und abfragen kann.
  • Der Katalog bleibt schreibgeschützt – Sie verwalten die eigentliche Datenbank über Lakebase

Voraussetzungen

  • Ein vorhandenes Lakebase-Projekt mit mindestens einer Datenbank
  • CREATE CATALOG Berechtigungen für den Unity Catalog-Metastore
  • Ein Serverless SQL Warehouse zum Abfragen des registrierten Katalogs. Pro und Classic SQL Warehouses werden nicht unterstützt und geben einen Berechtigungsfehler zurück.

Important

Lakebase-Kataloge im Unity-Katalog erfordern ein Serverless SQL Warehouse. Die Abfrage mit einem Pro- oder Classic SQL Warehouse gibt einen PERMISSION_DENIED Fehler zurück. Öffnen Sie im SQL-Editor die Warehouse-Dropdownliste, und wählen Sie ein Serverless Warehouse aus, bevor Sie eine Abfrage ausführen.

Registrieren einer Datenbank

Benutzeroberfläche

  1. Verwenden Sie den App-Switcher, um zu Analytics und AI zu wechseln.
  2. Klicken Sie im Katalog-Explorer auf die Plusschaltfläche, und erstellen Sie einen Katalog.
  3. Geben Sie einen Katalognamen ein (z. B lakebase_catalog. ).
  4. Wählen Sie Lakebase Postgres als Katalogtyp aus, und wählen Sie dann die Option "Automatische Skalierung " aus.
  5. Wählen Sie Ihr Projekt, Ihre Verzweigung und Ihre Postgres-Datenbank aus.
  6. Klicken Sie auf "Erstellen".

Registrieren der LKB-Datenbank im Unity-Katalog

Der Katalog wird im Katalog-Explorer angezeigt, in dem Sie Schemas, Tabellen und Ansichten finden und sie mithilfe von SQL-Warehouses abfragen können.

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.postgres import Catalog, CatalogCatalogSpec

w = WorkspaceClient()

catalog = w.postgres.create_catalog(
    catalog=Catalog(spec=CatalogCatalogSpec(
        postgres_database="mydb",
        branch="projects/my-project/branches/production",
    )),
    catalog_id="my-catalog",
).wait()

print(f"Catalog registered: {catalog.name}")

Java SDK

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.*;

WorkspaceClient w = new WorkspaceClient();

Catalog catalog = w.postgres().createCatalog(
    new CreateCatalogRequest()
        .setCatalogId("my-catalog")
        .setCatalog(new Catalog()
            .setSpec(new CatalogCatalogSpec()
                .setPostgresDatabase("mydb")
                .setBranch("projects/my-project/branches/production"))))
    .waitForCompletion();

System.out.println("Catalog registered: " + catalog.getName());

cURL

curl -X POST "https://your-workspace.cloud.databricks.com/api/2.0/postgres/catalogs?catalog_id=my-catalog" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "spec": {
      "postgres_database": "mydb",
      "branch": "projects/my-project/branches/production"
    }
  }'

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".

Erkunden registrierter Datenbanken

Wechseln Sie nach der Registrierung im Katalog-Explorer zu Ihrem Katalog, um Schemas, Tabellen und Ansichten zu finden. Klicken Sie auf eine beliebige Tabelle, um Schemadetails, Beispieldaten und Linieninformationen anzuzeigen.

Unity Catalog synchronisiert automatisch Metadaten aus Ihrer Lakebase-Datenbank. Wenn Sie Tabellen in Lakebase hinzufügen oder ändern, aktualisieren Sie die Katalogansicht, um Aktualisierungen anzuzeigen.

Überprüfen des Registrierungsstatus

So rufen Sie die aktuellen Registrierungsdetails für einen Katalog programmgesteuert ab:

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

catalog = w.postgres.get_catalog("catalogs/my-catalog")
print(f"Database: {catalog.status.postgres_database}")
print(f"Branch: {catalog.status.branch}")

Java SDK

import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.postgres.Catalog;

WorkspaceClient w = new WorkspaceClient();

Catalog catalog = w.postgres().getCatalog("catalogs/my-catalog");
System.out.println("Database: " + catalog.getStatus().getPostgresDatabase());
System.out.println("Branch: " + catalog.getStatus().getBranch());

cURL

curl "https://your-workspace.cloud.databricks.com/api/2.0/postgres/catalogs/my-catalog" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}"

Registrierte Datenbanken abfragen

Abfragen registrierter Lakebase-Datenbanken mithilfe von SQL-Warehouses oder einem beliebigen Tool, das eine Verbindung mit dem Unity-Katalog herstellt:

-- Query a registered Lakebase database
SELECT * FROM chatbot_catalog.public.conversations
WHERE created_at >= current_date - INTERVAL 7 DAYS;

-- Join Lakebase and lakehouse data
SELECT
  c.conversation_id,
  c.user_id,
  c.agent_response,
  u.user_name,
  u.subscription_tier
FROM chatbot_catalog.public.conversations c
JOIN main.user_analytics.users u
  ON c.user_id = u.user_id;

Der schreibgeschützte Katalog stellt sicher, dass Abfragen Ihre Lakebase-Datenbank nicht über den Unity-Katalog ändern. Verwenden Sie zum Ändern von Daten den SQL-Editor von Lakebase, oder stellen Sie eine direkte Verbindung mit Ihrer Datenbank her.

Berechtigungen und Zugriffssteuerung

Unity-Katalogberechtigungen steuern den Zugriff auf registrierte Lakebase-Datenbanken:

  • Katalogbesitz: Der Benutzer, der die Datenbank registriert, wird zum Katalogbesitzer
  • Lesezugriff: Gewähren USE CATALOG und SELECT Berechtigungen, damit andere Personen die Datenbank abfragen können
  • Metastore-Administrator: Metastore-Administratoren können alle registrierten Kataloge verwalten.

So gewähren Sie Zugriff auf eine registrierte Datenbank:

-- Grant read access to a group
GRANT USE CATALOG ON CATALOG chatbot_catalog TO `ai-engineering`;
GRANT SELECT ON CATALOG chatbot_catalog TO `ai-engineering`;

Berechtigungen, die im Unity-Katalog festgelegt sind, steuern den Abfragezugriff über SQL-Lagerhäuser. Direkte Verbindungen mit Ihrer Lakebase-Datenbank verwenden Postgres-Rollen und Berechtigungen unabhängig.

Aufheben der Registrierung einer Datenbank

Durch aufheben der Registrierung wird der Katalog aus dem Unity-Katalog entfernt, hat jedoch keine Auswirkungen auf Ihre Lakebase-Datenbank. Die Datenbank bleibt über Lakebase und direkte Postgres-Verbindungen zugänglich.

Benutzeroberfläche

Wählen Sie den Katalog im Katalog-Explorer aus, klicken Sie auf das Symbol , und wählen Sie "Löschen" aus.

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

w.postgres.delete_catalog("catalogs/my-catalog").wait()

Java SDK

import com.databricks.sdk.WorkspaceClient;

WorkspaceClient w = new WorkspaceClient();

w.postgres().deleteCatalog("catalogs/my-catalog").waitForCompletion();

cURL

curl -X DELETE "https://your-workspace.cloud.databricks.com/api/2.0/postgres/catalogs/my-catalog" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}"

Hinweis

Wenn Sie synchronisierte Tabellen aus der registrierten Datenbank erstellt haben, löschen Sie diese Tabellen zuerst. Jede Quelltabelle kann nur verwendet werden, um 20 synchronisierte Tabellen zu erstellen, und synchronisierte Tabellen, die zur Löschung anstehen, zählen ebenfalls zu diesem Limit.

Einschränkungen

Schreibgeschützter Zugriff: Kataloge, die aus Lakebase-Datenbanken registriert sind, sind nur lesbar. Sie können Daten nicht über Unity-Katalogabfragen ändern.

Serverless SQL Warehouse erforderlich: Sie können nur einen registrierten Lakebase-Katalog mit einem Serverless SQL Warehouse abfragen. Pro und Classic SQL Warehouses unterstützen dieses Feature nicht.

Einzelne Datenbank pro Katalog: Jeder Unity-Katalog stellt eine Lakebase-Datenbank dar. Um mehrere Datenbanken verfügbar zu machen, registrieren Sie die einzelnen Datenbanken separat.

Metadatensynchronisierung: Unity-Katalog speichert Metadaten zwischen, um Postgres-Anforderungen zu reduzieren. Neue Objekte werden möglicherweise nicht sofort angezeigt. Klicken Sie auf aktualisieren", um eine vollständige Aktualisierung auszulösen.

Verzweigte Datenbankregistrierung wird nicht unterstützt: Sie können eine verzweigte Datenbank nicht als separaten Unity-Katalogkatalog registrieren. Wenn Sie eine Verzweigung aus einer Datenbank erstellen, die bereits im Unity-Katalog registriert ist, erbt die Verzweigung die Registrierungsmetadaten des übergeordneten Elements. Dies führt dazu, dass die neue Katalogregistrierung fehlschlägt.

Weitere Ressourcen