创建和管理表
借助 Bigtable 表,您可以整理和存储大规模数据,以用于低延迟应用工作负载。您可以使用 Cloud de Confiance 控制台、Google Cloud CLI、cbt CLI 或通过 Cloud Bigtable 客户端库以编程方式创建和管理这些表。
如需详细了解如何创建和管理表的授权视图,请参阅授权视图。
准备工作
如果您打算使用命令行工具来处理表,请按照本部分中的步骤操作。
安装 gcloud CLI。
可选:如果您计划使用
cbtCLI,请按照安装cbtCLI 中的说明(包括创建.cbtrc文件的步骤)操作。本页面上的
cbtCLI 说明假定您已在.cbtrc文件中设置了项目 ID 和实例 ID。此外,每次运行cbtCLI 命令时,您都可以使用-project和-instance标志设置这些值。
创建表
创建表时,您无需指定要在表中使用的列族。您可以稍后添加或删除列族。
控制台
要在实例中创建新表,请执行以下操作:
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击 创建表。
输入表 ID。
可选:添加列族。
您可以现在添加列,也可以稍后添加。表必须至少有一个列族才能向其中写入数据或从中读取变更数据流。
可选:为表启用变更数据流。在启用变更数据流之前,请务必了解影响,包括存储费用和应用配置文件使用需求增多。如需查看这些详细信息,请参阅变更数据流概览。
选择启用变更数据流。
在保留时间字段中,输入一个介于 1 到 7 之间的数字,以指定变更数据流数据应保留的天数。
可选:如果您不希望 Bigtable 每天创建表的备份,请清除启用自动备份复选框。如需了解详情,请参阅使用自动备份。
-
选择启用分层存储。
在老化阈值字段中,输入一个天数,表示 Bigtable 在经过该天数后将数据从 SSD 存储空间移至不常访问的存储空间。该数字必须大于或等于 30。
可选,企业 Plus 版:默认情况下,系统会在表的实例中的所有集群中创建每日备份。如需选择 Bigtable 必须每天备份相应表的集群,请在选择要备份的集群字段中选择集群位置。 如需了解详情,请参阅配置自动备份集群位置。
可选:如需配置行键架构,请选择定义行键架构,然后执行以下操作:
在编码列表中,为行键架构选择一种编码类型。
如果您选择了 DelimitedBytes,请在定界符字段中输入用于分隔现有行键中的段的定界符。默认值为井号 (
#)。在细分字段中,输入细分的名称,例如
device_type。在类型列表中,选择行键段的数据类型。
根据所选的数据类型,在字节编码列表中,保留行键区段的默认编码类型或更改该类型。
可选:如果您的行键区段包含多个部分,请点击添加行键区段以添加其他字段。
点击创建。
gcloud
如需创建表格,请运行以下命令。如需查看选项的完整列表,请参阅 gcloud bigtable instances tables create。
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 每天创建表的备份,并将每个备份保留默认保留期限(7 天),请在创建表时使用
--enable-automated-backup标志。gcloud bigtable instances tables create TABLE_ID \ --instance=INSTANCE_ID \ --project=PROJECT_ID \ --column-families=COLUMN-FAMILIES \ --enable-automated-backup如需配置其他保留期限,请使用
--automated-backup-retention-period标志,而不是--enable-automated-backup标志,并提供不超过 90 天的值。该值必须以数字加上m、h或d单位(分钟、小时或天)表示,例如15d表示 15 天。企业 Plus 版:默认情况下,系统会在表的实例中的所有集群中创建每日备份。如需配置 Bigtable 必须在哪些集群位置创建表的每日备份,请使用
--automated-backup-locations标志,而不是--enable-automated-backup标志。提供以英文逗号分隔的集群位置列表,必须在这些位置启用自动备份。示例:us-central1-a,us-east1-b,europe-west1-c。如需启用不频繁访问存储空间作为分层存储(预览版)的一部分,请使用
--tiered-storage-infrequent-access-older-than标志,并将 AGE_THRESHOLD 替换为至少 30 天的值。可接受的单位包括天 (d)、小时 (h)、分钟 (m) 和秒 (s)。示例:32d或32d12h。gcloud beta bigtable instances tables create TABLE_ID \ --instance=INSTANCE_ID \ --project=PROJECT_ID \ --tiered-storage-infrequent-access-older-than=AGE_THRESHOLD
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 就无需在数据到达时立即拆分表并再平衡负载。
控制台
使用Cloud de Confiance 控制台创建表时不能预拆分行。
gcloud
如需按行键拆分表,请运行以下命令。如需查看选项的完整列表,请参阅 gcloud bigtable instances tables create。
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] 替换为要在预拆分中使用的行键前缀的逗号分隔列表。
```none
cbt createtable [TABLE_NAME] splits=[SPLITS]
```
例如,如需使用以 10 和 20 开头的行键预拆分 my-table 表,请运行以下命令:
```none
cbt createtable my-table splits=10,20
```
修改表中的列族
您可以在创建表时或向现有表添加列族。如果表未启用防删除保护,则可以删除表中的列族。
添加列族
控制台
向新表中添加列族
在创建表窗格中,针对要添加的每个列族,点击添加列族。
在列族名称字段中,输入列族的唯一标识符。
选择列族类型:
如果您选择了聚合,请在聚合器字段中选择以下选项之一:
- 总和:汇总所有单元格值的总和。
- 最小值:汇总最小单元格值。
- 最大值:汇总最大单元格值。
- HyperLogLog:汇总单元格值的近似基数。
为列族设置垃圾回收政策。
点击完成。
向现有表添加列族
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的 修改。
对于要添加的每个列族,请执行以下操作:
点击保存。
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。
删除列族
您可以在未启用防删除保护的表中删除列族。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的 修改。
对于要删除的每个列族,完成以下操作:
- 将鼠标悬停在要删除的列族所在的行上。
- 点击 。
点击保存。
如需确认您了解删除列族是永久性操作,并且列族中的所有数据都将被删除,请在文本字段中输入“删除列族”。
点击确认。
gcloud
您无法使用 gcloud CLI 从表中删除列族。
cbt
如需从表中删除列族,请使用以下命令,并将 [TABLE_NAME] 和 [FAMILY_NAME] 分别替换为表名称和列族名称:
cbt deletefamily [TABLE_NAME] [FAMILY_NAME]
例如,如需从 my-table 表中删除 cf2 列族,请运行以下命令:
cbt deletefamily my-table cf2
查看表的列表
控制台
要查看实例中的表列表,请执行以下操作:
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
- 点击表 ID 旁边的箭头以展开表复制列表。
- 点击表名旁边的查看指标,即可查看该表的系统分析洞见数据。
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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
C#
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Java
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Node.js
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
PHP
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Python
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
Ruby
如需了解如何安装和使用 Bigtable 的客户端库,请参阅 Bigtable 客户端库。
如需向 Bigtable 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
在运行代码示例之前,请将 GOOGLE_CLOUD_UNIVERSE_DOMAIN 环境变量设置为 s3nsapis.fr。
查看表的相关信息
控制台
要查看表的相关信息,请执行以下操作:
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 只会在列族中保留每个行与列交叉处的 1 个单元。此默认设置与 HBase 一致。
如果您使用 Cloud de Confiance 控制台、任何其他客户端库或
cbtCLI 创建列族 ,则 Bigtable 会在每一列中保留无限数量的单元。
如需详细了解如何查看、设置和更新垃圾回收政策,请参阅配置垃圾回收政策。
备份和恢复表
如需了解如何备份表以及从备份恢复到新表,请参阅管理备份。
如果您在创建表时启用了自动备份,则可以修改表的自动备份配置,以启用或停用自动备份,或者将保留期限更改为最长 90 天。如需了解详情,请参阅使用自动备份。
启用、停用或配置变更数据流
如需了解以下任务,请参阅配置变更数据流。
- 在现有表上启用变更数据流
- 停用变更数据流
- 更新变更数据流的保留期限
删除表
删除表也会删除该表的所有已获授权的视图。如果表的任何授权视图启用了防删除保护,您将无法删除该表。您也无法删除基于某个表的持续具体化视图。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要删除的表的 。
点击删除。
如需确认此操作将从实例的所有集群中删除该表,并且只能在七天内恢复删除的表,请在删除表框中输入表 ID。
点击删除。
gcloud
如需删除表,请运行
gcloud bigtable instances tables delete命令。gcloud bigtable instances tables delete TABLE_ID --instance=INSTANCE_ID替换以下内容:
- TABLE_ID:表的唯一 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
恢复表后,Bigtable 会自动为该表启用删除防护。
存在以下限制:
- 您只能在表删除后的约七天内恢复删除的表。
- 您无法使用 Cloud de Confiance 控制台、Cloud Bigtable 客户端库或
cbtCLI 恢复删除的表。 - 您无法从已删除的实例中恢复删除的表。
- 如果删除的表启用了 CMEK,则无法恢复。
- 恢复删除的表时,Bigtable 不会恢复已删除的表的任何精细 IAM 政策绑定。
您可以视需要在审核日志中查看 undelete 操作的状态。
修改防删除保护
如果您是包含 bigtable.tables.update 权限的角色中的主体(例如 roles/bigtable.admin),则可以为表启用或停用防删除保护。防删除保护可防止删除表、表中的所有列族以及包含表的实例。
为表启用防删除保护不会为该表的授权视图启用防删除保护。同样,停用表的删除保护功能不会停用该表的授权视图的删除保护功能。您必须单独更新表的授权视图。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击表 ID 旁边的 。
如需启用防删除保护,请点击防止删除。如需停用防删除保护,请点击启用删除。只有有效选项才可见。
gcloud
如需为表启用防删除保护,请运行 gcloud bigtable instances
table update 命令:
```sh
gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--deletion-protection
```
如需为表停用防删除保护,请运行以下命令:
```sh
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 启用或停用删除防护。
修改不常访问的存储空间的期限阈值
您可以随时修改分层存储中不频繁访问的年龄阈值。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的 修改。
在存在时间阈值字段中,输入新的天数,Bigtable 会在该天数之后将数据从 SSD 存储空间移至低频访问存储空间。该数字必须大于或等于 30。
gcloud
如需修改不经常访问的存储空间的年龄阈值,请运行带有 --tiered-storage-infrequent-access-older-than 标志的 gcloud beta bigtable instances tables update 命令:
gcloud beta bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--project=PROJECT_ID \
--tiered-storage-infrequent-access-older-than=AGE_THRESHOLD
替换以下内容:
- TABLE_ID:要更新的表的 ID。
- INSTANCE_ID:实例的 ID。
- PROJECT_ID:包含要更新的表的项目。
- AGE_THRESHOLD:时间阈值,必须至少为 30 天。可接受的单位包括天 (
d)、小时 (h)、分钟 (m) 和秒 (s)。示例:从之前的32d变为33d。
停用非频繁访问存储空间
您可以随时停用分层存储的低频访问功能。因此,Bigtable 会将非频繁访问存储空间中的所有数据移至 SSD 存储空间。在停用非频繁访问存储之前,请务必了解费用影响。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的 修改。
取消选中启用分层存储复选框。
点击保存。
gcloud
如需停用不频繁访问型存储空间,请使用 gcloud beta bigtable instances tables update 命令并带上 --clear-tiered-storage-config 标志:
gcloud beta bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--project=PROJECT_ID \
--clear-tiered-storage-config
替换以下内容:
- TABLE_ID:要更新的表的 ID
- INSTANCE_ID:实例的 ID
- PROJECT_ID:包含要更新的表的项目
后续步骤
- 了解如何将数据导入和导出到表格中以及从表格中导出数据。