我知道所有的插入操作都會首先提交,然後Memtable
秒,之後它會被壓縮到SSTable
。當我更新列時,SSTable是否會發生變化?
壓縮到SSTable
後,我對現有列執行更新操作。 必須更改SSTable
以更新該列的值嗎?
我知道所有的插入操作都會首先提交,然後Memtable
秒,之後它會被壓縮到SSTable
。當我更新列時,SSTable是否會發生變化?
壓縮到SSTable
後,我對現有列執行更新操作。 必須更改SSTable
以更新該列的值嗎?
http://wiki.apache.org/cassandra/MemtableSSTable說:
一旦刷新,文件的SSTable是不可變的;沒有進一步的寫入可以完成
您的更新值將被寫入commitlog和memtable,並最終被刷新到磁盤上的新SSTable。後來,這個SSTable可能會與其他SSTables合併形成一個新的更大的SSTable(舊的將被丟棄) - 這是壓實階段。
回答你的後續問題:是的,不是 - 你的值可能會以不同的SSTables結尾,直到它們被壓縮,但是你不需要等到壓縮才能得到'真正'的值,因爲你的價值的各種版本都有時間戳,所以Cassandra可以返回最新的版本。