因为工作需要,曾对leveldb进行过测试与实际使用,而对leveldb的源代码进行学习,则纯粹是出于一个码农对美好世界进行探究的好奇。接下来将尽可能从源代码上给出leveldb代码的详尽注释,这里先列出自己在阅读前后的主要参考。
0 官方文档
http://leveldb.googlecode.com/svn/trunk/
源代码,主要使用了1.7.0版本
https://leveldb.googlecode.com/files/leveldb-1.7.0.tar.gz
http://leveldb.googlecode.com/svn/trunk/doc/index.html
官方使用手册,比较详细
http://leveldb.googlecode.com/svn/trunk/doc/benchmark.html
官方的性能测试
http://leveldb.googlecode.com/svn/trunk/doc/impl.html
比较粗略的介绍了leveldb的主要实现细节
http://leveldb.googlecode.com/svn/trunk/doc/table_format.txt
http://leveldb.googlecode.com/svn/trunk/doc/log_format.txt
sstable文件格式与log文件格式
1 原理
【朗格科技】LevelDb日知录系列 http://www.samecity.com/blog/Index.asp?SortID=12
数据分析与处理之二(Leveldb 实现原理)
http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html
比较详尽的介绍了leveldb各模块的工作原理与实现细节,缺点是没有源代码细节。对leveldb最初细节的了解,也起于该文。建议读者可先阅读此文,以对leveldb的原理有最初的印象。另外,作者似乎没有把该系列写完。
leveldb实现解析.pdf
从代码细节上进行了分析,不过对于初接触者恐怕容易陷入过多的细节,缺乏整体性的介绍。建议对原理有了大致了解,且初读代码后,再进行对照学习。
2 性能
关于LevelDB http://blog.sina.com.cn/s/blog_593af2a70100ztjn.html
LevelDB 写操作出现停顿的问题分析 http://www.ideawu.net/blog/archives/709.html
Performance data for LevelDB, Berkley DB and BangDB for Random Operations
http://highscalability.com/blog/2012/11/29/performance-data-for-leveldb-berkley-db-and-bangdb-for-rando.html
leveldb与kyoto cabinet性能测试
http://blog.creapptives.com/post/8330476086/leveldb-vs-kyoto-cabinet-my-findings
3 相关实现
go实现 https://code.google.com/p/leveldb-go
Tair ldb(LevelDB)原理与应用案例.pdf
leveldb+redis https://github.com/qiye/redis-storage
ssdb https://github.com/ideawu/ssdb
sophia https://github.com/pmwkaa/sophia