设计架构

Bigtable 表的理想架构在很大程度上取决于许多因素,包括用例、数据访问模式以及您计划存储的数据。本页面概述了 Bigtable 架构设计流程。

在阅读本页面之前,您应该了解架构设计的概念和最佳做法。如果适用,另请参阅时序数据的架构设计

准备工作

创建或标识可用于测试架构的 Bigtable 实例

收集信息

  1. 确定您计划在 Bigtable 中存储的数据。请考虑以下问题:
    • 数据采用什么格式?可能的格式包括原始字节、字符串、protobuf 和 json。
    • 数据中的实体是什么?例如,您是否要存储网页浏览量、股票价格、广告投放、设备测量或其他类型的实体?实体由什么组成?
    • 数据是基于时间的吗?
  2. 确定用于获取所需数据的查询并将其排序。对于将要存储的实体,考虑在使用数据时对其进行排序和分组的方式。您的架构设计可能无法满足所有查询的需求,但理想情况是能够满足最重要或最常用的查询。查询示例可能包括:
    • IoT 对象一个月的温度读数。
    • 某个 IP 地址的每日广告浏览量。
    • 某个移动设备的最新位置。
    • 每位用户每天的所有应用事件。

设计

确定初始架构设计。这意味着规划行键遵循的模式、表的列族以及列族中的列的列限定符。遵循常规架构设计准则。如果您的数据是基于时间的,还需遵循时序数据准则

测试

  1. 使用为您的架构提供的列族和列限定符创建表
  2. 使用您在草稿方案中确定的行键加载表(至少包含 30 GB 测试数据)请勿超出每个节点的存储空间利用率限制
  3. 运行几分钟高负载测试。此步骤旨在让 Bigtable 可以根据其所遵循的访问模式使各节点之间的数据保持平衡。
  4. 针对您通常发送到表的读写运行一小时模拟
  5. 使用 Key Visualizer 和 Cloud Monitoring 查看模拟的结果

    • 适用于 Bigtable 的 Key Visualizer 工具可进行扫描,显示集群中每个表的使用模式。Key Visualizer 可帮助您检查架构设计和使用模式是否会导致不良结果,例如特定行上的热点。

    • Monitoring 可帮助您检查指标(例如集群中最热节点的 CPU 利用率),以帮助您确定架构设计是否会引发问题。

优化

  1. 必要时根据您使用 Key Visualizer 学到的知识修改架构设计。例如:
    • 如果您看到有关 hotspotting 的证据,请使用不同的行键。
    • 如果您发现延迟时间,请查找行是否超过了每个行 100 MB 的上限。
    • 如果您发现需要使用过滤条件来获取所需数据,请考虑对数据进行标准化,以便能够以一种更简单(快速)的方式进行读取,即按行键读取一行或某个范围的行。
  2. 修改架构后,再次测试并检查结果
  3. 继续修改架构设计和进行测试,直到 Key Visualizer 中的检查表明架构设计已达到最佳。

后续步骤