Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
La scalabilità automatica di Lakebase si trova in Beta nelle aree seguenti: eastus2, westeurope, westus.
Lakebase Autoscaling è la versione più recente di Lakebase con calcolo autoscalante, riduzione a zero, ramificazione e ripristino istantaneo. Per il confronto delle funzionalità con Lakebase Provisioned, vedere scegliere tra le versioni.
Questa pagina offre una panoramica dell'API di scalabilità automatica di Lakebase, tra cui autenticazione, endpoint disponibili e modelli comuni per l'uso dell'API REST, dell'interfaccia della riga di comando di Databricks, degli SDK di Databricks (Python, Java, Go) e Terraform.
Per informazioni di riferimento complete sull'API, vedere la documentazione dell'API Postgres.
Importante
L'API Postgres di Lakebase è in versione beta. Gli endpoint, i parametri e i comportamenti dell'API sono soggetti a modifiche.
Authentication
L'API di scalabilità automatica di Lakebase usa l'autenticazione OAuth a livello di area di lavoro per la gestione dell'infrastruttura del progetto (creazione di progetti, configurazione delle impostazioni e così via).
Annotazioni
Due tipi di connettività: questa API è destinata alla gestione della piattaforma (creazione di progetti, rami, calcoli). Per l'accesso al database (connessione all'interrogazione dei dati):
- Client SQL (psql, pgAdmin, DBeaver): usare token OAuth di LakeBase o password Postgres. Vedere Autenticazione.
- API dati (HTTP RESTful): usare i token OAuth di LakeBase. Vedere API dati.
- Driver dei linguaggi di programmazione (psycopg, SQLAlchemy, JDBC): usare i token OAuth di LakeBase o le password di Postgres. Vedere Avvio rapido.
Per una spiegazione completa di questi due livelli di autenticazione, vedere Architettura di autenticazione.
Configurare l'autenticazione
Eseguire l'autenticazione tramite l'interfaccia della riga di comando di Databricks:
databricks auth login --host https://your-workspace.cloud.databricks.com
Seguire le istruzioni del browser per accedere. L'interfaccia della riga di comando memorizza nella cache il token OAuth in ~/.databricks/token-cache.json.
Scegliere quindi il metodo di accesso:
Python SDK
L'SDK usa l'autenticazione unificata e gestisce automaticamente i token OAuth:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
Java SDK
L'SDK usa l'autenticazione unificata e gestisce automaticamente i token OAuth:
import com.databricks.sdk.WorkspaceClient;
WorkspaceClient w = new WorkspaceClient();
CLI
I comandi usano automaticamente il token memorizzato nella cache:
databricks postgres list-projects
curva
Generare un token per le chiamate API dirette:
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}"
I token OAuth scadono dopo un'ora. Rigenerare in base alle esigenze.
Per altri dettagli, vedere Autorizzare l'accesso utente a Databricks con OAuth.
Endpoint disponibili (Beta)
Tutti gli endpoint usano il percorso /api/2.0/postgres/di base .
Progetti
| Operation | Metodo | Punto finale | Documentation |
|---|---|---|---|
| Creare un progetto | POST |
/projects |
Creare un progetto |
| Aggiornare il progetto | PATCH |
/projects/{project_id} |
Impostazioni generali |
| Eliminare un progetto | DELETE |
/projects/{project_id} |
Eliminare un progetto |
| Ottenere il progetto | GET |
/projects/{project_id} |
Ottenere i dettagli del progetto |
| Elencare i progetti | GET |
/projects |
Elencare i progetti |
Branch
| Operation | Metodo | Punto finale | Documentation |
|---|---|---|---|
| Crea ramo | POST |
/projects/{project_id}/branches |
Creare un ramo |
| Aggiorna il ramo | PATCH |
/projects/{project_id}/branches/{branch_id} |
Aggiornare le impostazioni del ramo |
| Elimina ramo | DELETE |
/projects/{project_id}/branches/{branch_id} |
Eliminare un ramo |
| Ottenere un ramo | GET |
/projects/{project_id}/branches/{branch_id} |
Visualizzare i rami |
| Elenco di rami | GET |
/projects/{project_id}/branches |
Elencare i rami |
Endpoint (nodi di calcolo e repliche di lettura)
| Operation | Metodo | Punto finale | Documentation |
|---|---|---|---|
| Creare un endpoint | POST |
/projects/{project_id}/branches/{branch_id}/endpoints |
Creare un ambiente di calcolo / Creare una replica di lettura |
| Aggiornare l'endpoint | PATCH |
/projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} |
Modificare un ambiente di calcolo / Modificare una replica in lettura |
| Eliminare un endpoint | DELETE |
/projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} |
Eliminare un ambiente di calcolo / Eliminare una replica di lettura |
| Ottenere l'endpoint | GET |
/projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} |
Visualizzare i calcoli |
| Elencare gli endpoint | GET |
/projects/{project_id}/branches/{branch_id}/endpoints |
Visualizzare i calcoli |
Credenziali del database
| Operation | Metodo | Punto finale | Documentation |
|---|---|---|---|
| Generare credenziali del database | POST |
/credentials |
Autenticazione del token OAuth |
Operazioni
| Operation | Metodo | Punto finale | Documentation |
|---|---|---|---|
| Operazione Get | GET |
/projects/{project_id}/operations/{operation_id} |
Vedere l'esempio seguente |
Operazione Recupera
Controllare lo stato di un'operazione a esecuzione prolungata in base al nome della risorsa.
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());
CLI
Il CLI attende automaticamente il completamento delle operazioni per impostazione predefinita. Usare --no-wait per ignorare il polling:
# Create project without waiting
databricks postgres create-project --no-wait ...
# Later, check the operation status
databricks postgres get-operation projects/my-project/operations/abc123
curva
# Get operation status
curl -X GET "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq
Formato risposta:
{
"name": "projects/my-project/operations/abc123",
"done": true,
"response": {
"@type": "type.googleapis.com/databricks.postgres.v1.Project",
"name": "projects/my-project",
...
}
}
Campi:
-
done:falsein corso,trueal termine -
response: contiene il risultato quandodoneètrue -
error: contiene i dettagli dell'errore se l'operazione non è riuscita
Modelli comuni
Denominazione delle risorse
Le risorse seguono un modello di denominazione gerarchico in cui le risorse figlio sono definite nell'ambito del loro elemento padre.
I progetti usano questo formato:
projects/{project_id}
Le risorse subordinate, come le operazioni, vengono annidate all'interno del progetto padre.
projects/{project_id}/operations/{operation_id}
Ciò significa che è necessario l'ID progetto padre per accedere alle operazioni o ad altre risorse figlio.
ID risorsa:
Quando si creano risorse, è necessario specificare un ID risorsa (ad esempio my-app) per il project_idparametro , branch_ido endpoint_id . Questo ID diventa parte del percorso della risorsa nelle chiamate API ,ad esempio projects/my-app/branches/development.
Facoltativamente, è possibile specificare un oggetto display_name per assegnare alla risorsa un'etichetta più descrittiva. Se non si specifica un nome di visualizzazione, il sistema usa l'ID della risorsa come nome di visualizzazione.
:::tip Ricerca di risorse nell'interfaccia utente
Per individuare un progetto nell'interfaccia utente di Lakebase, cercare il nome visualizzato nell'elenco dei progetti. Se non hai specificato un nome visualizzato personalizzato durante la creazione del progetto, cerca il project_id tuo (ad esempio "my-app").
:::
Annotazioni
Non è possibile modificare gli ID risorsa dopo la creazione.
Requirements:
- Deve avere una lunghezza di 1-63 caratteri
- Solo lettere minuscole, cifre e trattini
- Impossibile iniziare o terminare con un trattino
- Esempi:
my-app,analytics-db,customer-123
Operazioni a esecuzione prolungata (LRO)
Le operazioni di creazione, aggiornamento ed eliminazione restituiscono un databricks.longrunning.Operation oggetto che fornisce uno stato di completamento.
Risposta dell'operazione di esempio:
{
"name": "projects/my-project/operations/abc123",
"done": false
}
Effettuare il polling per completare usando 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());
CLI
La CLI attende automaticamente il completamento delle operazioni per impostazione predefinita. Usare --no-wait per restituire immediatamente:
databricks postgres create-project --no-wait ...
curva
# Poll the operation
curl "$WORKSPACE/api/2.0/postgres/projects/my-project/operations/abc123" \
-H "Authorization: Bearer ${DATABRICKS_TOKEN}" | jq '.done'
Eseguire il polling ogni alcuni secondi fino a quando done è true.
Aggiorna le maschere
Le operazioni di aggiornamento richiedono un update_mask parametro che specifica i campi da modificare. In questo modo si evita la sovrascrittura accidentale di campi non correlati.
Differenze di formato:
| Metodo | Formato | Example |
|---|---|---|
| REST API | Query parameter (Parametro di query) | ?update_mask=spec.display_name |
| Python SDK | Oggetto FieldMask | update_mask=FieldMask(field_mask=["spec.display_name"]) |
| CLI | Argomento posizionale | update-project NAME spec.display_name |