tsfile
tsfile copied to clipboard
New File format
v0.8.0, add ChunkHeader and ChunkGroupFooter
TsFile 文件结构变化记录 2018/11/13 黄向东、乔嘉林、刘昆、江天
-
- Thanos V1
- 2.3 文件结构 TsFile thanos分支中RowGroup 的 metadata存在数据之前,需要在内存中缓存整个 RowGroup 的数据。结构如下图。
1. 2.3 接口
写RowGroup Metadata:RowGroupWriter.writeMedatadata() 单列数据写入内存:ChunkWriter.write(datapoint) 单列数据写入磁盘:ChunkWriter.flush() 1. 2.3 数据恢复 将不完整的RowGroup切掉,最后生成完整的File Metadata,此种方式会丢失一个RowGroup。 * 2. Thanos V2 1. 2.3 文件结构 为了减少RowGroup 数据内存占用,现将 RowGroup Metadata 移动到每个 RowGroup数据之后,Chunk与 Page 结构不变。
此种结构,内存中仅需缓存一个 Chunk 的数据,按需要可以随时将 Chunk 写入磁盘。每个Header前的byte用来标识接下来的一个metadata的种类。 1. 2.3 接口 在内存创建RowGroup Metadata:RowGroupWriter.startRowGroup() 单列数据写入内存:ChunkWriter.write(datapoint) 单列数据写入磁盘:ChunkWriter.flush() RowGroup Metadata 写入磁盘:RowGroupWriter.writeMetadata() 1. 2.3 数据恢复 将最后一个不完整的Chunk 切掉,生成RowGroup Metadata,生成File Metadata,此种方式会丢失一个Chunk。