Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Автомасштабирование 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 |