为什么Cassandra不内部支持聚合?

时间:2018-10-09 06:44:47

标签: cassandra nosql aggregate

在许多书籍和文章中都考虑这句话:

在列式体系结构中,由于要聚合的所有值都存在于同一磁盘块中,因此优化了寻求聚合特定列的值的查询。 Cassandra是列族NoSQL数据库。

NoSL

如果这句话是正确的,为什么Cassandra在内部不支持聚合函数?还是我误解了这个句子或概念?

2 个答案:

答案 0 :(得分:1)

  

为什么Cassandra内部不支持聚合功能

Cassandra确实支持按请求聚合功能(在Java,python,javascript和某些预制功能中都是自定义的),这些功能在单个分区上使用时在限制范围内工作。请记住,此查询实际上是为在几毫秒内回答而设计的,因此,如果要经常查询,则计算一百万个平均值的数据将无法正常工作。

由于删除操作,聚合不容易保持最新状态(尤其是在分布式环境中,因为删除操作可能尚未在所有节点上都看到,所以请记住-Cassandra不是AP而不是CP),并且ttl的数据已过期,因此整个集合必须重新计算合计值,并将其从副本的一致性级别数量发送到协调器以进行计算。因此,尽管分区的数据通过一定数量的sstables顺序保存在磁盘上,并且可以非常有效地合并,但是在协调器上仍然很昂贵,而且如果跨一定范围进行,则传输和计算的数据量可能最终会失败(定时)轻松。

答案 1 :(得分:0)

Cassandra是行存储引擎。如果要获取与特定列值匹配的所有记录,则需要对表进行完整扫描。

请参阅此other question