leveldb是一个google出品的单机kv数据库。用C++编写,代码量很小,大概只有1~2万行。代码写的可以用优雅来形容,毫无疑问是我至今看到的最优雅的c++代码。而且由于代码量比较小,可以直接通读整个源码,了解一个完整的kv系统的构建流程。是一个很好的学习材料。这也是我第一次读数据库方面的源码,尝试用博客记录阅读过程。在阅读源码的过程中,感觉自己有了很大的提高。希望再写一遍,把这种提高深刻以下!
本系列的leveldb源码剖析就从数据编码开始
必要性
数据编码算法实现在util/coding.h和util/coding.cpp两个文件中。
leveldb中的数据编码主要是将整型数编码成可以和ASCII码区分的二进制形式,然后实现和kv统一的存储方式。比如在存储一个键值对时
key = "hello" , value = "world"
如果我们直接像下面这样将kv的Ascii都相邻存储