在写入时汇总值

本文档概述了在写入时聚合 Bigtable 数据的方法。在阅读本文档之前,请务必先熟悉 Bigtable 概览

许多应用都会跟踪可用于多种应用场景的运营指标,包括应用内报告、实时建议和速率限制。此类运营指标的示例包括:

  • 周活跃用户数
  • 广告展示次数
  • 社交内容的观看次数或分享次数
  • 媒体流数量

您可以在面向用户的应用中使用这些指标,也可以将其作为机器学习模型的输入,而这些用途通常需要低延迟和高吞吐量。由于在查询时大规模计算这些类型的指标不切实际,因此在数据注入期间进行预聚合是实时系统的首选方法。

Bigtable 提供多种在写入时聚合数据的方式,包括无冲突复制数据类型、ReadModifyWriteRow 请求和连续的物化视图。

在写入时聚合 Bigtable 数据,可省去在将数据写入 Bigtable 之前或之后使用提取、转换和加载 (ETL) 或流式处理软件来聚合数据的需求。如果您的应用使用 Dataflow 聚合流式数据,然后再将其写入 Bigtable,您可以将数据直接发送到 Bigtable 中的聚合单元格。

无冲突复制数据类型

Bigtable 允许您创建仅包含 汇总类型单元格的列族。汇总单元格是针对增量更新优化的无冲突复制数据类型结构。

如果您要从 Apache Cassandra、Redis 或 Valkey 等数据库迁移到 Bigtable,这些系统中的类似结构称为计数器

下表列出了支持的操作以及新写入的值的处理方式。


操作

说明

总和

系统会将单元格值替换为新添加的值与当前单元格值的总和。

最低

系统会将单元格值替换为新添加的值与当前单元格值之间的较低值。

上限

系统会将单元格值替换为新添加的值与当前单元格值之间的较大值。

HyperLogLog

写入的值会添加到自上次重置以来添加的所有值的概率集中。相应单元格的值表示该组的状态。如需详细了解 HLL 算法,请参阅 HyperLogLog

您可以使用 Zetasketch 库读取 HLL 值。

您可以发送以下突变类型来创建和更新汇总单元格:AddToCellMergeToCell

如需开始在 Bigtable 中进行计数,请参阅在 Bigtable 中创建和更新计数器快速入门。

先读取,然后写入

在写入时聚合数据的另一种方法是使用 ReadModifyWriteRow 请求,该请求可让您通过以事务方式递增或附加到值来操纵单元格的值。如需详细了解何时使用此方法,请参阅附加

连续的物化视图

连续的具体化视图是 SQL 查询的预计算结果,用于汇总源表中的数据。视图会持续处理提取到源表中的数据,并批量更新。这包括更新和删除。使用连续的物化视图可以提高性能和效率。如需了解详情,请参阅持续具体化视图

后续步骤