在 Unity 目录中注册数据库

重要

此功能在以下区域中为公共预览版westuswestus2eastuseastus2centralussouthcentralusnortheuropewesteuropeaustraliaeastbrazilsouthcanadacentralcentralindiasoutheastasiauksouth

本页介绍如何将 Lakebase 数据库注册为只读 Unity 目录。 这样,就可以使用 Unity Catalog 权限来管理数据访问,并利用托管数据同步之类的集成功能。

所有权和权限

  • 如果数据库 不存在 ,可以随目录一起创建数据库。 在这种情况下,对象的所有权将遵循 这些准则
  • 目录创建者还必须对 Unity 目录元存储拥有 CREATE CATALOG 权限。

创建目录

若要将数据库注册到 Unity 目录,请使用 Azure Databricks UI、API 调用、Python SDK 或 CLI。

UI

  1. 在工作区边栏中单击 “计算 ”。
  2. “数据库实例 ”选项卡上,选择数据库实例。
  3. 在“ 目录 ”选项卡上,单击“ 创建目录”。
  4. 可以将现有数据库注册为 Unity 目录或创建新的数据库。 使用以下选项之一:
    • 若要使用现有数据库:请输入所需的 Unity 目录名称和现有 Postgres 数据库的名称。 默认数据库 databricks_postgres 可用作数据库名称。
    • 若要同时创建新的 Postgres 数据库和 Unity 目录目录:输入所需的目录名称并打开 “创建新数据库”。
  5. 单击 “创建”
  6. 创建后,单击 目录 列表中的目录以查看目录资源管理器视图。

Python SDK

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.database import DatabaseCatalog

# Initialize the Workspace client
w = WorkspaceClient()

# Register an existing database as a UC catalog
catalog = w.database.create_database_catalog(
    DatabaseCatalog(
        name="my_catalog",                    # Name of the UC catalog to create
        database_instance_name="my-instance", # Name of the database instance
        database_name="databricks_postgres",  # Name of the existing Postgres database
    )
)
print(f"Created database catalog: {catalog.name}")

# Create a new database and register it as a UC catalog
catalog = w.database.create_database_catalog(
    DatabaseCatalog(
        name="new_catalog",                   # Name of the UC catalog to create
        database_instance_name="my-instance", # Name of the database instance
        database_name="new_database",         # Name of the Postgres database to register (and optionally create)
        create_database_if_not_exists=True    # Create the database if it doesn't exist
    )
)
print(f"Created new database and catalog: {catalog.name}")

CLI

# Register an existing database as a UC catalog
databricks database create-database-catalog my_catalog my-instance databricks_postgres

# Create a new database and register it as a UC catalog
databricks database create-database-catalog new_catalog my-instance new_database \
  --create-database-if-not-exists

curl

export PG_DATABASE_NAME="<name of the PG database to sync to UC>"
export CATLAOG_NAME="<name of UC catalog to create>"
// Optional
export CREATE_DATABASE_IF_NOT_EXISTS="<whether to create a new database>"
curl -X POST --header "Authorization: Bearer ${DATABRICKS_TOKEN}" https://$WORKSPACE/api/2.0/database/catalogs \
--data-binary @- << EOF
{
  "name": "$CATALOG_NAME",
  "database_name": "$PG_DATABASE_NAME",
  "instance_name": "$INSTANCE_NAME",
  "create_database_if_not_exists": "$CREATE_DATABASE_IF_NOT_EXISTS" // optional
}

局限性

  • 数据库名称只能包含字母数字或下划线字符。 请注意,数据库名称不能包含连字符。
  • 基于数据库的 Unity Catalog 中创建的目录是只读的。

通过数据库目录浏览 Unity 目录中的 Postgres 对象

若要查看目录,请确保附加了正在运行的无服务器 SQL 仓库。

  1. 在工作区边栏中单击 “目录 ”。
  2. 目录 浏览器中,单击群集并选择正在运行的无服务器 SQL 仓库作为计算资源。
  3. 单击“ 开始”并关闭

打开目录、架构和表时,应自动触发同步。 但是,UI 可能会缓存数据以减少 Postgres 请求数,因此新对象可能不会立即显示。

若要触发完全刷新,请单击“ 刷新架构”图标

在 Unity 目录中删除数据库目录

你必须是数据库目录或元存储管理员的所有者才能将其删除。

Databricks 建议首先从数据库目录中删除所有同步表。 每个源表只能用于创建 20 个同步表,删除数据库目录后,同步表最多可能需要三天才能在 Unity 目录中清理。 Unity Catalog 中等待删除的同步表将计入每个源表最多 20 个同步表的限制。

使用 Azure Databricks UI、Python SDK、CLI 或 API 删除数据库目录。

UI

  1. 在工作区边栏中单击 “目录 ”。
  2. “目录 ”窗格中选择要删除的数据库目录。
  3. 单击 “Kebab”菜单图标。 然后单击“ 删除”。

Python SDK

from databricks.sdk import WorkspaceClient

# Initialize the Workspace client
w = WorkspaceClient()

# Delete a database catalog
catalog_name = "my_catalog"
w.database.delete_database_catalog(name=catalog_name)
print(f"Deleted database catalog: {catalog_name}")

CLI

# Delete a database catalog
databricks database delete-database-catalog my_catalog

curl

curl -X DELETE --header "Authorization: Bearer ${DATABRICKS_TOKEN}" https://$WORKSPACE/api/2.0/database/catalogs/$CATALOG_NAME

删除目录后,可以重命名或删除 Postgres 数据库。