创建和管理持续具体化视图
本文档介绍了如何在 Bigtable 中创建和操作持续具体化视图。在阅读本文档之前,请先阅读持续具体化视图中的概览。
您可以使用 Google Cloud CLI、 Google Cloud 控制台中的 Bigtable Studio 查询编辑器,或者适用于 Java 和 Go 的 Bigtable 客户端库来创建持续具体化视图。
准备工作
如果您计划使用 gcloud CLI,请执行以下步骤:
-
安装 Google Cloud CLI。
-
如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
如果 gcloud CLI 返回 Method not found 消息,请再次运行 gcloud auth login 命令。
所需的角色
如需获得创建和管理持续具体化视图所需的权限,请让您的管理员为您授予实例的 Bigtable Admin (roles/bigtable.admin) 角色。否则,请根据您要执行的操作,在实例级层请求以下权限:
- 创建:
bigtable.materializedViews.create - 更新:
bigtable.materializedViews.update - 删除:
bigtable.materializedViews.delete - 列表:
bigtable.materializedViews.list
如需创建持续具体化视图,您还必须至少拥有源表的 bigtable.tables.readRows 权限。
如需查看所有可用的角色和权限,请参阅使用 IAM 进行 Bigtable 访问权限控制。
创建连续的具体化视图
在创建持续具体化视图之前,请执行以下操作:
- 可选:作为最佳实践,请为实例中的集群启用自动扩缩功能,以确保在 Bigtable 处理和同步持续具体化视图时,以及在处理任何额外的存储空间用量时,这些集群可以在必要时扩容。
- 可选:确定您是希望在所有集群中提供持续具体化视图,还是希望将其处理和查询可用性隔离到单个集群。如需了解详情,请参阅不确定性 SQL 函数。
- 确定您有权读取的 Bigtable 表,以用作连续具体化视图的来源。
准备定义连续的具体化视图的 SQL 查询。如需了解查询要求,请参阅具体化视图。
控制台
在 Google Cloud 控制台中,打开 Bigtable 实例列表。
请选择一个实例。
在导航窗格中,点击 Bigtable Studio。
点击 ,然后选择编辑器,即可打开新标签页。
在查询编辑器出现时,编写查询。如果查询是有效的 SQL,系统会显示“有效”消息。
可选:如需以 SQL 样式设置语句的格式,请点击格式化。
点击运行。查询结果会显示在结果表中。
对查询感到满意后,点击另存为展开箭头,然后选择另存为物化视图。
在保存物化视图对话框中,为视图输入一个名称,然后点击保存。
如需详细了解如何使用查询编辑器,请参阅使用 Bigtable Studio 管理数据。
gcloud
如需创建持续具体化视图,请使用 gcloud bigtable materialized-views create 命令:
gcloud bigtable materialized-views create VIEW \
--instance=INSTANCE --query=QUERY
替换以下内容:
VIEW:持续具体化视图的唯一标识符。在查询持续具体化视图时,您可以使用此 ID 作为表 ID。INSTANCE:要在其中创建持续具体化视图的实例的标识符。必须与源表位于同一实例中。QUERY:用于定义连续的具体化视图的有效 SQL 语句。
可选:启用防删除保护
如需为持续具体化视图启用防删除保护,请在命令中附加 --deletion-protection=DELETION_PROTECTION。将 DELETION_PROTECTION 替换为 true 或 false。
可选:创建仅限于单个集群的视图
默认情况下,Bigtable 会在实例中的所有集群之间复制持续具体化的视图。如需仅保留特定集群中的视图,请使用 CLUSTER_ATTRIBUTE 定义视图,并传递 --ignore-warnings 标志:
gcloud bigtable materialized-views create VIEW \
--instance=INSTANCE \
--query="SELECT ... WHERE CLUSTER_ATTRIBUTE('cluster_id') = 'CLUSTER_ID'" \
--ignore-warnings
替换以下内容:
VIEW:持续具体化视图的唯一标识符。在查询持续具体化视图时,您可以使用此 ID 作为表 ID。INSTANCE:要在其中创建持续具体化视图的实例的标识符。必须与源表位于同一实例中。CLUSTER_ID:您要维护视图的集群的标识符。
由于 CLUSTER_ATTRIBUTE 会在不同集群中产生不同的结果,因此您必须添加 --ignore-warnings 标志来确认这些差异。如需详细了解查询语法和要求,请参阅将视图隔离到单个集群。
查询连续的具体化视图
持续具体化视图处于有效状态后,您可以使用 Google Cloud 控制台中的 Bigtable Studio 或受支持的客户端库,像查询任何其他表一样查询该视图。如需详细了解查询语法和要求,请参阅具体化视图。
如需在初始填充完成之前测试和查询视图,请使用 @{allow_incomplete_view=true} 查询提示。如需了解详情,请参阅在初始填充期间读取数据。
更新连续的具体化视图
您可以更新持续具体化视图的防删除保护。您无法更新用于定义连续具体化视图的 SQL 查询;如果您需要修改该查询,必须先删除连续具体化视图,然后创建一个包含您的更改的新视图。
控制台
您无法在控制台中更新持续具体化视图。 请改用 gcloud CLI。
gcloud
如需为持续具体化视图启用或停用防删除保护,请使用 gcloud bigtable materialized-views update 命令。
gcloud bigtable materialized-views update VIEW \
--instance=INSTANCE --deletion-protection=DELETION_PROTECTION
替换以下内容:
VIEW:要更新的持续具体化视图的唯一标识符INSTANCE:包含持续具体化视图的实例的标识符DELETION_PROTECTION:true或false
删除连续的具体化视图
您可以删除未启用防删除保护的持续具体化视图。您无法撤消此操作。
控制台
在 Google Cloud 控制台中,打开 Bigtable 实例列表。
从列表中选择一个实例。
在导航窗格中,点击 Bigtable Studio。
展开具体化视图。
在要删除的视图旁边,点击 more_vert 操作菜单,然后点击删除。
gcloud
如需删除持续具体化视图,请使用 gcloud bigtable materialized-views delete 命令:
gcloud bigtable materialized-views delete VIEW \
--instance=INSTANCE
替换以下内容:
VIEW:要删除的持续具体化视图的唯一标识符INSTANCE:包含持续具体化视图的实例的标识符
获取连续的物化视图的列表
您可以查看实例的持续具体化视图列表。
控制台
在 Google Cloud 控制台中,打开 Bigtable 实例列表。
从列表中选择一个实例。
在导航窗格中,点击 Bigtable Studio。系统会显示连续的物化视图的列表。
可选:系统会列出实例中的前 10 个视图。如需再查看 10 个,请点击显示更多。
gcloud
如需列出实例的所有持续具体化视图,请使用 gcloud bigtable materialized-views list 命令。
gcloud bigtable materialized-views list --instance=INSTANCE
将 INSTANCE 替换为实例 ID。