Cassandra - 经常更改列值和SSTables

时间:2012-08-07 06:51:40

标签: cassandra

我有进程,经常更新单列。最后,在执行压缩之前,我的列的值存储在多个SSTable中。

Memtables被排序,并被同步刷新到磁盘,在这种情况下我还假设,磁盘上的SSTables已经排序。基于此Cassandra需要查看单个SSTable(带正布隆过滤器)来查找我的列的最新值,是吗?

我有点困惑,因为我读过某个地方,经常改变单列的值导致无法执行的rads,但我的理解是,只有压缩工作才会有更多的工作要做,读取应该不受影响。

1 个答案:

答案 0 :(得分:2)

https://issues.apache.org/jira/browse/CASSANDRA-2498

答案是:Cassandra版本< 1.0将覆盖每个SSTable。 从1.0开始,只会读取最近SSTable中的数据,因为除了布隆过滤器之外,每个SSTable还包含特定列的最新更新时间。

这导致下一个问题。 Bloom过滤器在RAM中,“最后更新时间”(SSTable元数据)怎么样?是否需要访问磁盘?在这种情况下,Cassandra仍然需要为包含列值

的每个SSTable进行磁盘搜索