时间过得真快,距离上一篇完成日已经有点时日了,光阴如白驹过隙,一晃就到了2015年的开春,在这春光明媚、冰河解冻、万物复苏的时节,我也结束了自己的蛰伏季,重新拾起“笔”,开始对本系列博文的耕作。

#[表结构]

年前结束了对port和util目录的分析,接下来我们开始分析table目录,通过对table目录下的源代码的学习,我们可以得知leveldb的表文件在内存和磁盘中的数据结构。按照前面的写作惯例,我们还是先来查看一下这个目录下的代码结构(不含测试代码):

table
  |
  +--block.h    // block在内存中的数据结构
  +--block.cc
  |
  +--block_builder.h   // 
  +--block_builder.cc
  |
  +--filter_block.h
  +--filter_block.cc
  |
  +--format.h
  +--format.cc
  |
  +--iterator.cc
  +--iterator_wrapper.h
  |
  +--merger.h
  +--merger.cc
  |
  +--table.cc
  +--table_builder.cc
  |
  +--two_level_iterator.h
  +--two_level_iterator.cc