设计架构
Bigtable 表的理想架构高度依赖于多种因素,包括使用场景、数据访问模式以及您计划存储的数据。本页面概述了 Bigtable 架构设计流程。
在阅读本页面之前,您应该了解架构设计的概念和最佳做法。如果适用,另请参阅时间序列数据的架构设计。
准备工作
创建或标识可用于测试架构的 Bigtable 实例。
收集信息
- 确定您计划在 Bigtable 中存储的数据。请考虑以下问题:
- 数据采用什么格式?可能的格式包括原始字节、字符串、protobuf 和 json。
- 数据中的实体是什么?例如,您是否要存储网页浏览量、股票价格、广告投放、设备测量或其他类型的实体?实体由什么组成?
- 数据是基于时间的吗?
- 确定用于获取所需数据的查询并将其排序。对于将要存储的实体,考虑在使用数据时对其进行排序和分组的方式。您的架构设计可能无法满足所有查询的需求,但理想情况是能够满足最重要或最常用的查询。查询示例可能包括:
- IoT 对象一个月的温度读数。
- 某个 IP 地址的每日广告浏览量。
- 某个移动设备的最新位置。
- 每位用户每天的所有应用事件。
设计
确定初始架构设计。这意味着规划行键遵循的模式、表的列族以及列族中的列的列限定符。遵循常规架构设计准则。如果您的数据是基于时间的,还需遵循时间序列数据准则。
测试
- 使用为您的架构提供的列族和列限定符创建表。
- 使用您在草稿方案中确定的行键加载表(至少包含 30 GB 测试数据)。请勿超出每个节点的存储空间利用率限制。
- 运行几分钟高负载测试。此步骤旨在让 Bigtable 可以根据其所遵循的访问模式使各节点之间的数据保持平衡。
- 针对您通常发送到表的读写运行一小时模拟。
使用 Key Visualizer 和 Cloud Monitoring 查看模拟的结果。
适用于 Bigtable 的 Key Visualizer 工具可进行扫描,显示集群中每个表的使用模式。Key Visualizer 可帮助您检查架构设计和使用模式是否会导致不良结果,例如特定行上的热点。
Monitoring 可帮助您检查指标(例如集群中最热节点的 CPU 利用率),以帮助您确定架构设计是否会引发问题。
优化
- 必要时根据您使用 Key Visualizer 学到的知识修改架构设计。例如:
- 如果您看到有关 hotspotting 的证据,请使用不同的行键。
- 如果您发现延迟时间,请查找行是否超过了每个行 100 MB 的上限。
- 如果您发现需要使用过滤条件来获取所需数据,请考虑对数据进行标准化,以便能够以一种更简单(快速)的方式进行读取,即按行键读取一行或某个范围的行。
- 修改架构后,再次测试并检查结果。
- 继续修改架构设计和进行测试,直到 Key Visualizer 中的检查表明架构设计已达到最佳。
后续步骤
- 观看 Twitter 上针对 Bigtable 使用的迭代设计流程的演示。
- 详细了解 Bigtable 性能。