MemTable是Level DB中重要的组件,它主要处理Level DB内存级别的增删查改。
基本数据结构
基础的存储数据结构如图1所示,这是一个存储单元的结构。其中1是internal key size,这里面包括两部分,一部分我们Level DB存储key-value中key的内存大小,还有64bits的固定大小。2中存储的是key的原值。3部分高56bits存储的sequence num,低8bits存储type,这里面的type标注这个单元是存储状态(kTypeValue)还是删除(kTypeDeletion)状态。4中存储的是value size,5中存储的是key-value中的value原值。
1/2/3/4/5整体组成的字符串,作为一个key,通过KeyComparator存储到SkipList里面,并不是key-value中的key。
图1. MemTable的基本存储结构
组件
Memtable用到了之前介绍过的组件,如下:
其中存储媒介用到了Level DB --- SkipList-CSDN博客
编码用到了Level DB --- coding-CSDN博客
内存池用到了Level DB --- Arena-CSDN博客