哪种是在Cassandra集群中聚合和存储回数据的最佳方法?我的意思是,有一个包含小时数据的表,每天汇总一次,然后保存在另一个表中。可以通过对每个键/期间进行选择和插入来简单地实现这一点,但是有没有更好或不同的方法?物化视图呢?
答案 0 :(得分:0)
在cassandra中,物化视图的使用非常有限:
源表中的所有主键必须以可能不同的顺序出现在视图中。
像avg
这样的聚合函数不能使用
GROUP BY
不允许
因此,我认为这不适合您的基于时间的汇总,也不适合任何其他聚合。
顺便说一句,物化视图已被追溯分类 作为实验性的,不建议用于新的生产用途。
一旦永久冻结要聚合的数据,这将非常好...如果不冻结,则将很难处理一致性。
一种完全不同的汇总方法是使用Elassandra索引时间列。我们将创建一个Elasticsearch二级索引并自动保持同步。然后,使用date histogram aggregation使用嵌入的Elasticsearch API在不同的时间范围内进行查询。
这样,聚合结果就不会存储,而是从有效的辅助数据结构中实时计算出来。