场景与目标
本设计解决的目标场景:
(1)时间序列条数多(亿级)
(2)每条时间序列写入负载平均(极端场景,此场景下缓存最易失效)
痛点问题
参考调研文档时序数据库数据文件存储结构调研中的定量分析部分,可知当前文件格式每一个chunk和page都存储了统计信息和header,而在海量时间序列场景下,每条时间序列每次刷盘的数据不超过10个点,也就是一个page中有10个点,每个chunk中只有一个page。在这种情况下,数据点少时统计信息加速效果不大,统计信息和header占用了过多空间,存在空间冗余。
概要设计
去除统计信息
Page和Chunk合并
实验
实验场景
模拟海量时间序列一次刷盘1%的数据量,即100万时间序列,其中有1万个设备,每个设备下有100个工况,每条时间序列写10个点,生成tsfile
每条时间序列的类型为long,编码算法为RLE,压缩算法为SNAPPY
去除统计信息前后文件大小比较
文件部分 / 文件所含内容 | 原始文件 | 仅保留起止时间统计信息 | 去除全部统计信息 |
---|---|---|---|
数据区(Timeseries metadata之前的部分) | 126.24 MB | 126.24 MB | 126.24 MB |
元数据区(Timeseries metadata之后的部分) | 79.17 MB | 38.17 MB | 22.17 MB |
总大小 | 205.41 MB | 164.41 MB | 148.41 MB |
总大小比例 | 100 % | 80.04 % | 72.25 % |