SSTable文件的结构
整体上看 SSTable文件分为数据区与索引区,尾部的footer指出了meta index block与index block的偏移与大小,index block指出了各data block的偏移与大小,metaindex block指出了filter block的偏移与大小。
1)data block:存储key-value记录,分为Data、type、CRC三部分
2)filter block:默认没有使用,用于快速从data block 判断key-value是否存在
3)metaindex block :记录filter block的相关信息
4)Index block:描述一个data block,存储着对应data block的最大Key值,以及data block在文件中的偏移量和大小
5)footer:索引的索引,记录metaindex block和Index block在SSTable中的偏移量了和大小
下面再具体看看各个部分物理结构
1、block
sstable中data block 、metaindex block、index block都用这种block这种结构。对于data block,当block大小(record、restarts数组、以及num_restarts)超过4k时,就切换一个新的block继续往SSTable写数据,而metaindex block、index block就只有一个block,所以上图看起来data block有多个。 <