在写入时汇总值
本文档概述了在写入时聚合 Bigtable 数据的方法。在阅读本文档之前,请务必先熟悉 Bigtable 概览。
许多应用都会跟踪可用于多种应用场景的运营指标,包括应用内报告、实时建议和速率限制。此类运营指标的示例包括:
- 周活跃用户数
- 广告展示次数
- 社交内容的观看次数或分享次数
- 媒体流数量
您可以在面向用户的应用中使用这些指标,也可以将其作为机器学习模型的输入,而这些用途通常需要低延迟和高吞吐量。由于在查询时大规模计算这些类型的指标不切实际,因此在数据注入期间进行预聚合是实时系统的首选方法。
Bigtable 提供多种在写入时聚合数据的方式,包括无冲突复制数据类型、ReadModifyWriteRow 请求和连续的物化视图。
在写入时聚合 Bigtable 数据,可省去在将数据写入 Bigtable 之前或之后使用提取、转换和加载 (ETL) 或流式处理软件来聚合数据的需求。如果您的应用使用 Dataflow 聚合流式数据,然后再将其写入 Bigtable,您可以将数据直接发送到 Bigtable 中的聚合单元格。
无冲突复制数据类型
Bigtable 允许您创建仅包含 汇总类型单元格的列族。汇总单元格是针对增量更新优化的无冲突复制数据类型结构。
如果您要从 Apache Cassandra、Redis 或 Valkey 等数据库迁移到 Bigtable,这些系统中的类似结构称为计数器。
下表列出了支持的操作以及新写入的值的处理方式。
操作 |
说明 |
|---|---|
总和 |
系统会将单元格值替换为新添加的值与当前单元格值的总和。 |
最低 |
系统会将单元格值替换为新添加的值与当前单元格值之间的较低值。 |
上限 |
系统会将单元格值替换为新添加的值与当前单元格值之间的较大值。 |
HyperLogLog |
写入的值会添加到自上次重置以来添加的所有值的概率集中。相应单元格的值表示该组的状态。如需详细了解 HLL 算法,请参阅 HyperLogLog。 您可以使用 Zetasketch 库读取 HLL 值。 |
您可以发送以下突变类型来创建和更新汇总单元格:AddToCell 和 MergeToCell。
如需开始在 Bigtable 中进行计数,请参阅在 Bigtable 中创建和更新计数器快速入门。
先读取,然后写入
在写入时聚合数据的另一种方法是使用 ReadModifyWriteRow 请求,该请求可让您通过以事务方式递增或附加到值来操纵单元格的值。如需详细了解何时使用此方法,请参阅附加。
连续的物化视图
连续的具体化视图是 SQL 查询的预计算结果,用于汇总源表中的数据。视图会持续处理提取到源表中的数据,并批量更新。这包括更新和删除。使用连续的物化视图可以提高性能和效率。如需了解详情,请参阅持续具体化视图。