个人数据库

什么是个人数据库?

个人数据库 (PDB) 是系统拥有、用户管理的数据库实例,由 Snowflake 自动预置。它用作专用的个人存储位置,用户可以在其中创建、组织和管理自己的数据库对象。

自动预置消除了用户手动选择或请求访问共享数据库的管理要求,从而确保专用的开发环境。当某个用户从系统中被删除时,其关联的 PDB 及其所有对象都会自动转移到 ACCOUNTADMIN 所有权。

PDB 的优点

  • 整理个人项目: 用户可以在隔离的环境中整理自己的项目,从而减少共享数据库中的混乱和潜在的命名冲突。

  • 易于管理员管理: 所有与文件相关的开发都完全由 RBAC 管理。

PDB 对象类型

目前,PDBs 支持两种为用户提供专用开发环境的主要对象类型:工作区和笔记本。

工作区

当用户首次与 工作区 UI 进行交互时,系统就会创建 PDB。工作区是基于文件的实体,需要存储在 Snowflake 数据库中。

笔记本

PDBs 为 Snowflake 笔记本 提供托管计算服务支持。为了启用代码执行,在 PDB 中自动创建 Snowflake 管理的服务对象。这可确保笔记本的执行上下文绑定到用户已拥有的所有角色和权限。此对象将工作区连接到 Snowpark Container Services (SPCS) 计算池,允许开发者执行其 Snowflake Notebooks 代码。

重要

用户必须拥有关联计算池的 USAGE 权限,然后才能创建服务来执行代码。任何具有 MANAGE GRANTS 权限的角色都可以授予此权限:

安全

PDB 的架构经过精心简化,并遵循最小权限原则,确保所有操作都严格限制在用户现有的安全上下文中:

  • 无新数据访问权限: PDBs 不引入任何新的或扩展的数据访问权限,也不引入任何额外的数据共享功能。用户无法将数据从常规数据库移动到 PDB

  • 权限上下文: 在工作区内执行的任何 SQL 查询都使用用户已拥有的完全相同的角色和权限集运行。这与标准的 Snowflake 工作区文件的执行环境相一致。

备注

个人数据库还支持个人密钥。密钥对象 由用户专有。默认情况下,这可确保密钥保持私密状态,只有用户才能访问,并且不会无意中共享。

PDB 管理和可见性

管理员可以监控和控制 PDBs 的使用情况,它们归系统所有,不归任何角色所有。对 PDB 的使用仅限于其分配的用户。PDB 中的对象无法共享。

管理员可见性

拥有 MANAGE GRANTS 权限的角色可以查看账户内的所有对象,包括个别用户拥有的个人对象。例如,在默认情况下,ACCOUNTADMIN 等角色可以查看所有数据库,包括个人数据库。这些角色还可以访问个人数据库中有关架构及其对象的详细信息。

  • 要查看账户内所有个人数据库的详细信息,请查询 DATABASES Account Usage 视图

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES
    WHERE DATABASE_NAME LIKE 'USER$%';
    
    Copy
  • 要查看特定工作区中存在的对象,请使用以下代码:

    SHOW WORKSPACES IN DATABASE "USER$CMEYER";
    
    Copy
  • 要查看特定用户的个人数据库,请使用以下代码:

    SHOW DATABASES LIKE 'USER$BOBR';
    
    Copy

    对于个人数据库,kind 列中的值为 PERSONAL DATABASE

  • 要查看特定个人数据库中的对象,请使用以下代码:

    SHOW OBJECTS IN DATABASE "USER$<username>";
    
    Copy

删除对象

  • 要删除个人数据库中的对象,请使用以下代码:

    DROP WORKSPACE "USER$JSMITH_DROP_WS_TEST".PUBLIC."drop_this_ws";
    
    Copy

成本注意事项

  • 用户无法在其 PDBs 的表中存储数据。

  • 存储成本仅反映工作区文件和关联元数据的大小。

限制

管理员无法执行以下任务:

  • 查看属于其他用户的文件名或文件内容。

  • 查看 PDBs 使用的存储空间。PDBs 不会出现在 DATABASE_STORAGE_USAGE_HISTORY 中。

  • 限制每个 PDB 使用的存储空间。

  • 删除 PDBs,或阻止单个用户使用它们。

  • 创建新的 PDBs。系统会在用户创建工作区时按需创建新的 PDBs。

语言: 中文