THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
当前 IoTDB 只支持在存储组设置 TTL,需要支持更细粒度的 TTL 设置。
功能层面:
(1)只允许用户在 SG 节点设置 TTL
(2)允许用户在元数据树的 SG 节点-设备节点 之间的任意节点设置 TTL。父节点的 TTL 比子节点的 TTL 要大(比如整个存储组保留 3 个月,其中某个设备保留1周)。
实现层面:
(a)当用户在存储组节点设置 TTL 时,我们起一个单独的线程去做整个 TsFile 的过期检查,过期直接删文件,算是一个优化。
(b)数据查询时,过期数据要屏蔽掉。
(c)在数据合并的时候,跳过过期的数据,这一条适用于所有粒度的 TTL,需要考虑的就是数据合并的触发时机。
现阶段:已经支持(1),并且实现了 (a)
第二阶段:(2)和(b)需要同时实现
第三阶段:完善(c)
1 Comment
宋超超
更加细粒度的TTL管理,必然会引入删除数据过程中的数据提取、删除、编码、压缩等效率问题。
除非像InfluxDB那样RP(包含TTL信息)作为顶层目录来组织数据。但也会引入一个问题:改变RP(TTL)后,无法再找到历史数据。
这个两难问题如何解决呢?