在cassandra集群中聚合和存储数据的最佳方法是什么?我的意思是,有一个包含小时数据的表,在一天中汇总并保存在另一个表中。这可以简单地通过为每个键/周期选择和插入来实现,但是有更好的或不同的方法吗?物化视图呢?
ckx4rj1h1#
cassandra中物化视图的使用非常有限:源表中的所有主键都必须以不同的顺序出现在视图中。聚合函数,如 avg 无法使用 GROUP BY 不允许因此,我认为它不适合基于时间的汇总,也不适合任何其他聚合。顺便说一句,物化视图已经被追溯到实验类,不建议用于新的生产用途。
avg
GROUP BY
一旦要聚合的数据被冻结,这就太好了,永远。。。否则,一致性将很难处理。
一种完全不同的汇总方法是使用elassandra对时间列进行索引。我们将自动创建并保持同步的elasticsearch二级索引。然后使用嵌入的elasticsearch api在不同的时间尺度上进行查询,使用日期直方图聚合。这样聚合的结果就不会被存储,而是从一个有效的二级数据结构中实时计算出来。
1条答案
按热度按时间ckx4rj1h1#
物化视图
cassandra中物化视图的使用非常有限:
源表中的所有主键都必须以不同的顺序出现在视图中。
聚合函数,如
avg
无法使用GROUP BY
不允许因此,我认为它不适合基于时间的汇总,也不适合任何其他聚合。
顺便说一句,物化视图已经被追溯到实验类,不建议用于新的生产用途。
手动解决方案
一旦要聚合的数据被冻结,这就太好了,永远。。。否则,一致性将很难处理。
索引
一种完全不同的汇总方法是使用elassandra对时间列进行索引。我们将自动创建并保持同步的elasticsearch二级索引。然后使用嵌入的elasticsearch api在不同的时间尺度上进行查询,使用日期直方图聚合。
这样聚合的结果就不会被存储,而是从一个有效的二级数据结构中实时计算出来。