Udostępnij przez


Przewodnik po interfejsie API skalowania automatycznego w usłudze Lakebase

Ważne

Skalowanie automatyczne bazy danych Lakebase znajduje się w wersji beta w następujących regionach: eastus2, westeurope, westus.

Autoskalowanie bazy danych Lakebase to najnowsza wersja bazy danych Lakebase z automatycznym skalowaniem obliczeniowym, skalowaniem do zera, rozgałęzianiem i natychmiastowym przywracaniem. Aby zapoznać się z porównaniem funkcji z Lakebase Provisioned, sprawdź wybieranie między wersjami.

Ta strona zawiera omówienie interfejsu API automatycznego skalowania usługi Lakebase, w tym uwierzytelniania, dostępnych punktów końcowych i typowych wzorców pracy z interfejsem API REST, interfejsem wiersza polecenia usługi Databricks i zestawami SDK usługi Databricks (Python, Java, Go).

Aby uzyskać pełną dokumentację interfejsu API, zobacz dokumentację interfejsu API bazy danych Postgres.

Ważne

Interfejs API Postgres w Lakebase jest w wersji beta. Punkty końcowe interfejsu API, parametry i zachowania mogą ulec zmianie.

Authentication

Interfejs API automatycznego skalowania usługi Lakebase używa uwierzytelniania OAuth na poziomie obszaru roboczego do zarządzania infrastrukturą projektu (tworzenie projektów, konfigurowanie ustawień itp.).

Uwaga / Notatka

Dwa typy łączności: ten interfejs API służy do zarządzania platformą (tworzenie projektów, gałęzi, obliczeń). Aby uzyskać dostęp do bazy danych (nawiązywanie połączenia z danymi):

  • Klienci SQL (psql, pgAdmin, DBeaver): użyj tokenów OAuth bazy danych Lakebase lub haseł Postgres. Zobacz Uwierzytelnianie.
  • Interfejs API danych (RESTful HTTP): użyj tokenów OAuth bazy danych Lakebase. Zobacz Interfejs API danych.
  • Sterowniki języka programowania (psycopg, SQLAlchemy, JDBC): użyj tokenów OAuth bazy danych Lakebase lub haseł Postgres. Zobacz Szybki start.

Aby uzyskać pełne wyjaśnienie tych dwóch warstw uwierzytelniania, zobacz Architektura uwierzytelniania.

Konfigurowanie uwierzytelniania

Uwierzytelnianie przy użyciu interfejsu wiersza polecenia usługi Databricks:

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

Postępuj zgodnie z monitami przeglądarki, aby się zalogować. Interfejs wiersza polecenia buforuje token OAuth pod adresem ~/.databricks/token-cache.json.

Następnie wybierz metodę dostępu:

Zestaw SDK dla języka Python

Zestaw SDK używa ujednoliconego uwierzytelniania i automatycznie obsługuje tokeny OAuth:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

Java SDK

Zestaw SDK używa ujednoliconego uwierzytelniania i automatycznie obsługuje tokeny OAuth:

import com.databricks.sdk.WorkspaceClient;

WorkspaceClient w = new WorkspaceClient();

CLI

Polecenia automatycznie używają buforowanego tokenu:

databricks postgres list-projects

skręt

Wygeneruj token dla bezpośrednich wywołań interfejsu API:

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

Tokeny OAuth wygasają po godzinie. W razie potrzeby wygeneruj ponownie.

Aby uzyskać więcej informacji, zobacz Autoryzowanie dostępu użytkowników do usługi Databricks przy użyciu protokołu OAuth.

Dostępne punkty końcowe (wersja beta)

Wszystkie punkty końcowe używają ścieżki /api/2.0/postgres/podstawowej .

Projekty

Operation Metoda Endpoint Dokumentacja
Tworzenie projektu POST /projects Utwórz projekt
Aktualizowanie projektu PATCH /projects/{project_id} Ustawienia ogólne
Usuwanie projektu DELETE /projects/{project_id} Usuwanie projektu
Pobierz projekt GET /projects/{project_id} Uzyskaj szczegóły projektu
Lista projektów GET /projects Wyświetlanie listy projektów

Gałęzie

Operation Metoda Endpoint Dokumentacja
Utworzyć odgałęzienie POST /projects/{project_id}/branches Tworzenie gałęzi
Aktualizuj gałąź PATCH /projects/{project_id}/branches/{branch_id} Aktualizowanie ustawień gałęzi
Usuń gałąź DELETE /projects/{project_id}/branches/{branch_id} Usuwanie gałęzi
Pobieranie gałęzi GET /projects/{project_id}/branches/{branch_id} Wyświetlanie gałęzi
Wyświetl gałęzie GET /projects/{project_id}/branches Lista gałęzi

Punkty końcowe (obliczenia i repliki do odczytu)

Operation Metoda Endpoint Dokumentacja
Tworzenie punktu końcowego POST /projects/{project_id}/branches/{branch_id}/endpoints Tworzenie obliczeń / Tworzenie repliki do odczytu
Aktualizowanie punktu końcowego PATCH /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} Edytowanie obliczeń / Edytowanie repliki do odczytu
Usuń punkt końcowy DELETE /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} Usuwanie obliczeń / Usuwanie repliki do odczytu
Pobierz punkt końcowy GET /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} Wyświetlanie obliczeń
Wymień punkty końcowe GET /projects/{project_id}/branches/{branch_id}/endpoints Wyświetlanie obliczeń

Poświadczenia bazy danych

Operation Metoda Endpoint Dokumentacja
Generowanie poświadczeń bazy danych POST /credentials Uwierzytelnianie tokenu OAuth

Operacji

Operation Metoda Endpoint Dokumentacja
Operacja pobierania GET /projects/{project_id}/operations/{operation_id} Zobacz przykład poniżej

Pobieranie operacji

Sprawdź stan długotrwałej operacji według nazwy zasobu.

Zestaw SDK dla języka Python

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());

CLI

Interfejs wiersza polecenia automatycznie czeka na ukończenie operacji domyślnie. Użyj polecenia --no-wait , aby pominąć sondowanie:

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

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

skręt

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

Format odpowiedzi:

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

Pola:

  • done: false w toku, true po zakończeniu
  • response: zawiera wynik, gdy done jest true
  • error: zawiera szczegóły błędu, jeśli operacja nie powiodła się

Często używane wzorce

Nazewnictwo zasobów

Zasoby są zgodne ze wzorcem nazewnictwa hierarchicznego, w którym zasoby podrzędne są ograniczone do ich elementu nadrzędnego.

Projekty używają tego formatu:

projects/{project_id}

Zasoby podrzędne, takie jak operacje, są zagnieżdżone w ramach projektu nadrzędnego.

projects/{project_id}/operations/{operation_id}

Oznacza to, że potrzebujesz identyfikatora projektu nadrzędnego, aby uzyskać dostęp do operacji lub innych zasobów podrzędnych.

Identyfikatory zasobów:

Podczas tworzenia zasobów należy podać identyfikator zasobu (na przykład my-app) dla parametru project_id, branch_idlub endpoint_id . Ten identyfikator staje się częścią ścieżki zasobu w wywołaniach interfejsu API (takich jak projects/my-app/branches/development).

Opcjonalnie możesz podać element , display_name aby nadać zasobowi bardziej opisową etykietę. Jeśli nie określisz nazwy wyświetlanej, system używa identyfikatora zasobu jako nazwy wyświetlanej.

:::tip Znajdowanie zasobów w interfejsie użytkownika

Aby zlokalizować projekt w interfejsie użytkownika usługi Lakebase, wyszukaj jego nazwę wyświetlaną na liście projektów. Jeśli podczas tworzenia projektu nie ustanowisz własnej nazwy wyświetlanej, wyszukaj nazwę project_id (np. "my-app").

:::

Uwaga / Notatka

Nie można zmienić identyfikatorów zasobów po utworzeniu.

Wymagania:

  • Musi mieć długość od 1 do 63 znaków
  • Małe litery, cyfry i łączniki tylko
  • Nie można zaczynać ani kończyć myślnikiem
  • Przykłady: my-app, , analytics-dbcustomer-123

Długotrwałe operacje (LROs)

Operacje tworzenia, aktualizowania i usuwania zwracają databricks.longrunning.Operation obiekt, który zapewnia stan ukończenia.

Przykładowa odpowiedź operacji:

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

Sonduj pod kątem ukończenia przy użyciu polecenia GetOperation:

Zestaw SDK dla języka Python

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());

CLI

Interfejs wiersza polecenia automatycznie czeka na ukończenie operacji domyślnie. Użyj polecenia --no-wait , aby natychmiast zwrócić:

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

skręt

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

Sonduj co kilka sekund, aż done stanie się true.

Aktualizuj maski

Operacje aktualizacji wymagają parametru update_mask określającego pola do zmodyfikowania. Zapobiega to przypadkowemu zastępowaniu niepowiązanych pól.

Różnice w formatach:

Metoda Format Example
interfejs API REST Parametr zapytania ?update_mask=spec.display_name
Zestaw SDK dla języka Python Obiekt FieldMask update_mask=FieldMask(field_mask=["spec.display_name"])
CLI Argument pozycyjny update-project NAME spec.display_name

Zestawy SDK i infrastruktura jako kod