Cassandra TTL机制


简介

研究Cassandra TTL 和墓碑的关系,TTL 清理数据的具体实现方式。

TTL 是什么

TTL,Time To Live,生存时间,是 Cassandra 数据库提供的一个数据自动清理机制,可对数据库中的数据设置TTL,超过生存时间后数据过期,数据库会自动进行删除。

Tombstone,墓碑,是 Cassandra 数据库将删除转化为插入操作的一个机制,本质就是一条新插入的标记数据(主键+[列]+删除时间)。但对 TTL 来说,墓碑不是新插入的,而是修改原有的数据,将其转换成墓碑。

什么情况会产生墓碑:

怎么清理TTL过期数据

清理数据流程:

什么时候检查是否需要做compaction?

什么时候会真正compaction?

参考代码

为什么要将过期数据先转换成 tombstone,而不是等 gc 时间到之后跟 tomestone 一样的逻辑一并清理掉?就是在 gc 时间还没到之前先转换成 tombstone,转换过程中把实际数据(column value)删除了,能节省空间。