更新列时SSTable是否会更改?

时间:2011-07-03 05:54:43

标签: cassandra

据我所知,所有插入操作都将首先发送到commitlog,然后Memtable秒,之后它将被压缩到SSTable

压缩到SSTable后,我对现有列执行更新操作。 是否必须更改SSTable以更新该列的值?

2 个答案:

答案 0 :(得分:3)

http://wiki.apache.org/cassandra/MemtableSSTable说:

  

刷新后,SSTable文件是不可变的;没有进一步的写作可以做

您的更新值将写入commitlog和memtable,并最终将刷新到新的SSTable on-disk。之后,这个SSTable可以与其他SSTable合并,形成一个新的更大的SSTable(旧的SSTable将被丢弃) - 这就是压缩阶段。

答案 1 :(得分:1)

回答你的后续问题:是的,不是 - 你的价值可能会在不同的SSTable中结束,直到它们被压缩,但你不需要等到压缩才能得到'真'值,因为各种您的值的版本带有时间戳,因此Cassandra可以返回最新版本。