TSM文件格式及实例解析(三)——多field的排列

上一篇解析了多series的情况,得出结论为indexes和blocks 同一顺序存储,block内部timestamp和value也是列式存储。

今天探究一下多field是如何排列的。

数据

先构造一组数据

insert cars,brand=honda,model=fit mileage=10000,speed=60 1535354189281011006
insert cars,brand=bmw,model=320li mileage=2000,speed=100 1535354189281012006
insert cars,brand=bmw,model=x5 mileage=2300,speed=101 1535354189281013006
insert cars,brand=bmw,model=x5 mileage=2400,speed=103 1535354189281014006
insert cars,brand=bmw,model=x5 mileage=2500,speed=102 1535354189281015006
insert cars,brand=bmw,model=x5 mileage=2600,speed=26 1535354189281016006
insert cars,brand=bmw,model=x5 mileage=2700 1535354189281017006
insert cars,brand=bmw,model=x5 mileage=2800,speed=0 1535354189281018006
insert cars,brand=bmw,model=x5 mileage=2900 1535354189281019006

> show measurements
name: measurements
name
----
cars
> show series from car
> show series from cars
key
---
cars,brand=bmw,model=320li
cars,brand=bmw,model=x5
cars,brand=honda,model=fit
>
>
> select * from cars

name: cars
time                brand mileage model speed
----                ----- ------- ----- -----
1535354189281011006 honda 10000   fit   60
1535354189281012006 bmw   2000    320li 100
1535354189281013006 bmw   2300    x5    101
1535354189281014006 bmw   2400    x5    103
1535354189281015006 bmw   2500    x5    102
1535354189281016006 bmw   2600    x5    26
1535354189281017006 bmw   2700    x5
1535354189281018006 bmw   2800    x5    0
1535354189281019006 bmw   2900    x5

 

继续之前的基础重新构造数据,多加了一个speed field, 且有的points有,有的points没有。

生成数据:


 

数据分析:

Indexes

从Indexes开始,offset 0xEE

发现indexes增多了, 每个index里面的key都是一个series + 一个field.

num of keys = num of series1's fields + num of series2's fileds +....

Blocks

 

blocks和indexes目前还是一一对应关系,保持列式结构。

但是block4 出了一点状况,因为block4中的timestamp间隔不是完全一致的。

key: cars,brand=bmw,model=x5#!~#speed

它的timestamp为 

1535354189281013006
1535354189281014006
1535354189281015006
1535354189281016006 
1535354189281018006

这里timestamp用的PackedSimple-s8b的压缩算法,这个比RLE要多花许多bytes.不过这个算法尚未深究,但是解码出来的timestamp依旧保持和value一样顺序,不影响列式结构。

结论:

每个index只能包含一个field.. 对于多field的情况,将产生更多的indexes(keys)

 

小结:

下一步将探寻多field,多重类型数据组合,看看结构有没有的新发现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值