创建和管理逻辑视图

在 Bigtable 中,逻辑视图是 SQL 查询的结果,充当可由其他 SQL 查询查询的虚拟表。 数据保留在源表中。

本文档介绍了逻辑视图,以及如何创建和对其执行操作。如需与连续具体化视图和授权视图进行比较,请参阅 表和视图

借助逻辑视图,您可以对 Bigtable 数据执行以下操作:

  • 避免重复查询:您可以将列映射和类型转换逻辑存储在逻辑视图中,其他逻辑视图可以使用该逻辑,而无需复制和粘贴该逻辑或需要了解该逻辑。
  • 与旨在从关系型数据库读取数据的系统集成: 借助逻辑视图,您可以让 Bigtable 数据看起来像 关系型数据库表或 Cassandra 表。
  • 针对多个表运行同一逻辑视图:通过修改 FROM 子句,您可以使用同一视图查询 Bigtable 实例中的任何表。
  • 提供一致的界面:您的应用可以使用逻辑视图 即使源表发生更改。
  • 限制对特定列或行的读取权限:您可以仅公开您希望允许用户读取的 数据,而无需向用户授予对 整个表的访问权限。

逻辑视图是实例级资源。您可以使用 Google Cloud CLI 或控制台中的 Bigtable Studio 查询编辑器创建逻辑视图 。 Google Cloud 如需查询逻辑视图,您可以使用 Bigtable Studio 查询编辑器或任何支持 SQL的 Bigtable 客户端库。

逻辑视图具有以下特征:

您用于定义逻辑视图的行键、列限定符和列值被视为服务数据。因此,请勿 使用包含敏感 信息的行键、列限定符或 列值创建逻辑视图。如需了解服务数据的处理方式,请参阅Google Cloud 隐私权 声明

准备工作

如果您计划使用 gcloud CLI,请执行以下步骤:

  1. 安装 Google Cloud CLI。

  2. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  3. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init

所需的角色

如需使用逻辑视图,您需要以下权限:

管理逻辑视图

  • 如需创建、更新或删除逻辑视图,您需要拥有实例的 Bigtable Admin (roles/bigtable.admin) 角色。
  • 或者,您可以让管理员向您授予以下实例级权限:
    • 创建:bigtable.logicalViews.create
    • 更新:bigtable.logicalViews.update
    • 删除:bigtable.logicalViews.delete

查看和查询逻辑视图

  • 如需列出或描述逻辑视图,您需要拥有实例的 Bigtable Reader (roles/bigtable.reader) 角色。
  • 或者,您可以让管理员向您授予以下实例级权限:

    • 列出:bigtable.logicalViews.list
    • 描述:bigtable.logicalViews.get
  • 如需查询逻辑视图,您需要拥有逻辑视图的 bigtable.logicalViews.readRows 权限。

创建逻辑视图

  • 您必须至少拥有源表的 bigtable.tables.readRows 权限。

授予对特定视图的读取权限

您可以向用户授予读取特定逻辑视图的权限,即使他们没有任何其他 Bigtable 权限也是如此。为此,请使用 IAM 条件仅对该视图授予 bigtable.logicalViews.readRows 权限:

  1. 向用户授予项目的 bigtable.reader 角色。
  2. 创建将 bigtable.logicalViews.readRows 权限限制为特定逻辑视图的 IAM 条件。 例如:

    resource.name == projects/PROJECT_ID/instances/INSTANCE_ID/logicalViews/VIEW
    

    替换以下内容:

    • PROJECT_ID:Bigtable 实例所在的 Google Cloud 项目。
    • VIEW:新逻辑视图的 ID,长度上限为 128 个字符。该 ID 在实例中的表 ID 和视图 ID 中必须是唯一的。
    • INSTANCE_ID:要在其中创建逻辑视图的实例的 ID。

    如需了解详情,请参阅 使用 IAM 条件管理对资源的访问权限

如需详细了解所有可用角色和权限,请参阅 使用 IAM 进行 Bigtable 访问权限控制

创建逻辑视图

控制台

  1. 在 Google Cloud 控制台中打开 Bigtable 实例列表。

    打开实例列表

  2. 请选择一个实例。

  3. 在导航窗格中,点击 Bigtable Studio

  4. 点击 ,然后选择 编辑器 ,打开一个新标签页。

    1. 在查询编辑器中,编写查询。如果查询是有效的 SQL,系统会显示有效 消息。

    2. 可选:如需以 SQL 样式设置语句的格式,请点击格式

    3. 点击运行 。查询结果会显示在结果 表中。

    4. 对查询感到满意后,点击另存为 展开箭头,然后选择另存为逻辑视图

  5. 保存逻辑视图 对话框中,输入视图的名称,然后点击保存

    如需详细了解如何使用查询编辑器,请参阅使用 Bigtable Studio 管理数据

gcloud

如需创建逻辑视图,请使用 gcloud bigtable logical-views create 命令。

gcloud bigtable logical-views create VIEW \
  --instance=INSTANCE --query=QUERY

替换以下内容:

  • VIEW:新逻辑视图的 ID,长度上限为 128 个字符。该 ID 在实例中的表 ID 和视图 ID 中必须是唯一的。
  • QUERY:有效的 GoogleSQL for Bigtable 查询
  • INSTANCE:要在其中创建逻辑视图的实例的 ID

可选:

  • 如需防止逻辑视图被删除,请在命令中附加 --deletion-protection 标志。如果您未应用此设置,则可以删除逻辑视图。您还可以通过附加 --no-deletion-protection 来明确允许删除逻辑视图。如需了解详情,请参阅本文档的 更新逻辑视图部分。

更新逻辑视图

控制台

您无法在 Google Cloud 控制台中更新逻辑视图的删除保护。如需启用或停用防删除保护,请使用 Google Cloud CLI。

  1. 在 Google Cloud 控制台中打开 Bigtable 实例列表。

    打开实例列表

  2. 从列表中选择一个实例。

  3. 在导航窗格中,点击 Bigtable Studio 。探索器中会显示视图列表。

  4. 可选:系统会列出实例中的前 10 个视图。如需查看另外 10 个,请点击展开

  5. 在要更新的视图旁边,点击 more_vert 操作菜单, 然后点击 查看定义

  6. 修改查询。

  7. 点击运行

  8. 验证结果窗格中显示的数据应包含在视图中后,点击另存为

  9. 在对话框中,输入您修改的视图的 ID。

    对话框会显示一条消息,警告您将覆盖现有视图。

  10. 点击保存

gcloud

如需更新逻辑视图以运行其他查询或修改删除 保护,请使用 gcloud bigtable logical-views update 命令。您必须指定查询、防删除保护或两者都指定。

如需更新逻辑视图的查询:

gcloud bigtable logical-views update VIEW  \
    --instance=INSTANCE --query=QUERY

如需为逻辑视图启用防删除保护:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --deletion-protection=true

如需为逻辑视图停用防删除保护:

gcloud bigtable logical-views update VIEW \
    --instance=INSTANCE \
    --deletion-protection=false

替换以下内容:

  • VIEW:要更新的逻辑视图的 ID
  • INSTANCE:包含逻辑视图的实例的 ID
  • QUERY:有效的 GoogleSQL 查询

删除逻辑视图

这是一项永久性的操作。

如果逻辑视图启用了防删除保护,您将无法删除它。如需删除启用了防删除保护的逻辑视图,您必须更新逻辑视图以停用防删除保护。如需了解详情,请参阅本文档的 更新逻辑视图部分。

控制台

  1. 在 Google Cloud 控制台中打开 Bigtable 实例列表。

    打开实例列表

  2. 从列表中选择一个实例。

  3. 在导航窗格中,点击 Bigtable Studio 。探索器中会显示视图列表。

  4. 可选:系统会列出实例中的前 10 个视图。如需查看另外 10 个,请点击展开

  5. 展开视图

  6. 在要删除的视图旁边,点击 more_vert 操作菜单, 然后点击 删除

gcloud

如需删除逻辑视图,请使用 gcloud bigtable logical-views delete 命令。

  gcloud bigtable logical-views delete VIEW \
    --instance=INSTANCE

替换以下内容:

  • VIEW:要更新的逻辑视图的 ID
  • INSTANCE:包含逻辑视图的实例的 ID

获取实例的逻辑视图列表

您可以查看实例的逻辑视图列表。

控制台

  1. 在 Google Cloud 控制台中打开 Bigtable 实例列表。

    打开实例列表

  2. 从列表中选择一个实例。

  3. 在导航窗格中,点击 Bigtable Studio 。探索器中会显示视图列表。

  4. 可选:系统会列出实例中的前 10 个视图。如需查看另外 10 个,请点击展开

gcloud

如需查看实例的逻辑视图列表,请使用 gcloud bigtable logical-views list 命令。

gcloud bigtable logical-views list --instance=INSTANCE

INSTANCE 替换为实例 ID。

描述逻辑视图

如需获取有关逻辑视图的详细信息,请使用 gcloud bigtable logical-views describe 命令。

  gcloud bigtable logical-views describe VIEW \
      --instance=INSTANCE

终端会显示类似于以下内容的详细信息:

  createTime: '2025-03-07T19:49:56.316578Z'
  etag: W/"/v1/17919275593532352351"
  name: projects/my-project/instances/my-instance/logicalViews/my-view
  query: SELECT street FROM addresses
  updateTime: '2025-03-07T19:49:56.316578Z'
  deletion_protection: true

查询逻辑视图

创建逻辑视图后,您可以像查询常规表一样使用 SQL 查询它。您可以在 SELECT 语句的 FROM 子句中使用逻辑视图。

在查询编辑器中,输入引用视图名称的 GoogleSQL 查询。例如,如果您的视图名为 MyLogicalView

SELECT *
FROM MyLogicalView
LIMIT 100;

如需详细了解如何在 Bigtable 中执行 SQL 查询,请参阅 在查询编辑器中使用 SQL 查询数据

后续步骤