THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
字节数
版本号000002(考虑1字节) 版本号改成03
放入Chunk Header中,改名为chunk type,若为04则表示chunk内只有一个page,不包含statistics
改成
chunk的大小是83字节
改成
数据类型是float
改成
chunk内page的个数 删除??
Snappy压缩方法
GORILLA编码
解压后page data大小 删除?待讨论,如果删除,可能会导致解压时,多一次内存拷贝,建议保留,int 改成 varInt,一个page大小不能超过2G(做检查)
解压前page data大小
改成
改成 varInt,记得检查
可以考虑改成与开始时间的delta值,用varInt存储(待讨论)
text没有
text没有
text没有
27字节的数据
考虑放到前面,改成chunk
设备名长度
改成
设备名字
删除
删除
版本是101
Metadatat
开始进入元数据区
删除
删除
数据类型为float
删除
改成
可以考虑改成与开始时间的delta值,用varInt存储(待讨论)
改成
改成
改成
设备名长度为16
改成
设备名
删除
删除
int 改成 varInt
int 改成 varInt
字节数(bytes) | 原字节 (V2) | 含义 (Meaning) | 改动 (V3 difference) | ||
---|---|---|---|---|---|
MAGIC_STRING | 6 | 5473 4669 6c65 | TsFile | ||
VERSION_NUMBER | 6 | 3030 3030 3032 |
version: 000002 | version: 000003 | |||
Chunk Header | 1 | 01 | chunk header marker |
Move to Chunk Header,rename to chunk type,05 means there is only one Page in a chunk without statistics | |||
4 | 00 0000 03 | string长度为3 | int |
-> varInt | |||
3 | 73 2e33 | s.3 | |
4 | 0000 0053 |
Size of Chunk is 83 bytes | int |
-> varInt | |
2 | 0003 |
Datatype is float | short |
-> byte | |
4 | 0000 0001 |
Number of pages in chunk | remove this field |
2 | 0001 |
Compression is Snappy | short 改成 byte |
2 | 0006 |
Encoding is GORILLA | short 改成 byte | ||
Page Header | 4 | 0000 0020 |
Uncompressed size of page data | |
4 | 0000 001b |
Compressed size of page data | int |
-> varInt | |||||
Page Statistics | 8 | 0000 0000 0000 0001 | count | long |
-> varInt | |||
8 | 0000 0000 0000 0001 | start_time | |
8 | 0000 0000 0000 0001 | end_time |
4 | 4000 0000 | min_value(bool, |
text do not has this field) | ||
4 | 4000 0000 | max_value(bool, |
text do not has this field) | |||
4 | 4000 0000 | first_value | |
4 | 4000 0000 | last_value | |
8 | 4000 0000 0000 0000 | sum(bool, |
text do not has this field) | bool值需要支持sum,int、bool改成long类型 | |||
Page Data | 27 | 2004 1800 0d01 047f ff09 0138 0000 0000 0000 0001 0000 0040 c447 f8 | 27 bytes of data |
数据里的int类型,以及string前面的 | ||||
Chunk Group Footer | 1 | 00 | marker |
move to chunk group header | |
4 | 0000 0010 |
size of deviceId | int |
→ varInt | |
16 | 726f 6f74 2e74 7572 6269 6e65 312e 6431 |
deviceId | ||
8 | 0000 0000 0000 0069 | chunk group data size |
remove | ||
4 | 0000 0001 | chunk number |
remove | |||||
MemTable Version | 1 | 03 | MemTable version marker | remove | |
8 | 00 0000 0000 0000 65 | memtable version is 101 |
remove |
Metadata Marker | 1 | 02 |
the following is metadata | ||||
ChunkMetadata(N个) | 4 | 0000 0003 | sensor名长度 |
remove | ||
4 | 732e 33 | s.1 |
remove | |||
8 | 00 0000 0000 0000 0c | 该chunk的offset在12 | |
2 | 0003 |
data type is float | remove |
Chunk Statistics | 8 | 0000 0000 0000 0001 | chunk中有1个点 | long |
-> varInt | |||||
8 | 0000 0000 0000 0001 | start_time | |||
8 | 0000 0000 0000 0001 | end_time | |||
4 | 4000 0000 | min_value | |||
4 | 4000 0000 | max_value | |||
4 | 4000 0000 | first_value | |||
4 | 4000 0000 | last_value | |||
8 | 4000 0000 0000 0000 | sum | |||
TimeSeries Metadata(N个) | 1 | 新增 timeseries metadata type,若为00则表示不包含statistics | |||
4 | 00 0000 03 | sensor名长度 | int 改成 varInt | ||
3 | 73 2e33 | s.1 | |||
2 | 0003 | 数据类型为float | short -> byte | ||
8 | 0000 0000 0000 00a0 | ChunkMetadataList的offset | |||
4 | 0000 0041 | ChunkMetadataList的size | int 改成 varInt | ||
TimeSeries Statistics | 8 | 0000 0000 0000 0001 | 该序列在file中有1个点 | long 改成 varInt | |
8 | 0000 0000 0000 0001 | start_time | |||
8 | 0000 0000 0000 0001 | end_time |
4 | 4000 0000 | min_value | |||
4 | 4000 0000 | max_value | |||
4 | 4000 0000 | first_value | |||
4 | 4000 0000 | last_value | |||
8 | 4000 0000 0000 0000 | sum | |||
MetaDataIndex Node | 4 | 0000 0001 | 树的第二层,他有多少个孩子 | int |
-> varInt | ||||
MetaDataIndex Entry(N个) | 4 | 0000 0003 | sensor名长度为3 | int |
-> varInt | |||||
3 | 732e 33 | s.3 | |||
8 | 00 0000 0000 0000 e1 | offset of the child | |||
8 | 00 0000 0000 0001 26 | endOffset of the last child | |||
1 | 03 | Node type是Leaf_Measurement | |||
MetaDataIndex Node | 4 | 0000 0001 | 树的第一层,他有多少个孩子 | int |
-> varInt | ||
MetaDataIndex Entry(N个) | 4 | 0000 0010 |
size of deviceid is 16bytes | int |
-> varInt | |
16 | 726f 6f74 2e74 7572 6269 6e65 312e 6431 |
name of deviceId | ||||
8 | 0000 0000 0000 0126 | offset of the child | ||
8 | 0000 0000 0000 0142 | endOffset of the last child | ||
1 | 02 | Node type是Internal_Measurement | Node type改成LEAF_DEVICE | |
total chunk number | 4 | 0000 0001 | total chunk number |
remove | ||||
invalid chunk number | 4 | 0000 0000 | 无效的chunk number |
remove | ||||
Version Info | 4 | 00 0000 01 | version pair的个数 |
remove | |||||
Version Pair(N个) | 8 | 00 0000 0000 0000 9f | offset of current version | remove | |
8 | 00 0000 0000 0000 65 | 版本是101 | remove | ||
Bloom Filter | 4 | 0000 001f | bloom filter size | int 改成 varInt | |
31 | 00 0000 0040 0000 0000 0000 0000 0100 0000 2000 0000 0020 0000 0000 0000 0004 | bloom filter data | |||
4 | 0000 0100 | filter size | int 改成 varInt | ||
4 | 0000 0005 | hash function size | int 改成 varInt | ||
Footer | 4 | 0000 0078 | tsfile metadata size |
不能使用varInt,因为这个需要倒着读 | |||||
MAGIC_STRING | 6 | 5473 4669 6c65 | TsFile |