Loading...
Loading...
Compare original and translation side by side
| Feature | Description |
|---|---|
| Managed PostgreSQL | Fully managed instances with automatic provisioning |
| OAuth Authentication | Token-based auth via Databricks SDK (1-hour expiry) |
| Unity Catalog | Register databases for governance |
| Reverse ETL | Sync data from Delta tables to PostgreSQL |
| Apps Integration | First-class support in Databricks Apps |
| 功能 | 描述 |
|---|---|
| 托管PostgreSQL | 自动配置的全托管实例 |
| OAuth身份验证 | 通过Databricks SDK实现的基于令牌的身份验证(有效期1小时) |
| Unity Catalog | 注册数据库以进行治理 |
| 反向ETL | 将Delta表中的数据同步到PostgreSQL |
| Apps集成 | 对Databricks Apps提供一等支持 |
from databricks.sdk import WorkspaceClient
import uuidfrom databricks.sdk import WorkspaceClient
import uuidundefinedundefinedfrom databricks.sdk import WorkspaceClient
import uuid
w = WorkspaceClient()from databricks.sdk import WorkspaceClient
import uuid
w = WorkspaceClient()undefinedundefinedimport psycopg
from databricks.sdk import WorkspaceClient
import uuidimport psycopg
from databricks.sdk import WorkspaceClient
import uuidundefinedundefinedimport asyncio
import os
import uuid
from sqlalchemy import event
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from databricks.sdk import WorkspaceClientimport asyncio
import os
import uuid
from sqlalchemy import event
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker
from databricks.sdk import WorkspaceClientw = WorkspaceClient()
instance = w.database.get_database_instance(name=instance_name)
# Generate initial token
_current_token = _generate_token(instance_name)
# Build URL (password injected via do_connect)
url = f"postgresql+psycopg://{username}@{instance.read_write_dns}:5432/{database_name}"
engine = create_async_engine(
url,
pool_size=5,
max_overflow=10,
pool_recycle=3600,
connect_args={"sslmode": "require"}
)
# Inject token on each connection
@event.listens_for(engine.sync_engine, "do_connect")
def provide_token(dialect, conn_rec, cargs, cparams):
cparams["password"] = _current_token
return engineundefinedw = WorkspaceClient()
instance = w.database.get_database_instance(name=instance_name)
# 生成初始令牌
_current_token = _generate_token(instance_name)
# 构建URL(密码通过do_connect注入)
url = f"postgresql+psycopg://{username}@{instance.read_write_dns}:5432/{database_name}"
engine = create_async_engine(
url,
pool_size=5,
max_overflow=10,
pool_recycle=3600,
connect_args={"sslmode": "require"}
)
# 为每个连接注入令牌
@event.listens_for(engine.sync_engine, "do_connect")
def provide_token(dialect, conn_rec, cargs, cparams):
cparams["password"] = _current_token
return engineundefinedundefinedundefined
Add Lakebase as an app resource via CLI:
```bash
databricks apps add-resource $APP_NAME \
--resource-type database \
--resource-name lakebase \
--database-instance my-lakebase-instance
通过CLI将Lakebase添加为应用资源:
```bash
databricks apps add-resource $APP_NAME \
--resource-type database \
--resource-name lakebase \
--database-instance my-lakebase-instancefrom databricks.sdk import WorkspaceClient
w = WorkspaceClient()from databricks.sdk import WorkspaceClient
w = WorkspaceClient()undefinedundefinedfrom mlflow.models.resources import DatabricksLakebase
resources = [
DatabricksLakebase(database_instance_name="my-lakebase-instance"),
]from mlflow.models.resources import DatabricksLakebase
resources = [
DatabricksLakebase(database_instance_name="my-lakebase-instance"),
]undefinedundefined| Tool | Description |
|---|---|
| Create a managed PostgreSQL instance (CU_1, CU_2, CU_4, CU_8) |
| Get instance details (state, DNS, capacity) |
| List all instances in the workspace |
| Resize or start/stop an instance |
| Delete an instance |
| Generate OAuth token for PostgreSQL connections (1-hour expiry) |
| 工具 | 描述 |
|---|---|
| 创建托管PostgreSQL实例(支持CU_1、CU_2、CU_4、CU_8规格) |
| 获取实例详情(状态、DNS、规格) |
| 列出工作区中的所有实例 |
| 调整实例规格或启动/停止实例 |
| 删除实例 |
| 生成用于PostgreSQL连接的OAuth令牌(有效期1小时) |
| Tool | Description |
|---|---|
| Register a Lakebase instance as a Unity Catalog catalog. Params: |
| Get catalog registration details |
| Remove catalog registration (does not delete instance) |
| 工具 | 描述 |
|---|---|
| 将Lakebase实例注册为Unity Catalog目录。参数: |
| 获取目录注册详情 |
| 移除目录注册(不会删除实例) |
| Tool | Description |
|---|---|
| Create a synced table from Delta to Lakebase. Params: |
| Get synced table status |
| Delete a synced table |
| 工具 | 描述 |
|---|---|
| 创建从Delta到Lakebase的同步表。参数: |
| 获取同步表状态 |
| 删除同步表 |
undefinedundefinedundefinedundefined| Issue | Solution |
|---|---|
| Token expired during long query | Implement token refresh loop (see SQLAlchemy with Token Refresh section); tokens expire after 1 hour |
| DNS resolution fails on macOS | Use |
| Connection refused | Ensure instance is not stopped; check |
| Permission denied | User must be granted access to the Lakebase instance |
| SSL required error | Always use |
| 问题 | 解决方案 |
|---|---|
| 长查询过程中令牌过期 | 实现令牌刷新循环(参考带令牌刷新的SQLAlchemy章节);令牌有效期为1小时 |
| macOS上DNS解析失败 | 使用 |
| 连接被拒绝 | 确保实例未处于停止状态;检查 |
| 权限被拒绝 | 必须为用户授予Lakebase实例的访问权限 |
| 需要SSL的错误 | 连接字符串中始终使用 |
hostaddrpostgresql+psycopg%pip install -U "databricks-sdk>=0.81.0" "psycopg[binary]>=3.0" sqlalchemyhostaddrpostgresql+psycopg%pip install -U "databricks-sdk>=0.81.0" "psycopg[binary]>=3.0" sqlalchemyCU_1CU_2CU_4CU_8databricks-langchain[memory]CU_1CU_2CU_4CU_8databricks-langchain[memory]