在写入时汇总值

本文档简要介绍了您可以在写入时汇总 Bigtable 数据的方式。在阅读本文档之前,请确保您熟悉 Bigtable 概览

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

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

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

Bigtable 提供了多种在写入时汇总数据的方法,包括无冲突的复制数据类型、ReadModifyWriteRow 请求和连续具体化视图。

通过在写入时汇总 Bigtable 数据,您无需在将数据写入 Bigtable 之前或之后使用任何提取、转换和加载 (ETL) 或流式处理软件来汇总数据。例如,如果您的应用之前向 Pub/Sub 发布了消息,然后使用 Dataflow 读取消息并汇总数据,然后再将数据写入 Bigtable,那么您可以改为直接将数据发送到 Bigtable 中的汇总单元格。

不会发生冲突的复制数据类型

借助 Bigtable,您可以创建仅包含类型为汇总的单元的列族。汇总单元格是一种无冲突的复制数据类型结构,专为增量更新进行了优化。

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

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


操作

说明

总和

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

下限

系统会将单元格值替换为新添加的值和当前单元格值中较小的值。

上限

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

HyperLogLog

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

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

您可以发送 AddToCellMergeToCell 类型的更改来创建和更新汇总单元格。

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

先读取,然后写入

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

持续的物化视图

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

后续步骤