leveldb源码阅读笔记

leveldb是c++实现的键值对数据库,代码质量和性能都不错,很值得学习。 自己主要看两方面:c++代码风格和实现原理。

c++代码风格

  1. 类名和类的函数名首字母大写,驼峰命名
  2. 类和结构体中的变量用下划线命名,最后加一个下划线
  3. 大括号不单独另起一行
  4. 数字变量统一用stdint中的,例如int64_t,uint64_t
  5. 带有函数的用class,只是存几个变量用struct
  6. include先引用c标准库头文件,然后是c++标准库头文件,最后自己项目的头文件
  7. 为了变量简短,引用c标准库头文件
  8. c++标准库都加std::域限制,不用using namespace std;
  9. 引用和指针修饰符都紧挨类型

实现原理

leveldb的数据在磁盘上有序排列,之所以高性能是先写日志,日志写成功及成功,此时宕机也能从日志中恢复出来。 也就是应用LSM (Log Structured Merge) 策略,来保证高性能和高可用。

另外还有