共用方式為


Lakebase 自動縮放 API 指南

這很重要

Lakebase 自動縮放在以下地區處於 Beta 階段:eastus2westeuropewestus

Lakebase 自動縮放是 Lakebase 的最新版本,具備自動縮放運算、縮放至零、分支及即時還原功能。 關於與 Lakebase Provisioned 的功能比較,請參見「選擇版本」。

本頁提供 Lakebase 自動擴展 API 的概述,包括認證、可用端點,以及使用 REST API、Databricks CLI 和 Databricks SDK(Python、Java、Go)的常見模式。

完整 API 參考,請參閱 Postgres API 文件

這很重要

Lakebase Postgres API 目前處於 測試階段。 API 端點、參數與行為可能會變動。

Authentication

Lakebase 自動擴展 API 使用 工作區層級的 OAuth 認證 來管理專案基礎設施(建立專案、設定等)。

備註

兩種連接方式:此 API 用於 平台管理 (建立專案、分支、運算)。 關於 資料庫存取 (連接查詢資料):

  • SQL 用戶端 (psql、pgAdmin、DBeaver):使用 Lakebase OAuth 令牌或 Postgres 密碼。 請參閱驗證
  • Data API (RESTful HTTP):使用 Lakebase OAuth 代幣。 請參閱 資料API
  • 程式語言驅動程式 (psycopg、SQLAlchemy、JDBC):使用 Lakebase OAuth 令牌或 Postgres 密碼。 請參見 快速入門

關於這兩個認證層的完整說明,請參見 認證架構

設定驗證

使用 Databricks CLI 進行認證:

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

請依照瀏覽器提示登入。 CLI 會將你的 OAuth 標記快取在 ~/.databricks/token-cache.json

然後選擇你的存取方式:

Python SDK

SDK 採用統一認證,並自動處理 OAuth 令牌:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

Java 開發套件

SDK 採用統一認證,並自動處理 OAuth 令牌:

import com.databricks.sdk.WorkspaceClient;

WorkspaceClient w = new WorkspaceClient();

CLI

指令會自動使用快取的標記:

databricks postgres list-projects

curl (Unix指令)

產生一個用於直接 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}"

OAuth 代幣在一小時後過期。 需要時再生。

更多細節請參閱 授權用戶存取 Databricks with OAuth

可用端點(Beta)

所有端點都使用基底路徑 /api/2.0/postgres/

專案

行動 方法 端點 文件資料
建立專案 POST /projects 建立專案
更新專案 PATCH /projects/{project_id} 一般設定
刪除專案 DELETE /projects/{project_id} 刪除專案
取得專案 GET /projects/{project_id} 獲取專案詳情
列出專案 GET /projects 列出專案

分支

行動 方法 端點 文件資料
建立分支 POST /projects/{project_id}/branches 建立分支
更新分支 PATCH /projects/{project_id}/branches/{branch_id} 更新分支設定
刪除分支 DELETE /projects/{project_id}/branches/{branch_id} 刪除分支
取得分支 GET /projects/{project_id}/branches/{branch_id} 查看分支
列出分支 GET /projects/{project_id}/branches 列出分支

端點(計算與讀取副本)

行動 方法 端點 文件資料
建立端點 POST /projects/{project_id}/branches/{branch_id}/endpoints 建立一個運算 / 建立一個讀取副本
更新端點 PATCH /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} 編輯一個計算 / 編輯已讀複本
刪除端點 DELETE /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} 刪除一個運算 / 刪除讀取副本
取得端點 GET /projects/{project_id}/branches/{branch_id}/endpoints/{endpoint_id} 檢視運算資源
列出端點 GET /projects/{project_id}/branches/{branch_id}/endpoints 檢視運算資源

資料庫憑證

行動 方法 端點 文件資料
產生資料庫憑證 POST /credentials OAuth 令牌認證

操作

行動 方法 端點 文件資料
取得操作 GET /projects/{project_id}/operations/{operation_id} 請見下方範例

動手術

透過資源名稱查詢長期執行作業的狀態。

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 開發套件

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

CLI 預設會自動等待操作完成。 使用--no-wait來跳過輪詢:

# 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 (Unix指令)

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

回應格式:

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

田野:

  • donefalse 進行中, true 完成時
  • response:當 donetrue 時,包含結果
  • error:若操作失敗,包含錯誤細節

常見模式

資源命名

資源遵循階層式命名模式,子資源的範圍會指向父資源。

專案採用此格式:

projects/{project_id}

子資源如作業隸屬於其父項目之下。

projects/{project_id}/operations/{operation_id}

這表示你需要父專案 ID 才能存取操作或其他子資源。

資源識別碼:

建立資源時,必須為 my-appproject_idbranch_id 參數提供資源 ID(如 endpoint_id)。 此 ID 會成為 API 呼叫中資源路徑的一部分(例如 projects/my-app/branches/development)。

你可以選擇性地提供一個 display_name ,讓你的資源有更具體的標籤。 如果你沒有指定顯示名稱,系統會使用你的資源 ID 作為顯示名稱。

:::小撇步 在 UI 中尋找資源

要在 Lakebase UI 中找到專案,請在專案列表中尋找其顯示名稱。 如果你在建立專案時沒有提供自訂顯示名稱,可以搜尋你的 project_id (例如「my-app」)。

:::

備註

資源 ID 在建立後無法更改。

Requirements:

  • 必須是 1 到 63 個字元
  • 僅使用小寫字母、數字及連字號
  • 不能以連字號開頭或結尾
  • 範例: my-appanalytics-dbcustomer-123

長時間運行操作(LRO)

建立、更新和刪除操作會回傳 databricks.longrunning.Operation 一個提供完成狀態的物件。

範例操作回應:

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

使用 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 開發套件

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

CLI 預設會自動等待操作完成。 使用 --no-wait 立即返回:

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

curl (Unix指令)

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

每隔幾秒輪詢一次,直到 donetrue

更新遮罩

更新操作需要一個 update_mask 參數來指定要修改哪些欄位。 這可避免意外覆蓋無關欄位。

格式差異:

方法 格式 Example
REST API 查詢參數 ?update_mask=spec.display_name
Python SDK FieldMask 物件 update_mask=FieldMask(field_mask=["spec.display_name"])
CLI 立場論證 update-project NAME spec.display_name

SDK 與基礎設施即程式碼