Freigeben über


Leitfaden für die Automatische Skalierung der Lakebase-API

Von Bedeutung

Lakebase Autoscaling ist in Beta in den folgenden Regionen: eastus2, westeurope, westus.

Lakebase Autoscaling ist die neueste Version von Lakebase mit automatischer Berechnung, Skalierung bis Null, Verzweigung und sofortiger Wiederherstellung. Einen Featurevergleich mit Lakebase Provisioned finden Sie unter Auswahl zwischen Versionen.

Diese Seite bietet eine Übersicht über die Lakebase Autoscaling-API, einschließlich Authentifizierung, verfügbaren Endpunkten und gängigen Mustern für die Arbeit mit der REST-API, Databricks CLI, Databricks SDKs (Python, Java, Go) und Terraform.

Die vollständige API-Referenz finden Sie in der Dokumentation zur Postgres-API.

Von Bedeutung

Die Lakebase Postgres-API befindet sich in Beta. API-Endpunkte, Parameter und Verhaltensweisen können geändert werden.

Authentifizierung

Die Lakebase Autoscaling-API verwendet die OAuth-Authentifizierung auf Arbeitsbereichsebene zum Verwalten der Projektinfrastruktur (Erstellen von Projekten, Konfigurieren von Einstellungen, usw.).

Hinweis

Zwei Arten von Konnektivität: Diese API dient zum Plattformmanagement (Erstellen von Projekten, Verzweigungen, Berechnungen). Für datenbankzugriff (Herstellen einer Verbindung mit Abfragedaten):

  • SQL-Clients (psql, pgAdmin, DBeaver): Verwenden Sie LakeBase OAuth-Token oder Postgres-Kennwörter. Siehe Authentifizierung.
  • Daten-API (RESTful HTTP): Verwenden Sie LakeBase OAuth-Token. Siehe Daten-API.
  • Programmiersprachentreiber (psycopg, SQLAlchemy, JDBC): Verwenden Sie LakeBase OAuth-Token oder Postgres-Passwörter. Siehe Schnellstart.

Eine vollständige Erläuterung dieser beiden Authentifizierungsebenen finden Sie unter Authentifizierungsarchitektur.

Einrichten der Authentifizierung

Authentifizieren mithilfe der Databricks CLI:

databricks auth login --host https://your-workspace.cloud.databricks.com

Folgen Sie den Browseraufforderungen, um sich anzumelden. Die CLI speichert Ihr OAuth-Token unter ~/.databricks/token-cache.json.

Wählen Sie dann Ihre Zugriffsmethode aus:

Python SDK

Das SDK verwendet einheitliche Authentifizierung und verarbeitet automatisch OAuth-Token:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

Java-SDK

Das SDK verwendet einheitliche Authentifizierung und verarbeitet automatisch OAuth-Token:

import com.databricks.sdk.WorkspaceClient;

WorkspaceClient w = new WorkspaceClient();

Befehlszeilenschnittstelle (CLI)

Befehle verwenden automatisch das zwischengespeicherte Token:

databricks postgres list-projects

cURL

Generieren Sie ein Token für direkte API-Aufrufe:

export DATABRICKS_TOKEN=$(databricks auth token | jq -r .access_token)

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

OAuth-Token laufen nach einer Stunde ab. Regenerieren Sie nach Bedarf.

Weitere Details finden Sie unter Autorisieren des Benutzerzugriffs auf Databricks mit OAuth.

Verfügbare Endpunkte (Beta)

Alle Endpunkte verwenden den Basispfad /api/2.0/postgres/.

Projekte

Operation Methode Endpunkt Dokumentation
Projekt erstellen POST /projects Erstellen eines Projekts
Projekt aktualisieren PATCH /projects/{project_id} Allgemeine Einstellungen
Löschen eines Projekts DELETE /projects/{project_id} Löschen eines Projekts
Projekt abrufen GET /projects/{project_id} Projektdetails abrufen
Projekte auflisten GET /projects Projekte auflisten

Branches

Operation Methode Endpunkt Dokumentation
Branch erstellen POST /projects/{project_id}/branches Einen Zweig erstellen
Branch aktualisieren PATCH /projects/{project_id}/branches/{branch_id} Aktualisiere Verzweigungseinstellungen
Verzweigung löschen DELETE /projects/{project_id}/branches/{branch_id} Löschen einer Verzweigung
Verzweigung abrufen GET /projects/{project_id}/branches/{branch_id} Filialen anzeigen
Zweige auflisten GET /projects/{project_id}/branches Branches auflisten

Endpunkte (Berechnet und Lesen von Replikaten)

Operation Methode Endpunkt Dokumentation
Endpunkt erstellen POST /projects/{project_id}/branches/{branch_id}/endpoints Erstellen einer Berechnung / Erstellen eines Lesereplikats
Endpunkt aktualisieren PATCH /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} Bearbeiten einer Berechnung / Bearbeiten eines Lesereplikats
Löschen eines Endpunkts DELETE /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} Löschen einer Recheneinheit / Löschen eines Lesereplikats
Endpunkt abrufen GET /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} Rechner anzeigen
Endpunkte auflisten GET /projects/{project_id}/branches/{branch_id}/endpoints Berechnungen anzeigen

Datenbank-Zugangsdaten

Operation Methode Endpunkt Dokumentation
Datenbankanmeldeinformationen generieren POST /credentials OAuth-Tokenauthentifizierung

Operationen

Operation Methode Endpunkt Dokumentation
Vorgang abrufen GET /projects/{project_id}/operations/{operation_id} Siehe Beispiel unten

Vorgang abrufen

Überprüfen Sie den Status eines lang andauernden Vorgangs anhand des Ressourcennamens.

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# Start an operation (example: create project)
operation = w.postgres.create_project(...)
print(f"Operation started: {operation.name}")

# Wait for completion
result = operation.wait()
print(f"Operation completed: {result.name}")

Java-SDK

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

WorkspaceClient w = new WorkspaceClient();

// Start an operation (example: create project)
CreateProjectOperation operation = w.postgres().createProject(...);
System.out.println("Operation started: " + operation.getName());

// Wait for completion
Project result = operation.waitForCompletion();
System.out.println("Operation completed: " + result.getName());

Befehlszeilenschnittstelle (CLI)

Die CLI wartet automatisch, bis Vorgänge standardmäßig abgeschlossen sind. Verwenden Sie --no-wait zum Überspringen des Abfragens.

# Create project without waiting
databricks postgres create-project --no-wait ...

# Later, check the operation status
databricks postgres get-operation projects/my-project/operations/abc123

cURL

# Get operation status
curl -X GET "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq

Antwortformat:

{
  "name": "projects/my-project/operations/abc123",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/databricks.postgres.v1.Project",
    "name": "projects/my-project",
    ...
  }
}

Felder:

  • done: false während der Bearbeitung, true nach Abschluss
  • response: Enthält das Ergebnis, wenn donetrue ist.
  • error: Enthält Fehlerdetails, wenn der Vorgang fehlgeschlagen ist.

Allgemeine Muster

Ressourcen-Namensgebung

Ressourcen folgen einem hierarchischen Benennungsmuster, bei dem untergeordnete Ressourcen ihren übergeordneten Elementen zugeordnet sind.

Projekte verwenden dieses Format:

projects/{project_id}

Untergeordnete Ressourcen wie Vorgänge werden unter ihrem übergeordneten Projekt geschachtelt:

projects/{project_id}/operations/{operation_id}

Dies bedeutet, dass Sie die übergeordnete Projekt-ID für den Zugriff auf Vorgänge oder andere untergeordnete Ressourcen benötigen.

Ressourcen-IDs:

Beim Erstellen von Ressourcen müssen Sie eine Ressourcen-ID angeben (z. B. my-app) für die Parameter project_id, branch_id oder endpoint_id. Diese ID wird Teil des Ressourcenpfads in API-Aufrufen (z. B. projects/my-app/branches/development).

Sie können optional Ihrer Ressource eine display_name aussagekräftige Beschriftung vergeben. Wenn Sie keinen Anzeigenamen angeben, verwendet das System Ihre Ressourcen-ID als Anzeigenamen.

:::tipp: Suchen von Ressourcen auf der Benutzeroberfläche

Um ein Projekt in der Lakebase-Benutzeroberfläche zu finden, suchen Sie in der Projektliste nach dem Anzeigenamen. Wenn Sie beim Erstellen des Projekts keinen benutzerdefinierten Anzeigenamen angegeben haben, suchen Sie nach Ihrem project_id (z. B. "my-app").

:::

Hinweis

Ressourcen-IDs können nach der Erstellung nicht mehr geändert werden.

Requirements:

  • Muss 1 bis 63 Zeichen lang sein
  • Nur Kleinbuchstaben, Ziffern und Bindestriche
  • Kann nicht mit einem Bindestrich beginnen oder enden
  • Beispiele: my-app, , analytics-dbcustomer-123

Lang andauernde Vorgänge (LROs)

Erstellen, Aktualisieren und Löschen geben ein databricks.longrunning.Operation Objekt zurück, das einen Abschlussstatus bereitstellt.

Beispiel-Vorgangsantwort:

{
  "name": "projects/my-project/operations/abc123",
  "done": false
}

Abfrage zum Abschluss mithilfe von GetOperation:

Python SDK

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

# Start an operation
operation = w.postgres.create_project(...)

# Wait for completion
result = operation.wait()
print(f"Operation completed: {result.name}")

Java-SDK

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

WorkspaceClient w = new WorkspaceClient();

// Start an operation
CreateProjectOperation operation = w.postgres().createProject(...);

// Wait for completion
Project result = operation.waitForCompletion();
System.out.println("Operation completed: " + result.getName());

Befehlszeilenschnittstelle (CLI)

Die CLI wartet automatisch, bis Vorgänge standardmäßig abgeschlossen sind. Verwenden Sie --no-wait, um sofort zurückzukehren:

databricks postgres create-project --no-wait ...

cURL

# Poll the operation
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
  -H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq '.done'

Alle paar Sekunden abfragen, bis donetrue ist.

Aktualisieren von Masken

Aktualisierungsvorgänge erfordern einen update_mask Parameter, der angibt, welche Felder geändert werden sollen. Dadurch wird verhindert, dass nicht verknüpfte Felder versehentlich überschrieben werden.

Formatunterschiede:

Methode Format Example
REST API Query parameter (Abfrageparameter) ?update_mask=spec.display_name
Python SDK FieldMask-Objekt update_mask=FieldMask(field_mask=["spec.display_name"])
Befehlszeilenschnittstelle (CLI) Positionsargument update-project NAME spec.display_name

Weitere Ressourcen:

SDKs und Infrastructure as Code