leveldb代码结构

leveld代码结构

源文件

$ tree -I "*test*"
.
├── AUTHORS
├── build_detect_platform
├── db #具体逻辑
   ├── builder.cc  # 定义了BuildTable函数
   ├── builder.h
   ├── c.cc        # c封装,暂时不用看
   ├── db_bench.cc
   ├── dbformat.cc # 搞懂几个key的关系即可,internal,lookupkey
   ├── dbformat.h
   ├── db_impl.cc # 具体实现,DBImpl::Write是重中之重
   ├── db_impl.h
   ├── db_iter.cc
   ├── db_iter.h
   ├── filename.cc   # 管理db目录下的个各个文件
   ├── filename.h    # 管理db目录下的个各个文件
   ├── log_format.h  # 物理日志格式定义
   ├── log_reader.cc # 读物理日志,ReadRecord
   ├── log_reader.h
   ├── log_writer.cc # 日志封装成相应的格式,并写入物理日志
   ├── log_writer.h
   ├── memtable.cc   # memtable定义,对记录进行格式化,并调用skiplist的相应接口
   ├── memtable.h    #
   ├── repair.cc     # 啥?
   ├── skiplist.h    # skiplist的定义
   ├── snapshot.h    # 成员变量只有SequenceNumber的双链表<http://www.blogjava.net/sandy/archive/2012/03/13/leveldb5.html>
   ├── table_cache.cc # 缓存sst文件,保存sst文件与Table的对应关系,
   ├── table_cache.h  # 要想全部搞懂Table,还需要弄清楚format.cc
   ├── version_edit.cc #啥?
   ├── version_edit.h
   ├── version_set.cc
   ├── version_set.h
   ├── write_batch.cc  # 批量写操作的实现,WriteBatch::Iterate
   └── write_batch_internal.h # 批量操作辅助文件
├── doc #帮助文档
   ├── bench
      ├── db_bench_sqlite3.cc
      └── db_bench_tree_db.cc
   ├── benchmark.html
   ├── doc.css
   ├── impl.html
   ├── index.html
   ├── log_format.txt
   └── table_format.txt
├── helpers
   └── memenv
   ├── memenv.cc
   └── memenv.h
├── include        # 接口
   └── leveldb
   ├── cache.h
   ├── c.h
   ├── comparator.h
   ├── db.h
   ├── env.h
   ├── filter_policy.h
   ├── iterator.h
   ├── options.h
   ├── slice.h
   ├── status.h
   ├── table_builder.h
   ├── table.h
   └── write_batch.h
├── libleveldb.so.1.4
├── LICENSE
├── Makefile
├── NEWS
├── port
   ├── atomic_pointer.h  # 无锁编程
   ├── port_android.cc
   ├── port_android.h
   ├── port_example.h
   ├── port.h
   ├── port_posix.cc
   ├── port_posix.h
   ├── README
   └── win
   └── stdint.h
├── README
├── table
   ├── block_builder.cc # 构造block,准备写入
   ├── block_builder.h  # 构造block,准备写入
   ├── block.cc         # 通过ReadBlock读取,通过迭代器读取各个record
   ├── block.h          # 读取block。定义了block,和相应的迭代器
   ├── filter_block.cc  # 与block类似,用以处理filter_block
   ├── filter_block.h   # 与block类似,用以处理filter_block
   ├── format.cc        # 定义了ReadBlock函数[重点]
   ├── format.h         # 定义了BlockContent,BlockHandle,Footer
   ├── iterator.cc      # 迭代器?
   ├── iterator_wrapper.h # 迭代器?
   ├── merger.cc        # 定义了MergingIterator迭代器
   ├── merger.h
   ├── table_builder.cc # 构造Table,Add()、Flush()、WriteBlock
   ├── table.cc         # 定义了操作table的方法,InternalGet
   ├── two_level_iterator.cc # 定义了TwoLevelIterator迭代器
   └── two_level_iterator.h
├── TODO
└── util
    ├── arena.cc       # 内存分配器
    ├── arena.h        # 内存分配器
    ├── bloom.cc       # 布隆过滤器
    ├── cache.cc       # Cache
    ├── coding.cc
    ├── coding.h       # 编码
    ├── comparator.cc  # 比较函数
    ├── crc32c.cc      # crc32校验
    ├── crc32c.h       # crc32校验
    ├── env.cc         #日志相关
    ├── env_posix.cc   # 文件操作封装和线程封装
    ├── filter_policy.cc
    ├── hash.cc        # hash函数
    ├── hash.h         # hash函数
    ├── histogram.cc   # 测试文件
    ├── histogram.h    # 测试文件
    ├── logging.cc     # 日志
    ├── logging.h      # 日志头文件
    ├── mutexlock.h    # mutex
    ├── options.cc     # option
    ├── posix_logger.h # 日志文件
    ├── random.h       # 随机数生成器
    └── status.cc      # 错误管理,Status

    11 directories, 109 files

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值