数据存储
bin文件是真正存储数据的文件
bin文件的数据是按照排序建排序后存储的
一个bin文件由N个压缩数据块组成。
一个压缩数据块存储压缩前大小为64K~1M子节的数据。
数据标记
mkt文件是存储数据标记的文件。
存储索引标记、压缩数据块在BIN文件的偏移量、解压缩数据块的偏移量。
假设age字段,每个值占用1子节空间,在该列则一个索引粒度范围内占用8192*1子节 = 8192子节 = 8KB。
每8(64KB/8KB=8) 个索引粒度,占用一个压缩数据块。
压缩数据块的切分规则:
- 一个压缩数据块存储压缩前大小为64K~1M子节的数据。
- 按一个索引粒度为最小单位,添加其对应的数据,用于生成压缩数据块。
- 如果一个索引粒度对应的数据小于64K,则继续添加下一个索引粒度对应的数据,直至数据的大小在64K~1M之间,然后生成压缩数据块。
- 如果一个索引粒度对应的数据超过1M,则该批次数据将拆分为多个压缩数据块存储。
数据查询
- 确定分区(如果有)
- 根据primary.idx确定数据在哪些索引标记内。
- 根据索引标记和数据标记文件(.mrk或.mrk2),确定数据在那个压缩数据块,以及在解压缩数据块中的偏移量。
- 加载数据至内存,向量化操作、查询过滤。