创建和管理逻辑视图

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

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

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

  • 避免重复查询:您可以在逻辑视图中存储和演化列映射和转换逻辑,其他逻辑视图可以使用该逻辑,而无需复制和粘贴该逻辑或了解该逻辑。
  • 与专为从关系型数据库读取数据而设计的系统集成:借助逻辑视图,您可以像读取关系型数据库表或 Cassandra 表一样读取 Bigtable 数据。
  • 对多个表运行相同的逻辑视图:通过修改 FROM 子句,您可以使用相同的视图查询 Bigtable 实例中的任何表。
  • 提供一致的界面:即使源表发生变化,您的应用也可以使用逻辑视图。

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

逻辑视图具有以下特征:

  • 必须使用 GoogleSQL for Bigtable 支持的 SQL 功能
  • 只读
  • 必须使用 SQL 读取,而不是通过调用 ReadRows 读取
  • 使用定义者权限。如果您有权从逻辑视图读取数据,即使您没有权从源表读取数据,也可以查询该逻辑视图。

准备工作

如果您计划使用 gcloud CLI,请按以下步骤操作:

  1. Install the Google Cloud CLI.
  2. To initialize the gcloud CLI, run the following command:

    gcloud init

所需的角色

如需获得创建和管理逻辑视图所需的权限,请让您的管理员为您授予实例的 Bigtable Admin (roles/bigtable.admin) 角色。否则,请根据您要执行的操作,在实例级别请求以下权限:

  • 创建时间:bigtable.logicalViews.create
  • 更新:bigtable.logicalViews.update
  • 删除:roles/bigtable.logicalViews.delete
  • 列表:bigtable.logicalViews.list
  • 说明:bigtable.logicalViews.get

如需创建逻辑视图,您还必须至少拥有来源表的 bigtable.table.readRows 权限。

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

创建逻辑视图

控制台

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

    打开实例列表

  2. 请选择一个实例。

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

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

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

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

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

    4. 对查询满意后,点击保存,然后选择保存视图

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

gcloud

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

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

替换以下内容:

  • VIEW:新视图的 ID,长度不得超过 128 个字符。该 ID 在实例中的表和视图 ID 中必须是唯一的。
  • QUERY:有效的 Bigtable 专用 GoogleSQL 查询
  • INSTANCE:要在其中创建视图的实例的 ID

更新逻辑视图

控制台

  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

替换以下内容:

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

删除逻辑视图

此操作无法撤消。如需删除逻辑视图,请使用 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'

后续步骤