据我所知,所有插入操作都将首先发送到commitlog,然后Memtable
秒,之后它将被压缩到SSTable
。
压缩到SSTable
后,我对现有列执行更新操作。
是否必须更改SSTable
以更新该列的值?
答案 0 :(得分:3)
http://wiki.apache.org/cassandra/MemtableSSTable说:
刷新后,SSTable文件是不可变的;没有进一步的写作可以做
您的更新值将写入commitlog和memtable,并最终将刷新到新的SSTable on-disk。之后,这个SSTable可以与其他SSTable合并,形成一个新的更大的SSTable(旧的SSTable将被丢弃) - 这就是压缩阶段。
答案 1 :(得分:1)
回答你的后续问题:是的,不是 - 你的价值可能会在不同的SSTable中结束,直到它们被压缩,但你不需要等到压缩才能得到'真'值,因为各种您的值的版本带有时间戳,因此Cassandra可以返回最新版本。