DTCP(日期分层Compaction)
问题描述
ExploringCompactionPolicy是hbase minor compaction的默认策略。图一表现了这个算法默认设置下的表现情况
该策略产生的文件结构与之后讨论的固定窗口大小的分层compaction很相似,区别在于对主干大小和分层没有精确控制, 文件的最大上限取决于major compaction发生的间隔, major compaction 会把多个文件compact成一个。
设想在某种访问模型下, 写入全部是顺序的,读数据主要是基于时间区间对特定列族的scan。绝大多数scan都是基于回看窗口的。默认的文件结构没法支持scan api来跳过超出时间区间的存储文件。
如果采用时间分层的compaction, 我们能够得到如下好处:
1.相比major compaction对跨时间的scan有更好的粒度
2.减少Compaction的IO开销
3.有效的数据保留管理
Compaction策略
https://labs.spotify.com/2014/12/18/date-tiered-compaction/ 介绍了cassadnra的设计。我们通过计算Unix epoch到现在的时间来获取质数分布的时间窗口。这些窗口并随着时间滑动。相反,随着时间流逝, 新的时间窗口生成,旧的时间窗口被合并成了更大的窗口,正如图2所示: