创建和管理表
借助 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 实例列表。
点击要在其中创建表的实例。
在 Bigtable 导航菜单中,点击表。
表页面显示实例中的表列表。
点击 创建表。
在创建表窗格的表 ID 字段中,输入表的永久 ID。
可选:添加列族。
您可以在创建表时或之后添加列族。表必须至少有一个列族才能向其中写入数据或从中读取变更数据流。
可选:在企业 Plus 版中,如需使用微秒级时间戳粒度,请在时间戳粒度部分中选择使用微秒级时间戳。
可选:为表启用变更数据流。在启用变更数据流之前,请务必了解影响,包括存储费用和应用配置文件使用需求增多。如需了解详情,请参阅变更数据流概览。
选择启用变更数据流。
在保留时间字段中,输入一个介于 1 到 7 之间的整数,以指定变更数据流数据的保留天数。
可选:在配置自动备份部分中,为表配置自动备份。默认情况下,系统会选择启用自动备份,Bigtable 会在实例中的所有集群上创建每日标准备份,并将每个备份保留 7 天。如需了解详情,请参阅使用自动备份。
- 如果您不希望 Bigtable 每天创建表的备份,请清除启用自动备份。
- 在 SSD 实例上,如需创建每日热备份而不是标准备份,请在备份类型部分中选择热备份,然后在设置热备份转标准备份的时间字段中输入 1 到 10 之间的整数,以指定每个备份在多少天后自动转换为标准备份。默认值为 3 天,且该值不能超过保留期限。如果启用了分层存储,则无法选择热。如需了解详情,请参阅配置热自动备份。
- 如需设置自定义保留期限,请在备份配置部分中,在保留期限字段中输入 3 到 90 之间的整数,以指定保留备份的天数。
- 在企业 Plus 版版中,如需选择 Bigtable 在其中创建每日备份的特定集群,请在备份配置部分中,从选择要备份的集群列表中选择集群,然后点击确定。如需了解详情,请参阅配置自动备份集群位置。
可选:在配置分层存储部分中,为表启用不常访问存储作为分层存储(预览版)的一部分。如果为自动备份选择了热,则无法启用分层存储。
选中启用分层存储复选框。
在存在时间阈值字段中,输入一个大于或等于 30 的整数,以指定 Bigtable 将数据从 SSD 存储空间移至不常访问存储空间的天数。
可选:如需配置行键架构,请选择定义行键架构,然后执行以下操作:
在编码列表中,为行键架构选择一种编码类型。
如果您选择了 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:新表的唯一 IDINSTANCE_ID:实例的 IDPROJECT_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 每天创建表的备份并将每个备份保留默认保留期限(七天),请在创建表时使用
--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 天。在 SSD 实例上,如需将 Bigtable 配置为创建自动转换为标准备份的热自动备份,请使用
--automated-backup-keep-hot-duration标志,而不是--enable-automated-backup标志。请提供24h(1 天)到10d(10 天)之间的时长,且不超过保留期限。以数字加上s、m、h或d单位(秒、分钟、小时或天)表示该值,例如24h或2d。如需了解详情,请参阅配置热自动备份。企业 Plus 版:默认情况下,Bigtable 会在表实例中的所有集群中创建每日备份。如需配置 Bigtable 必须在其中创建表每日备份的集群位置,请使用
--automated-backup-locations标志,而不是--enable-automated-backup标志。提供以英文逗号分隔的集群位置列表,这些位置必须启用自动备份,例如us-central1-a,us-east1-b,europe-west1-c。如需启用非频繁访问作为分层存储(预览版)的一部分,请使用
--tiered-storage-infrequent-access-older-than标志:gcloud beta bigtable instances tables create TABLE_ID \ --instance=INSTANCE_ID \ --project=PROJECT_ID \ --tiered-storage-infrequent-access-older-than=AGE_THRESHOLD将
AGE_THRESHOLD替换为至少 30 天的值。 可接受的单位包括天 (d)、小时 (h)、分钟 (m) 和秒 (s),例如32d或32d12h。如需为表配置时间戳粒度,请使用
--timestamp-granularity标志:gcloud bigtable instances tables create TABLE_ID \ --instance=INSTANCE_ID \ --project=PROJECT_ID \ --column-families=COLUMN-FAMILIES \ --timestamp-granularity=TIMESTAMP_GRANULARITY将 TIMESTAMP_GRANULARITY 替换为精确度级别。默认精度为毫秒,值为
MILLIS。如果您希望表接受具有微秒精度的时间戳,请将该值设置为MICROS。微秒级精度时间戳仅适用于企业 Plus 版中的实例。
cbt
您无法使用 cbt CLI 创建启用了变更数据流的表。
如需创建表,请运行以下命令:
cbt createtable TABLE_ID
将 TABLE_ID 替换为新表的唯一 ID。
可选:如需在表中创建聚合列族,请在列族名称后附加聚合类型。以下命令会创建一个垃圾回收政策为 never 的聚合列族:
cbt createtable TABLE_ID families=FAMILY_NAME:never:TYPE
替换以下内容:
TABLE_ID:新表的唯一 IDFAMILY_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:新表的唯一 IDINSTANCE_ID:实例的 IDPROJECT_ID:将包含新表的项目COLUMN_FAMILIES:列族名称的英文逗号分隔列表。您可以稍后添加更多列族。SPLITS:最初应拆分表所按的行键,例如10,20。
cbt
如需根据行键预拆分表,请运行以下命令:
cbt createtable TABLE_ID splits=SPLITS
替换以下内容:
TABLE_ID:新表的唯一 IDSPLITS:用于预拆分的行键前缀的英文逗号分隔列表
例如,如需使用以 10 和 20 开头的行键预拆分 my-table 表,请运行以下命令:
cbt createtable my-table splits=10,20
修改表中的列族
您可以在创建表时添加列族,也可以向现有表添加列族。如果表未启用防删除保护,则可以删除表中的列族。
添加列族
控制台
向新表添加列族
在创建表窗格中,针对要添加的每个列族,点击添加列族。
在列族名称字段中,输入列族的唯一标识符。
选择列族类型:
如果您选择了汇总,请在汇总器字段中选择以下选项之一:
- 求和:汇总所有单元格值的总和。
- 最小值:汇总单元格中的最小值。
- 最大值:汇总最大单元格值。
- HyperLogLog:汇总单元格值的近似基数。
为列族设置垃圾回收政策。
点击完成。
向现有表添加列族
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的 修改。
对于要添加的每个列族,请执行以下操作:
点击保存。
gcloud
您无法使用 gcloud CLI 向表中添加列族。
cbt
如需向表中添加列族,请运行以下命令:
cbt createfamily TABLE_ID FAMILY_NAME
替换以下内容:
TABLE_ID:要在其中添加列族的表的 IDFAMILY_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:表 IDFAMILY_NAME:列族名称的英文逗号分隔列表。您可以稍后添加更多列族。TYPE:汇总类型。必须为intsum、intmin、intmax或inthll。
删除列族
您可以在未启用防删除保护的表中删除列族。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的 修改。
对于要删除的每个列族,完成以下操作:
- 将鼠标悬停在要删除的列族所在的行上。
- 点击 。
点击保存。
如需确认您了解删除列族是永久性的,并且列族中的所有数据都将被删除,请在文本字段中输入“删除列族”。
点击确认。
gcloud
您无法使用 gcloud CLI 从表中删除列族。
cbt
如需从表中删除列族,请运行以下命令:
cbt deletefamily TABLE_ID FAMILY_NAME
替换以下内容:
TABLE_ID:要从中删除列族的表的 IDFAMILY_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:表的唯一 IDINSTANCE_ID:实例的 ID
cbt
您可以使用 cbt CLI 获取表中现有列族的列表。
如需查看表中的列族,请运行以下命令:
cbt ls TABLE_ID
将 TABLE_ID 替换为表的唯一 ID。
设置垃圾回收政策
垃圾回收政策告诉 Bigtable 要保留哪些数据以及要将哪些数据标记为待删除。您可以在创建表时或之后在列族级设置垃圾回收政策。
创建列族时,您可以指定要在该列族的每个列中保留的单元数量。如果您未指定此设置,Bigtable 将使用以下任一默认设置:
如果您使用 Java 版 Cloud Bigtable HBase 客户端或 HBase shell 或其他使用 Java 版 HBase 客户端的工具创建列族,则 Bigtable 仅在列族的每个行或列交集处保留 1 个单元。此默认设置与 HBase 一致。
如果您使用 Cloud de Confiance 控制台、任何其他客户端库或
cbtCLI 创建列族 ,则 Bigtable 会在每一列中保留无限数量的单元。
如需详细了解如何查看、设置和更新垃圾回收政策,请参阅配置垃圾回收政策。
备份和恢复表
如需了解如何备份表以及从备份恢复到新表,请参阅管理备份。
如果您在创建表时启用了自动备份,则可以稍后修改表的自动备份配置。您可以启用或停用自动备份、在 SSD 实例上配置热自动备份、将保留期限更改为最长 90 天,或者在 Enterprise Plus 版中选择 Bigtable 存储备份的集群。如需了解详情,请参阅使用自动备份。
启用、停用或配置变更数据流
如需了解以下任务,请参阅配置变更数据流。
- 在现有表上启用变更数据流
- 停用变更数据流
- 更新变更数据流的保留期限
删除表
删除表也会删除该表的所有授权视图。如果表的任何授权视图启用了防删除保护,则您无法删除该表。您也无法删除基于其创建了持续具体化视图的表。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要删除的表的 。
点击删除。
如需确认此操作将从实例的所有集群中删除该表,并且只能在七天内恢复删除的表,请在删除表框中输入表 ID。
点击删除。
gcloud
如需删除表,请运行
gcloud bigtable instances tables delete命令。gcloud bigtable instances tables delete TABLE_ID --instance=INSTANCE_ID替换以下内容:
TABLE_ID:表的唯一 IDINSTANCE_ID:实例的 ID
在终端中,输入
y以确认删除表。
cbt
如需删除表,请运行以下命令:
cbt deletetable TABLE_ID
将 TABLE_ID 替换为表的唯一 ID。
恢复删除的表
如果您不小心删除了表,可以使用 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,则无法恢复。
- 如果您将实例降级到企业版,则无法恢复具有微秒级时间戳粒度的表。如需恢复已删除的表,实例必须采用企业 Plus 版。
- 当您恢复已删除的表时,Bigtable 不会恢复已删除表的任何精细 IAM 政策绑定。
您可以视需要在审核日志中查看 undelete 操作的状态。
修改防删除保护
如果您是包含 bigtable.tables.update 权限的角色中的主体(例如 roles/bigtable.admin),则可以为表启用或停用防删除保护。防删除保护可防止删除表、表中的所有列族以及包含表的实例。
为表启用防删除保护不会为表的授权视图启用防删除保护。同样,停用表的防删除保护功能不会停用该表的授权视图的防删除保护功能。您必须单独更新表的授权视图。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击表 ID 旁边的 。
如需启用防删除保护,请点击防止删除。如需停用防删除保护,请点击启用删除。只有有效选项才可见。
gcloud
如需为表启用删除保护,请运行 gcloud bigtable instances tables update 命令:
gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--deletion-protection
替换以下内容:
TABLE_ID:表的唯一标识符INSTANCE_ID:实例的 ID
如需为表停用防删除保护,请运行以下命令:
gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--no-deletion-protection
替换以下内容:
TABLE_ID:表的唯一标识符INSTANCE_ID:实例的 ID
cbt
您无法使用 cbt CLI 启用或停用删除防护。
修改不常访问存储空间的时长阈值
您可以随时修改属于分层存储的低频访问的年龄阈值。
控制台
在 Cloud de Confiance 控制台中,打开 Bigtable 实例列表。
点击要查看其表的实例。
在左侧窗格中,点击表。
表页面显示实例中的表列表。
点击要修改的表的 修改。
在存在时间阈值字段中,输入新的天数,Bigtable 会在达到该天数后将数据从 SSD 存储空间移至不常访问存储空间。该数字必须大于或等于 30。
gcloud
如需修改不常访问存储空间的年龄阈值,请运行 gcloud beta bigtable instances tables update 命令并添加 --tiered-storage-infrequent-access-older-than 标志:
gcloud beta bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--project=PROJECT_ID \
--tiered-storage-infrequent-access-older-than=AGE_THRESHOLD
替换以下内容:
TABLE_ID:要更新的表的 IDINSTANCE_ID:实例的 IDPROJECT_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:要更新的表的 IDINSTANCE_ID:实例的 IDPROJECT_ID:包含要更新的表的项目
后续步骤
- 了解如何向表中导入数据和从表中导出数据。