SSTable是一种拥有持久化,有序且不可变的的键值存储结构
它的key和value都是任意的字节数组,并且了提供了按指定key查找和指定范围的key区间迭代遍历的功能。
结构(key有序)
image.pngSSTable内部包含了一系列可配置大小的Block块,典型的大小是64KB,关于这些Block块的index存储在SSTable的尾部,用于帮助快速查找特定的Block。当一个SSTable被打开的时候,index会被加载到内存,然后根据key在内存index里面进行一个二分查找,查到该key对应的磁盘的offset之后,然后去磁盘把响应的块数据读取出来。当然如果内存足够大的话,可以直接把SSTable直接通过MMap的技术映射到内存中,从而提供更快的查找
查找过程
先取出来Index,通过key进行二分查找,找到对应的offset(偏移量),然后把磁盘里对应的Block(块数据)取出来。
网友评论