MergingIterator 是 Level DB中重要的类,在某一个level做多个file数据Compaction的时候,这多个file之间数据如何高效的组织和比较,这个时候用到了MergingIterator。
关键member & member function
MergingIterator继承了Iterator(Level DB --- Iterator-CSDN博客),它里面有一个数组children_,children_里面存储了多个file的Iterator(file的two_level_iterator, Level DB --- two_level_iterator-CSDN博客),
//计算children_里面值最小的iterator
void MergingIterator::FindSmallest()//计算children_里面值最大的iterator
void MergingIterator::FindLargest() //将children_都置到迭代器的首位置
void MergingIterator::SeekToFirst()//将children_都置到迭代器的尾位置
void MergingIterator::SeekToLast()//在各个children_里面搜索target
void MergingIterator::Seek(const Slice& target)//将children_中等于当前值key的迭代器置为到他们下一个迭代器
void MergingIterator::Next()//将children_中等于当前值key的迭代器置为到他们前一个迭代器
void MergingIterator::Prev()
以上功能都是为了用于多个file做Compaction的时候进行相同数据的合并。