本页面介绍了如何使用 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]
例如,如需使用以 10
和 20
开头的行键预拆分 my-table
表,请运行以下命令:
cbt createtable my-table splits=10,20
修改表中的列族
您可以使用 cbt
工具在现有表中添加或删除列族。
添加列族
如需将列族添加到表中,请使用以下命令,并将 [TABLE_NAME]
和 [FAMILY_NAME]
分别替换为表名称和列族名称:
cbt createfamily [TABLE_NAME] [FAMILY_NAME]
例如,如需将 cf1
和 cf2
列族添加到 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
查看表的列表
控制台
如需查看实例中的表列表,请执行以下操作:
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]