创建和管理表
本页面介绍如何使用 Google Cloud 控制台、Google Cloud CLI 或 cbt
CLI 创建 Bigtable 表并对其执行操作。
cbt
CLI 支持若干命令,本页面未对这些命令进行介绍。如需了解完整的命令列表,请参阅 cbt
参考文档。
您还可以使用 Cloud Bigtable 客户端库或服务 API 以编程方式创建和管理表。
如需了解如何创建和管理表的授权视图,请参阅授权视图。
准备工作
如果您打算使用命令行工具来处理表,请按照本部分中的步骤操作。
安装 gcloud CLI。
可选:如果您计划使用
cbt
CLI,请按照安装cbt
CLI中的说明(包括创建.cbtrc
文件的步骤)操作。本页面上的
cbt
CLI 说明假定您已在.cbtrc
文件中设置了项目 ID 和实例 ID。此外,每次运行cbt
CLI 命令时,您都可以使用-project
和-instance
标志设置这些值。
创建表
创建表时,您无需指定要在表中使用的列族。您可以稍后添加或删除列族。
控制台
要在实例中创建新表,请执行以下操作:
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
输入表 ID。
添加列族(可选)
您可以现在添加列,也可以稍后添加。表必须至少有一个列族才能向其中写入数据。 表必须至少有一个列族才能向其中写入数据或从中读取变更数据流。
可选:为表启用变更数据流。在启用变更数据流之前,请务必了解影响,包括存储费用和应用配置文件使用需求增多。如需查看这些详细信息,请参阅变更数据流概览。
选择启用变更数据流。
在到期时间字段中,输入一个介于 1 到 7 之间的数字,以指定变更数据流数据应保留的天数。
点击创建。
点击创建表。
gcloud
如需创建表,请运行以下命令。如需查看完整的选项列表,请参阅 gcloud bigtable 实例表创建。
gcloud bigtable instances tables create TABLE_ID \
--instance=INSTANCE_ID \
--project=PROJECT_ID \
--column-families=COLUMN-FAMILIES
替换以下内容:
- TABLE_ID:新表的唯一 ID
- INSTANCE_ID:实例的 ID
- PROJECT_ID:将包含新表的项目
- COLUMN-FAMILIES:列族名称的英文逗号分隔列表。您可以稍后添加更多列族。
可选:
要防止表被删除,请在命令中附加
--deletion-protection
。如果您未应用此设置,则可以删除表。您还可以通过附加--no-deletion-protection
来明确允许删除表。如需为表启用变更数据流,请为变更数据流数据指定保留期限。在启用变更数据流之前,请务必了解影响,包括存储费用和应用配置文件使用需求增多。如需查看这些详细信息,请参阅变更数据流概览。
--change-stream-retention-period=RETENTION_PERIOD
将 RETENTION_PERIOD 替换为 Bigtable 应将表的变更数据流数据保留的时长。时间必须介于 1 到 7 天之间。可接受的单位包括天 (d)、小时 (h)、分钟 (m) 和秒 (s)。示例:
48h
或6d
如需让 Bigtable 每日备份表,请使用以下命令:
gcloud bigtable instances tables create TABLE_ID \ --instance=INSTANCE_ID \ --project=PROJECT_ID \ --column-families=COLUMN-FAMILIES \ --enable-automated-backup
cbt
使用以下命令,将 TABLE_NAME
替换为您的表名。您无法使用 cbt
CLI 创建启用了变更数据流的表。
cbt createtable TABLE_ID
可选:如需在表中创建聚合列族(预览版),请在列族名称中附加 :instsum
作为整数总和,并将 FAMILY_NAME
替换为新汇总列族的名称。以下代码会创建一个垃圾回收政策为 never
的聚合列族。
cbt createtable TABLE_ID families=FAMILY_NAME:never:intsum
如果您误删了表,请勿尝试手动创建已删除的表。使用 gcloud CLI 命令 bigtable instances tables undelete
恢复表。
可选:按行键拆分表
作为全代管式服务,Bigtable 的一项功能是自动跨多个节点拆分表。此功能会尽可能均匀分布存储在每个节点上的数据量,并确保频繁访问的行分散开来,因此可优化性能。
使用 gcloud CLI、cbt
CLI 或 Cloud Bigtable 客户端库创建表时,您可以选择行键来预拆分表。例如,如果您要向表中写入多行,则可指定特定行来预拆分表。发生初始拆分时,您最多可以提供 100 个行键。
预拆分表并非必需操作,但这样做很有用,因为可让 Bigtable 了解在创建表时负载和数据可能归入何处。预拆分表后,Bigtable 就无需在数据到达时立即拆分表并再平衡负载。
表不会一直保持按行键(即您在创建表时选择用于预拆分表的行键)拆分的状态。Bigtable 最终会根据表中的数据量以及各行的访问频率,按不同的行键拆分表。
控制台
使用 Google Cloud 控制台创建表时不能预拆分行。
gcloud
如需按行键拆分表,请运行以下命令。如需查看完整的选项列表,请参阅 gcloud bigtable 实例表创建。
gcloud bigtable instances tables create TABLE_ID\
--instance=INSTANCE_ID \
--project=PROJECT_ID \
--column-families=COLUMN-FAMILIES \
--splits=SPLITS
替换以下内容:
- TABLE_ID:新表的唯一 ID
- INSTANCE_ID:实例的 ID
- PROJECT_ID:将包含新表的项目
- COLUMN-FAMILIES:列族名称的英文逗号分隔列表。您可以稍后添加更多列族。
- SPLITS:最初应拆分表所按的行键,例如
10,20
。
cbt
如需根据行键预拆分表,请使用以下语法创建表。将 [TABLE_NAME]
替换为表名称,并将 [SPLITS]
替换为要在预拆分中使用的行键前缀的逗号分隔列表。
```
cbt createtable [TABLE_NAME] splits=[SPLITS]
```
例如,如需使用以 10
和 20
开头的行键预拆分 my-table
表,请运行以下命令:
```
cbt createtable my-table splits=10,20
```
修改表中的列族
您可以在现有表中添加列族。如果表未启用删除保护,则可以删除表中的列族。
添加列族
控制台
gcloud
您无法使用 gcloud CLI 将列族添加到表中。
cbt
如需将列族添加到表中,请使用以下命令,并将 [TABLE_NAME]
和 [FAMILY_NAME]
分别替换为表名称和列族名称:
cbt createfamily [TABLE_NAME] [FAMILY_NAME]
例如,如要向 my-table
表中添加 cf1
和 cf2
列族,请使用以下命令:
cbt createfamily my-table cf1
cbt createfamily my-table cf2
可选:如需向表添加聚合列族(预览版),请在列族名称中附加 :instsum
作为整数总和,并将 FAMILY_NAME
替换为新的汇总列族的名称。以下命令创建了一个表,其中包含一个聚合列族,垃圾回收政策为 never
。
cbt createtable TABLE_ID families=FAMILY_NAME:never:intsum
删除列族
您可以在未启用删除保护的表中删除列族。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的
修改。对于要删除的每个列族,完成以下操作:
- 将鼠标悬停在要删除的列族所在的行上。
- 点击 。
点击保存。
如需确认您了解删除列族是永久性的并且列族中的所有数据都将被删除,请在文本框中输入“删除列族”。
点击确认。
gcloud
您无法使用 gcloud CLI 从表中删除列族。
cbt
如需从表中删除列族,请使用以下命令,并将 [TABLE_NAME]
和 [FAMILY_NAME]
分别替换为表名称和列族名称:
cbt deletefamily [TABLE_NAME] [FAMILY_NAME]
例如,如需从 my-table
表中删除 cf2
列族,请运行以下命令:
cbt deletefamily my-table cf2
查看表的列表
控制台
要查看实例中的表列表,请执行以下操作:
gcloud
如需查看表列表,请运行 gcloud bigtable instances tables list 命令。
gcloud bigtable instances tables list --instances=INSTANCE_IDS
替换以下内容:
- INSTANCE_IDS:以英文逗号分隔的实例 ID 列表。
cbt
如需查看实例中的表列表,请运行以下命令:
cbt ls INSTANCE_ID
替换以下内容:
INSTANCE_ID
:实例的永久性标识符。
C++
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
查看表的相关信息
控制台
要查看表的相关信息,请执行以下操作:
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。 对于每个表,Google Cloud 控制台会显示存储该表的集群数量、表的状态、存储空间利用率以及表的任何当前备份的标识符。
如需查看表的列族名称,请点击
。如需关闭修改表窗格,请点击取消。如需查看有关表的其他详细信息(包括表级层指标和复制状态),请点击表的名称。
gcloud
如需查看表的相关信息,请运行 gcloud bigtable instances tables describe 命令。
gcloud bigtable instances tables describe TABLE_ID \
--instance=INSTANCE_ID
替换以下内容:
- TABLE_ID:表的唯一 ID
- INSTANCE_ID:实例的 ID
cbt
您可以使用 cbt
CLI 获取表中现有列族的列表。
使用以下命令,将 [TABLE_NAME]
替换为表名称:
cbt ls [TABLE_NAME]
设置垃圾回收政策
垃圾回收政策告诉 Bigtable 要保留哪些数据以及要将哪些数据标记为待删除。垃圾回收政策是在列族级设置的。您可以在创建表时或之后设置这些政策。
创建列族时,您可以指定要在该列族的每个列中保留的单元数量。如果您未指定此设置,Bigtable 将使用以下任一默认设置:
如果您使用 Java 版 Cloud Bigtable HBase 客户端或 HBase shell 创建列族,或通过使用 Java 版 HBase 客户端的其他工具创建列族,Bigtable 会为列族中的每个行/列交集仅保留一个单元。此默认设置与 HBase 一致。
如果您使用 Google Cloud 控制台、任何其他客户端库或
cbt
CLI 创建列族,则 Bigtable 会在每一列中保留无限数量的单元。
如需详细了解如何查看、设置和更新垃圾回收政策,请参阅配置垃圾回收政策。
备份和恢复表
请参阅管理备份,了解如何备份表以及利用备份恢复到新表。
如果您在创建表时启用了自动备份,则可以修改表的自动备份配置以启用或停用自动备份,或者将保留期限更改为自备份创建之时起最多 90 天。如需了解详情,请参阅使用自动备份。
启用、停用或配置变更数据流
如需了解以下任务,请参阅配置变更数据流。
- 在现有表上启用变更数据流
- 停用变更数据流
- 更新变更数据流的保留期限
删除表
删除表时,该表的所有授权视图也会一并删除。如果表的任何授权视图启用了删除保护,则无法删除表。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要删除的表的
。点击删除。
如需确认此操作将从实例的所有集群中删除该表,并且只能在七天内恢复删除的表,请在文本框中输入表 ID。
点击删除。
gcloud
如需删除表,请运行 gcloud bigtable instances tables delete 命令。
gcloud bigtable instances tables delete --instance=INSTANCE_ID
替换以下内容:
- INSTANCE_ID:实例的 ID
在终端中输入
y
以确认删除表。
cbt
如需删除表,请使用以下命令,并将 [TABLE_NAME]
替换为表名称:
cbt deletetable [TABLE_NAME]
恢复删除的表
如果您不小心删除了表,可以使用 gcloud CLI 命令 bigtable instances tables undelete
来undelete取消删除或恢复表。 请勿首先尝试手动创建该被删除的表。
如需恢复删除的表,请在终端中运行以下命令:
gcloud bigtable instances tables undelete TABLE_ID --instance=INSTANCE_ID
替换以下内容:
- TABLE_ID:表的唯一标识符
- INSTANCE_ID:实例的 ID
存在以下限制:
- 您只能在表删除后的约七天内恢复删除的表。
- 您无法使用 Google Cloud 控制台、Cloud Bigtable 客户端库或
cbt
CLI 恢复删除的表。 - 您无法从已删除的实例中恢复删除的表。
- 如果删除的表启用了 CMEK,则无法恢复。
- 恢复删除的表时,不会恢复删除操作之前该表拥有的任何精细 IAM 政策绑定。
您可以视需要在审核日志中查看 undelete
操作的状态。
修改删除保护
如果您是包含 bigtable.tables.update
权限的角色中的主账号(例如 roles/bigtable.admin
),则可以为表启用或停用删除保护。删除保护可防止删除表、表中的所有列族以及包含表的实例。
为表启用删除保护并不会为表的授权视图启用该功能。同样,停用表的删除保护也不会针对表的已获授权的视图停用删除保护。您必须单独更新表的授权视图。
控制台
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击表 ID 旁边的
。如需启用删除防护,请点击防止删除。如需停用删除保护,请点击启用删除。只有有效选项才可见。
gcloud
如需为表启用删除保护,请运行 gcloud bigtable instances
table update
命令:
gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--deletion-protection
如需为表停用删除保护,请运行以下命令:
gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--no-deletion-protection
替换以下内容:
+ TABLE_ID: the unique identifier for the table
+ INSTANCE_ID: the ID of the instance
cbt
您无法使用 cbt
CLI 启用或停用删除防护。