Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

TsFileResource 文件结构 


每个数据文件 TsFile 在内存中对应一个对象 TsFileResource,主要包含以下信息

  • TimeIndex:将此 TsFile 中所有时间序列的路径 默认按照 (root - 倒数第二层)分组,每组为一个索引条目(包含:路径、起始时间、终止时间)
  • PlanIndex:raft 中一个 TsFile 文件对应的 Raft 日志的起始和终止下标
  • ModificationPath:墓碑文件路径(如果存在墓碑文件)


示例:

如果 TsFile 文件中的各个序列的时间范围如下所示:


root.sg.d1.s1, 1, 10

root.sg.d1.s2, 1, 15

root.sg.d2.s1, 1, 10

root.sg.d3.s1, 5, 10


则 TimeIndex 为 

root.sg.d1, 1, 15

root.sg.d2, 1, 10

root.sg.d3, 5, 10


可以看到,按设备记录只是其中一种分组方式。当设备过多时(几十万量级)内存增长过快,因此可以针对不同层次的基数设计不同的分组方式。


TimeIndex 设计方案


一、TsFileResource及接口设计修改目标

文件结构:

一、TsFileResource及接口设计修改目标

...


2. 目标:

(1) 总体目标:目前tsfile采用一对一的索引方式,每个tsfile都有一个索引文件TsFileResource,tsfile文件内的信息(开始时间、结束时间等)都保存在TsFileResource中。

由于TsFileResource常驻内存中,当设备过多时(几十万量级)内存增长过快,就会爆内存,因此不适用于管理较多活跃设备场景。常驻内存中,

本次针对TsFileResouce的改进总目标为可以支持更多的设备,将 resource 中的设备起止时间移出,单独在文件的时间索引模块进行管理,

...