创建和管理表
本页介绍了如何使用 Google Cloud 控制台、Google Cloud CLI 或 cbt
CLI 对 Bigtable 表创建和执行操作。
通过
cbt
CLI
支持若干未在本页中描述的命令。如需了解完整的命令列表,请参阅 cbt
参考文档。
您还可以使用 Cloud Bigtable 客户端库或 服务 API。
如需了解如何创建和管理表的授权视图,请参阅授权视图。
准备工作
如果您打算使用命令行工具来处理表,请按照本部分中的步骤操作。
安装 gcloud CLI。
可选:如果您打算使用
cbt
CLI ,请按照 在 Google Cloud 控制台中安装cbt
CLI , 包括创建.cbtrc
文件的步骤。通过
cbt
CLI 本页面中的说明假设您已将项目设置为 在.cbtrc
文件中添加项目 ID 和实例 ID。此外,每次运行cbt
CLI 命令时,您都可以使用-project
和-instance
标志设置这些值。
创建表
创建表时,您无需指定要在表中使用的列族。您可以稍后添加或删除列族。
控制台
要在实例中创建新表,请执行以下操作:
在 Google Cloud 控制台中打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
输入表 ID。
添加列族(可选)
您可以现在添加列,也可以稍后添加。表必须至少有一个列族才能向其中写入数据。 表必须至少有一个列族才能向其中写入数据或从中读取变更数据流。
可选:为表启用变更数据流。在启用变更数据流之前,请务必了解影响,包括存储费用和应用配置文件使用需求增多。如需查看这些详细信息,请参阅变更数据流概览。
选择启用变更数据流。
在到期时间字段中,输入一个介于 1 到 7 之间的数字,以指定变更数据流数据应保留的天数。
点击创建。
可选:如果您不希望 Bigtable 每天为表创建备份,请清除启用自动备份旁边的复选框。有关详情,请参阅使用自动 备份(预览版)。
点击创建表。
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
可选:如需在表中创建汇总列族,请将汇总类型附加到列族名称后面。以下
创建一个包含垃圾回收的聚合列族
never
的收集政策。
cbt createtable TABLE_ID families=FAMILY_NAME:never:TYPE
替换以下内容:
- TABLE_ID:新表的唯一 ID
- FAMILY_NAME:以英文逗号分隔的列族列表 名称。您可以稍后添加更多列族。
- TYPE:汇总类型。必须是
intsum
、intmin
、intmax
或inthll
。
有关更多选项,请参阅创建
表格
cbt
CLI
参考。
如果您不小心误删了某个表,请勿尝试手动创建该被删除的表。请使用 gcloud CLI 命令 bigtable instances tables undelete
来恢复该表。
可选:按行键拆分表
为了优化性能,Bigtable 会持续将表拆分到多个节点,均匀分布存储在每个节点上的数据量,并尽可能确保频繁访问的行分散开来。此持续性流程是自动进行的。
创建新表时,您可以指定初始表分块。Bigtable 根据您提供的行键拆分表。如果键空间过大,Bigtable 会进一步拆分表。通过 创建表后,初始分块会保留大约 24 小时 。发生初始拆分时,您最多可以提供 100 个行键。
例如,如果您要向表中写入多行,则可指定特定行来预拆分表。
预拆分表并非必需操作,但这样做很有用,因为可让 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
如需将列族添加到表中,请使用以下命令:
cbt createfamily TABLE_ID FAMILY_NAME
例如,如要向 my-table
表中添加 cf1
和 cf2
列族,请使用以下命令:
cbt createfamily my-table cf1
cbt createfamily my-table cf2
可选:如需向表中添加汇总列族,请将列族名称附加到汇总类型后面。以下代码会创建一个表,其中包含垃圾回收政策为 never
的汇总列族。
cbt createfamily TABLE_ID FAMILY_NAME:never:TYPE
替换以下内容:
- TABLE_ID:表 ID
- FAMILY_NAME:列族名称的英文逗号分隔列表。您可以稍后添加更多列族。
- TYPE:汇总类型。必须为
intsum
、intmin
、intmax
或inthll
。
删除列族
您可以在未启用删除保护的表中删除列族。
控制台
在 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
来取消删除或恢复表。 请勿首先尝试手动创建该被删除的表。
如需恢复删除的表,请在终端中运行以下命令:
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 启用或停用删除防护。