管理表

本页面介绍了如何使用 cbt 命令行工具创建、修改和删除表,以及如何使用 cbt 工具或 Google Cloud Console 获取现有表的相关信息。

cbt 工具支持若干未在本页面中说明的命令。 如需了解完整的命令列表,请参阅 cbt 参考文档

您还可以使用一个 Cloud Bigtable 客户端库服务 API 以编程方式管理表。

准备工作

开始之前,请先安装 cbt 工具

配置 cbt 工具

您可以为以下 cbt 配置设置指定默认值:

  • Cloud Bigtable 实例所在的项目。
  • 要连接到的 Cloud Bigtable 实例。
  • 用于连接您的实例的凭据文件(采用 JSON 格式)。 请参阅关于创建服务帐号密钥的说明。如果您已经通过运行 gcloud auth application-default login 进行了身份验证,或者在 Compute Engine 实例上使用 cbt 工具,则无需凭据文件。
  • 打算使用的 API 端点。您通常不需要更改这些值。

如需指定这些设置的默认值,请在您的主目录中创建一个 .cbtrc 文件。您可以使用命令行标志替换 .cbtrc 中的默认值。

如需创建 .cbtrc 文件,请运行以下命令,并将 [PROJECT_ID][INSTANCE_ID] 替换为适当的值:

echo -e "project = [PROJECT_ID]\ninstance = [INSTANCE_ID]" > ~/.cbtrc

为简单起见,本页面中的其余说明假定您已在 .cbtrc 文件中设置项目 ID 和实例 ID。您还可以在每次运行 cbt 时使用 -project-instance 标志设置这些值。

创建表

使用 cbt 工具创建表时,您无需指定要在表中使用的列族。您可以稍后添加或删除列族。

要创建表,请使用以下命令,并将 [TABLE_NAME] 替换为相应表名:

cbt createtable [TABLE_NAME]

按行键拆分表

作为全托管式服务,Cloud Bigtable 的一项功能是自动跨多个节点拆分表。此功能会尽可能均匀分布存储在每个节点上的数据量,并确保频繁访问的行分散开来,因此可优化性能。

创建表时,您可以选择一个行键来预拆分表。例如,如果您要向表中写入多行,则可指定特定行来预拆分表。预拆分表并非必需操作,但这样做很有用,因为可让 Cloud Bigtable 了解在创建表时负载和数据可能归入何处。预拆分表后,Cloud Bigtable 就无需在数据到达时立即拆分表并再平衡负载。

不会一直保持按行键(即您在创建表时选择用于预拆分表的行键)拆分的状态。Cloud Bigtable 最终会根据表中的数据量以及各行的访问频率,按不同的行键拆分表。

如需根据行键预拆分表,请使用以下语法创建表。将 [TABLE_NAME] 替换为表名称,并将 [SPLITS] 替换为要在预拆分中使用的以英文逗号分隔的行键前缀列表

cbt createtable [TABLE_NAME] splits=[SPLITS]

例如,如需使用以 1020 开头的行键预拆分 my-table 表,请运行以下命令:

cbt createtable my-table splits=10,20

修改表中的列族

您可以使用 cbt 工具在现有表中添加或删除列族。

添加列族

如需将列族添加到表中,请使用以下命令,并将 [TABLE_NAME][FAMILY_NAME] 分别替换为表名称和列族名称:

cbt createfamily [TABLE_NAME] [FAMILY_NAME]

例如,如需将 cf1cf2 列族添加到 my-table 表中,请运行以下命令:

cbt createfamily my-table cf1
cbt createfamily my-table cf2

删除列族

如需从表中删除列族,请使用以下命令,并将 [TABLE_NAME][FAMILY_NAME] 分别替换为表名称和列族名称:

cbt deletefamily [TABLE_NAME] [FAMILY_NAME]

例如,如需从 my-table 表中删除 cf2 列族,请运行以下命令:

cbt deletefamily my-table cf2

查看表的列表

控制台

如需查看实例中的表列表,请执行以下操作:

  1. 在 Cloud Console 中打开 Cloud Bigtable 实例列表。

    打开实例列表

  2. 点击要查看其表的实例。

  3. 在左侧窗格中,点击

    “表”页面显示实例中的表列表。

cbt

如需查看实例中的表列表,请运行以下命令:

cbt ls

查看表的相关信息

您可以使用 cbt 工具获取表中现有列族的列表。

如需查看表的列族,请使用以下命令,并将 [TABLE_NAME] 替换为表名称:

cbt ls [TABLE_NAME]

设置垃圾回收政策

本部分介绍如何使用 cbt 工具控制 Cloud Bigtable 为每个值保留的版本数量,以及如何提供值的到期时间。您还可以使用 Cloud Bigtable 客户端库以编程方式设置垃圾回收政策

为每个值保留多个版本

创建列族时,您可以指定要在该列族中为每个值保留的版本数。如果您未指定此设置,Cloud Bigtable 将使用以下任一默认设置:

  • 如果您使用适用于 Java 的 HBase 客户端或 HBase shell,或使用适用于Java 的 HBase 客户端的其他工具创建列族,则 Cloud Bigtable 仅在列族中保留每个值的一 个版本。此默认设置与 HBase 一致。
  • 如果您使用其他任何客户端库或工具(包括 cbt)创建列族,则 Cloud Bigtable 会为每个值保留无限多个版本。

如需更改列族中保留的版本数,请使用以下命令,并将 [TABLE_NAME][FAMILY_NAME][VERSIONS] 分别替换为表名称、列族名称和要保留的版本数:

cbt setgcpolicy [TABLE_NAME] [FAMILY_NAME] maxversions=[VERSIONS]

例如,如需更新 my-table 表中的 cf1 列族,使其保留每个值的五个版本,请运行以下命令:

cbt setgcpolicy my-table cf1 maxversions=5

设置值的有效期

创建列族时,您可以指定该列族中每个值的到期时间。如果您未指定此设置,则列族中的值将永不过期。

如需使值在指定时间后过期,请使用以下命令。将 [TABLE_NAME] 替换为表名称,将 [FAMILY_NAME] 替换为列族名称,并将 [DAYS] 替换为每个值要保留的天数。

cbt setgcpolicy [TABLE_NAME] [FAMILY_NAME] maxage=[DAYS]d

例如,如需在一天后移除 cf1 列族中的值,请运行以下命令:

cbt setgcpolicy my-table cf1 maxage=1d

备份和恢复表

Cloud Bigtable 允许您创建表备份,并为其分配最长为 30 天的存留时间。您可以将备份恢复到创建备份的实例中的新表。如需了解如何备份和恢复表,请参阅管理备份

删除表

如需删除表,请使用以下命令,并将 [TABLE_NAME] 替换为表名称:

cbt deletetable [TABLE_NAME]