了解了上一篇column裡面內部的結構設計,那麼再來要講到的是TTL機制。
TTL,資料存活時間,是column上的設定。
提醒一下,column理面的timestamp放的是資料插入時間
,並非TTL的時間。
TTL預設是null,也就是預設永久保存資料。
若要設定TTL的話,可以在insert或update的操作寫入,單位是秒鐘,例如寫入3600秒,亦即這個column在一個小時後資料會失效。
TTL 的操作單位是針對每個column
做設定,而且沒有針對row做設定的方式,若想要讓整個row失效的話,是需要對於row裡面的column分別做設定。
討論到資料失效,就要說明一下CASSANDRA/SCYLLA的墓碑機制。
墓碑是用來處理資料的刪除工作,當執行刪除的時候,資料並不會直接被移除,而是被替換成一個墓碑印記。
這個機制在wiki查詢的時候不沒有特別說明是CASSANDRA/SCYLLA的專利,但是在RDBMS理面好像也沒有看到相關的說明。
CASSANDRA/SCYLLA 在此的相關設定有一個垃圾回收寬限期,Garbage Collectioni Grace Seconds
,預設是864000秒,10天的時間,CASSANDRA/SCYLLA會追蹤這個時間,超過後才實際進行資料的刪除,換句話說,在失效之前,是有機會追回這些應該被刪除的資料。
以上概念與我們熟悉的RDBMS認知的刪除資料操作,非常的不同對吧!
還有一點關於墓碑的產生方式有點特別。
關於刪除的語法,像是delete from where + 條件
根據條件的不同
CASSANDRA/SCYLLA 會產生不同的tombstone,而因此會影響到實際刪除資料的處理。