Поделиться через


Руководство по API автомасштабирования Lakebase

Это важно

Автомасштабирование Lakebase находится в бета-версии в следующих регионах: eastus2, westeurope, westus.

Автомасштабирование Lakebase — это последняя версия Lakebase с автомасштабированием вычислений, масштабированием до нуля, ветвлением и мгновенным восстановлением. Сравнение функций с Lakebase Provisioned см. в разделе выбора между версиями.

На этой странице представлен обзор API автомасштабирования Lakebase, включая проверку подлинности, доступные конечные точки и распространенные шаблоны для работы с REST API, Databricks CLI и пакетами SDK Databricks (Python, Java, Go).

Полный справочник по API см. в документации по API Postgres.

Это важно

API Lakebase Postgres находится в бета-версии. Конечные точки API, параметры и поведение могут быть изменены.

Authentication

API автомасштабирования Lakebase использует проверку подлинности OAuth на уровне рабочей области для управления инфраструктурой проектов (создание проектов, настройка параметров и т. д.).

Замечание

Два типа подключения: этот API предназначен для управления платформами (создание проектов, ветвей, вычислений). Для доступа к базе данных (подключение к данным запроса):

  • Клиенты SQL (psql, pgAdmin, DBeaver): используйте маркеры OAuth Lakebase или пароли Postgres. См. раздел Аутентификация.
  • API данных (RESTful HTTP): используйте токены OAuth Lakebase. См. API данных.
  • Драйверы языка программирования (psycopg, SQLAlchemy, JDBC): использование маркеров OAuth Lakebase или паролей Postgres. Смотрите Quickstart.

Полное описание этих двух уровней проверки подлинности см. в разделе "Архитектура проверки подлинности".

Настройка проверки подлинности

Проверка подлинности с помощью интерфейса командной строки Databricks:

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

Следуйте инструкциям браузера, чтобы войти в систему. Интерфейс командной строки кэширует маркер OAuth по ~/.databricks/token-cache.jsonадресу.

Затем выберите метод доступа:

Пакет SDK для Python

Пакет SDK использует единую проверку подлинности и автоматически обрабатывает маркеры OAuth:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

пакет SDK для Java

Пакет SDK использует единую проверку подлинности и автоматически обрабатывает маркеры OAuth:

import com.databricks.sdk.WorkspaceClient;

WorkspaceClient w = new WorkspaceClient();

интерфейс командной строки (CLI)

Команды автоматически используют кэшированный маркер:

databricks postgres list-projects

завиток

Создайте маркер для прямых вызовов 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 с помощью OAuth".

Доступные конечные точки (бета-версия)

Все конечные точки используют базовый путь /api/2.0/postgres/.

Проекты

Операция Метод Endpoint Documentation
Создание проекта POST /projects Создание проекта
Обновление проекта PATCH /projects/{project_id} общие параметры
Удаление проекта DELETE /projects/{project_id} Удаление проекта
Получить проект GET /projects/{project_id} Получение сведений о проекте
Список проектов GET /projects Список проектов

Ветви

Операция Метод Endpoint Documentation
Создать ветвь 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 Список веток

Конечные точки (вычислительные ресурсы и реплики чтения)

Операция Метод Endpoint Documentation
Создать конечную точку 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 Просмотр вычислений

Учетные данные базы данных

Операция Метод Endpoint Documentation
Создание учетных данных базы данных POST /credentials Аутентификация токена OAuth

Операции

Операция Метод Endpoint Documentation
Операция извлечения GET /projects/{project_id}/operations/{operation_id} См. пример ниже

Получение операции

Проверьте состояние длительной операции по имени ресурса.

Пакет SDK для 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}")

пакет SDK для 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)

Интерфейс командной строки автоматически ожидает завершения операций по умолчанию. Используйте --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

завиток

# 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",
    ...
  }
}

Поля:

  • done: false во время выполнения, true при завершении
  • response: содержит результат, если done имеет значение true
  • error: содержит сведения об ошибке, если операция завершилась ошибкой

Распространенные шаблоны

Именование ресурсов

Ресурсы следуют шаблону иерархического именования, в котором дочерние ресурсы относятся к родительскому элементу.

Проекты используют следующий формат:

projects/{project_id}

Дочерние ресурсы, такие как операции, расположены под родительским проектом.

projects/{project_id}/operations/{operation_id}

Это означает, что для доступа к операциям или другим дочерним ресурсам требуется идентификатор родительского проекта.

Идентификаторы ресурсов:

При создании ресурсов необходимо указать идентификатор ресурса (например my-app) для параметра project_id, branch_id или endpoint_id параметра. Этот идентификатор становится частью пути к ресурсу в вызовах API (например projects/my-app/branches/development).

При необходимости можно предоставить вашему ресурсу более описательную метку, используя display_name. Если отображаемое имя не указано, система использует идентификатор ресурса в качестве отображаемого имени.

:::tip Поиск ресурсов в пользовательском интерфейсе

Чтобы найти проект в пользовательском интерфейсе Lakebase, найдите отображаемое имя в списке проектов. Если при создании проекта не предоставлено пользовательское отображаемое имя, выполните поиск project_id (например, my-app).

:::

Замечание

Идентификаторы ресурсов невозможно изменить после создания.

Требования:

  • Должно иметь длину 1–63 символов.
  • Только строчные буквы, цифры и дефисы
  • Нельзя начинаться или заканчиваться на дефис.
  • Примеры: my-app, analytics-dbcustomer-123

Длительные операции (LROs — Long-running operations)

Операции создания, обновления и удаления возвращают databricks.longrunning.Operation объект, предоставляющий состояние завершения.

Пример ответа на операцию:

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

Опрос завершения операции с использованием метода GetOperation:

Пакет SDK для 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}")

пакет SDK для 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)

Интерфейс командной строки автоматически ожидает завершения операций по умолчанию. Используйте --no-wait для немедленного возврата:

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

завиток

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

Опрос проводите каждые несколько секунд, пока done не станет true.

Обновление маски

Для операций обновления требуется параметр, указывающий update_mask , какие поля необходимо изменить. Это предотвращает случайную перезапись несвязанных полей.

Различия в формате:

Метод Формат Example
REST API Параметр запроса ?update_mask=spec.display_name
Пакет SDK для Python Объект FieldMask update_mask=FieldMask(field_mask=["spec.display_name"])
интерфейс командной строки (CLI) Позиционный аргумент update-project NAME spec.display_name

Пакеты SDK и инфраструктура как код