时序数据的压缩

数据组织:将一天切成12个slot,每一个slot包含很多metric,每一个metric包含有序tagkv集合到数据点集合的映射。每一个数据点包含一个时间戳和一个浮点数。

时间戳的压缩:在header中存储一个基准时间,第一个时间戳是与基准时间的delta最大14bit,后续的时间戳是与上一个时间戳delta的delta。如果是0则存储为b0,否则存储为b10+7bit能容下的数值,否则存储为b110+9bit能容下的数值,否则存储为b1110+12bit能容下的数值,否则存储为b111’+32bit能容下的数值。

浮点数的压缩:第一个值不压缩存储64bit,后面的值如果与前一个值亦或为0则存储为b0,否则先存储一个b1,判断亦或值的前后的0的数量都大于等于之前的值,如果是则存储b0+对应之前值的有效位的当前值,否则存储b1+前面的0的数量(5bit)+有效位数(6bit)+有效位的当前值。