实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

设计和查询 Bigtable 架构

实验 20 分钟 universal_currency_alt 1 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1053

Google Cloud 自学实验的徽标

概览

Bigtable 是 Google 的全托管式可扩缩 NoSQL 数据库服务。Bigtable 非常适合将大量数据存储在键值对存储区中,并适合个性化、广告技术、金融技术、数字媒体和物联网 (IoT) 等应用场景。Bigtable 支持以低延迟方式实现高读写吞吐量,以便快速访问大量数据并进行处理和分析。

在 Bigtable 中,每一行代表一个实体(例如单个用户或传感器),并使用唯一的行键进行标记。每列存储每一行的属性值,列族可用于组织相关列。在行和列的交集处,可以有多个单元,每个单元代表数据在给定时间戳处的不同版本。

在本实验中,您将使用 Google Cloud 控制台的 Bigtable 页面来探索 Bigtable 实例,并使用 Bigtable CLI (cbt CLI) 查询 Bigtable 表中的数据。您还将使用 Bigtable 最佳实践设计表架构和行键。

您将执行的操作

在本实验中,您将学习如何访问 Bigtable 实例并查询 Bigtable 架构。

  • 使用 Google Cloud 控制台探索 Bigtable 实例。
  • 为您的实例配置 cbt CLI。
  • 根据 Bigtable 最佳实践设计适当的架构和行键。
  • 查询 Bigtable 中的数据。

前提条件

  • 您应该对数据库概念和术语(例如实例、架构和键)有基本的了解。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 在控制台中探索 Bigtable 实例

在本实验练习中,系统已预先为您创建了一个 Bigtable 实例和表,供您探索。在此任务中,您将在 Google Cloud 控制台中访问名为 personalized-sales 的 Bigtable 实例,并查看有关该实例的相关详细信息。

  1. 在 Google Cloud 控制台的导航菜单 (导航菜单) 中,点击数据库下的 Bigtable

  2. 在 Bigtable 实例列表中,找到名为 personalized-sales 的实例 ID。

    查看节点的详细信息,并回答以下问题。

  1. 如需导航到实例详细信息,点击名为 personalized-sales 的实例 ID。

  2. 点击修改实例

    查看实例的详细信息,并回答以下问题。

  1. 如需关闭实例修改页面,点击取消

  2. 在集群 ID 表中,点击 personalized-sales-cluster1 所在行中的修改铅笔图标。

    查看集群的详细信息,并回答以下问题。

  3. 如需关闭集群详细信息,点击取消

  4. 在导航菜单中,点击实例下的

    查看名为 UserSessions 的表的详细信息,并回答以下问题。

现在您已经查看了 Bigtable 实例的详细信息,可以继续执行下一项任务,使用 cbt CLI 连接到该实例。

任务 2. 配置 Bigtable CLI

如需使用 cbt CLI 命令连接到 Bigtable,您首先需要使用 Cloud Shell 更新 .cbtrc 配置文件,将项目 ID 和 Bigtable 实例 ID 添加到其中。

如需回顾如何访问 Cloud Shell,请参阅本实验指南前面的设置和要求部分。

虽然 cbt CLI 主要用于调试和探索,但它也是学习 Bigtable 基础知识的有用工具。如需在生产环境中完成 CRUD(创建、读取、更新、删除)操作,我们建议使用 Bigtable 的客户端库之一。

  1. 如需使用项目 ID 修改 .cbtrc 文件,在 Cloud Shell 中运行以下命令:
echo project = `gcloud config get-value project` \ >> ~/.cbtrc
  1. 如需查看项目中可用 Bigtable 实例的列表,运行以下命令:
cbt listinstances

输出确认存在一个名为 personalized-sales 的实例。

  1. 如需使用 Bigtable 实例 ID 修改 .cbtrc 文件,运行以下命令:
echo instance = personalized-sales \ >> ~/.cbtrc
  1. 如需验证您已使用项目 ID 和实例 ID 成功修改 .cbtrc 文件,运行以下命令:
cat ~/.cbtrc

输出应类似于以下内容:

project = <project-id> instance = personalized-sales
  1. 如需查看名为 personalized-sales 的 Bigtable 实例中可用表的列表,运行以下命令:
cbt ls

输出确认该实例包含一个名为 UserSessions 的表。您将在后面的任务中使用此表。

任务 3. 在 Bigtable 中设计架构和行键

在此任务中,您将创建一个测试表,以探索 Bigtable 中的架构和行键设计原则。

查看原始数据,帮助设计架构

要在 Bigtable 中设计架构和行键,首先要回答有关所存储数据的关键问题。

问题 用途
每一行代表什么?(例如,单个用户或传感器) 识别行结构
What will be the most common queries to this data? 创建行键
每行收集哪些值? 如需识别列(称为“列限定符”
是否有可以分组或组织在一起的相关列? 确定列族



例如,考虑一个数据集,其中包含电子商务公司网站所有用户的在线购物会话。每一行代表一次在线购物会话,并带有时间戳。对数据集最常见的查询将检索有关各个会话和关联的用户 ID 的详细信息。为每个购物会话存储的值包括用户在会话期间互动和购买的所有商品,以及用户的颜色偏好。

原始数据可以按如下方式组织,其中包含更多列来表示其他产品(例如 blue_jacket 或 purple_bag):

timestamp user_id preferred_color red_skirt red_hat orange_shoes sale
1638940844260 1939 绿色 已查看 已查看
1638940844260 2466 蓝色 已查看 已查看
1638940844260 1679 蓝色 已查看 蓝色衬衫#蓝色夹克
1638940844260 2737 蓝色 已查看 蓝色连衣裙#蓝色夹克
1638940844260 582 黄色 黄色裙子



注意:本示例中提供的用户 ID 仅用作标识符的简单示例。在 Bigtable 的典型应用中,您可能会为每个用户生成一个通用唯一标识符 (UUID)。

创建测试表

Bigtable 的最佳实践是将具有相同架构的数据存储在同一个表中,而不是不同的表中。例如,在线购物会话的所有数据都可以存储在一个表中,以便轻松检索。

  • 如需创建名为 test-sessions 的空表,运行以下命令:
cbt createtable test-sessions

创建列族

在 Bigtable 中,列族的最佳实践包括:

  • 使用列限定符作为数据,这样您就不必为每一行重复该值。

  • 将相关列放在同一列族中。

  • 为列族选择简短但有意义的名称。

对于此数据集,存储商品互动信息的列限定符可以分组到一个名为 Interactions 的列族中,而存储购买信息的列限定符可以单独组织到另一个名为 Sales 的列族中。生成的架构将按如下方式组织:

Interactions --- --- Sales
timestamp user_id preferred_color red_skirt red_hat orange_shoes sale
1638940844260 1939 绿色 已查看 已查看
1638940844260 2466 蓝色 已查看 已查看
1638940844260 1679 蓝色 已查看 蓝色衬衫#蓝色夹克
1638940844260 2737 蓝色 已查看 蓝色连衣裙#蓝色夹克
1638940844260 582 黄色 黄色裙子



  1. 如需向 test_sessions 表添加名为 Interactions 的列族,运行以下命令:
cbt createfamily test-sessions Interactions
  1. 如需添加另一个名为 Sales 的列族,请重复执行之前的命令并指定新的列族名称:
cbt createfamily test-sessions Sales
  1. 如需查看 test_sessions 表中的列族列表,运行以下命令:
cbt ls test-sessions

该命令返回以下输出:

Family Name GC Policy ----------- --------- Interactions <never> Sales <never>

点击检查我的进度,验证已完成以下目标: 创建 Bigtable 表。

创建行键

在 Bigtable 中,最佳实践是将单个实体(例如单个在线购物会话)的所有信息存储在一行中。一项相关的最佳实践是创建行键,以便轻松查询和检索定义的行范围。

为了在 Bigtable 中应用行键的最佳实践,建议您:

  • 根据您将用于检索数据的查询来设计行键。

  • 避免使用以时间戳或连续数字 ID 开头的行键,或导致相关数据不会分组到一起的行键。

  • 设计行键时,应以更常见的泛化值(例如国家/地区)开头,以更细分的具体值(例如城市)结尾。

  • 在每个行键中存储多个分隔的值,并使用直观易懂的字符串值(例如用户 ID 后跟时间戳)。

在上一部分中,timestamp、user_id 和 preferred_color 未按列族进行整理。回想一下有关原始数据的问题,对该数据集的大多数查询都会检索有关各个会话和关联用户 ID 的详细信息。

为了支持这些查询,此表的理想行键是用户 ID 与会话时间戳的组合。此外,行键可以包含一个前缀,用于标记每个用户的颜色偏好,例如用户 ID 为 1939 的用户,其行键可以为 green1939#1638940844260,这样可以轻松检索具有特定颜色偏好的所有用户。

Interactions --- --- Sales
行键 red_skirt red_hat orange_shoes sale
green1939#1638940844260 已查看 已查看
blue2466#1638940844260 已查看 已查看
blue1679#1638940844260 已查看 蓝色衬衫#蓝色夹克
blue2737#1638940844260 已查看 蓝色连衣裙#蓝色夹克
yellow582#1638940844260 黄色裙子
  1. 如需使用行键将数据添加到 Interactions 列族,运行以下命令:
cbt set test-sessions green1939#1638940844260 Interactions:red_hat=seen
  1. 如需使用行键将数据添加到 Sales 列族,运行以下命令:
cbt set test-sessions blue2737#1638940844260 Sales:sale=blue_dress#blue_jacket
  1. 如需查看表中存储的数据,运行以下命令:
cbt read test-sessions

请注意,虽然 blue2737#1638940844260 的数据是第二个添加的,但它在结果中的排序高于 green1939#1638940844260。记录按此顺序返回,是因为在 Bigtable 中,行是按行键的字典顺序排序和存储的。此排序方式与字母顺序类似;不过,以数字开头的行不会按从小到大的顺序排序(例如 1、13、2、25、6 和 70)。

清理测试数据

  • 如需删除测试表,运行以下命令:
cbt deletetable test-sessions

点击检查我的进度,验证已完成以下目标: 删除 Bigtable 表。

任务 4. 在 Bigtable 中查询数据

在此任务中,您将使用 cbt CLI 从预先创建的测试表(名为 UserSessions 的现有表)的完整填充版本中检索数据,并检查该表如何应用 Bigtable 中设计架构和行键的最佳实践。

使用限制来查询行

在此步骤中,您将查看 UserSessions 表如何遵循 Bigtable 最佳实践,将所有用户与产品的互动以及产品购买情况存储在一个表中,该表中的每一行对应一次在线购物会话。

  • 如需查看该表前五行的数据,运行以下命令:
cbt read UserSessions \ count=5

输出结构如下:

---------------------------------------------- ROW KEY COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE ... ---------------------------------------------- ROW KEY COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE COLUMN_FAMILY:COLUMN_QUALIFIER @ TIMESTAMP VALUE ...

输出值应类似于以下内容:

---------------------------------------------- blue0#1638940844350 Interactions:blue_hat @ 2022/06/08-19:47:33.864000 "viewed details" Interactions:green_jacket @ 2022/06/08-19:47:33.864000 "seen" ... ---------------------------------------------- blue1#1638940844304 Interactions:blue_dress @ 2022/06/08-19:47:33.864000 "purchased" Sales:sale @ 2022/06/08-19:47:33.864000 "blue_dress"

每一行都包含一个用户的多项产品互动(例如蓝色帽子和绿色夹克),包括用户是否看到、查看详情或购买了该产品。此外,购买信息会记录在 Sales 列族中的 sale 列限定符对应的表中。

UserSessions 没有为每种互动类型、产品或销售创建单独的表,而是遵循最佳实践,将所有相关的用户互动和产品都包含在一个表中。此外,单个在线购物会话的所有商品互动和购买行为都存储在表中的一行中。

按行键查询

Bigtable 中最有效的查询基于以下元素之一来检索数据:

  • 行键
  • 行键前缀
  • 通过开始和结束行键定义的行范围

在接下来的步骤中,您将使用 cbt CLI 中的每个选项来查询 UserSessions 表并检索所需的记录。

如需了解如何使用 Bigtable 客户端库通过行键读取单行数据,请参阅 Bigtable 文档。

按行键前缀查询

  • 如需查看前 10 行颜色偏好为 yellow 的行,运行以下命令:
cbt read UserSessions \ prefix=yellow \ count=10

输出值应类似于以下内容:

---------------------------------------------- yellow991#1638940844645 Interactions:green_skirt @ 2022/06/08-19:47:33.864000 "seen" Sales:sale @ 2022/06/08-19:47:33.864000 "yellow_skirt"

按特定行键范围查询

  • 如需查看特定行键范围内的所有行,运行以下命令:
cbt read UserSessions \ start=yellow941#1638940844381 \ end=yellow991#1638940844645

输出值应类似于以下内容:

---------------------------------------------- yellow991#1638940844603 Interactions:blue_blouse @ 2022/06/08-19:47:33.864000 "seen" Sales:sale @ 2022/06/08-19:47:33.864000 "yellow_jacket#yellow_blouse"

read 命令从作为 start 值提供的行键开始,到作为 end 值提供的行键之前结束。因此,输出中不会返回行键 yellow991#1638940844645

按特定行键查询

  • 如需查看特定行键的所有数据,运行以下命令:
cbt lookup UserSessions \ yellow582#1638940844260

输出值应类似于以下内容:

---------------------------------------------- yellow582#1638940844260 Interactions:blue_jacket @ 2022/06/08-19:47:33.864000 "seen" Sales:sale @ 2022/06/08-19:47:33.864000 "yellow_skirt"

按列限定符和列族查询

在接下来的步骤中,您将检索按列限定符和列族过滤的数据,以了解如何在 UserSessions 表中实现列的最佳实践。

  1. 如需查询 Interactions 列族中包含数据的前五行,运行以下命令:
cbt read UserSessions count=5 \ columns="Interactions:.*"

输出值应类似于以下内容:

---------------------------------------------- blue0#1638940844501 Interactions:blue_blouse @ 2022/06/08-19:47:33.864000 "viewed details" Interactions:green_jacket @ 2022/06/08-19:47:33.864000 "seen"
  1. 如需查询 Interactions 列族中 green_jacket 列限定符包含数据的前五行,运行以下命令:
cbt read UserSessions count=5 \ columns="Interactions:green_jacket"

输出值应类似于以下内容:

---------------------------------------- blue1009#1638940844380 Interactions:green_jacket @ 2022/06/08-21:30:08.683000 "seen" ---------------------------------------- blue101#1638940844263 Interactions:green_jacket @ 2022/06/08-21:30:08.683000 "seen"
  1. 如需查询 Sales 列族中 sale 列限定符内有数据的前五行,运行以下命令:
cbt read UserSessions count=5 \ columns="Sales:sale"

输出值应类似于以下内容:

---------------------------------------- blue0#1638940844379 Sales:sale @ 2022/06/08-19:47:33.864000 "blue_shoes#blue_shoes" ---------------------------------------------- blue1#1638940844409 Sales:sale @ 2022/06/08-19:47:33.864000 "blue_blouse"

由于名为 Sales 的列族只有一个列限定符 (sale),因此 columns 的值 "Sales:sale" 和 "Sales:.*" 返回的列相同。

恭喜!

在本实验中,您使用了 Google Cloud 控制台来探索 Bigtable 实例,并使用了 Cloud Bigtable CLI (cbt CLI) 来查询 Bigtable 表中的数据。您还使用 Bigtable 最佳实践设计了表架构和行键。

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 5 月 30 日

上次测试实验的时间:2023 年 2 月 16 日

版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。