golevelDB源码走读

项目地址

基本认识

  • levelDB 采用 LSM tree,具体的存储文件采用 sstable 格式
  • levelDB 是一个单机应用,且没有配备 server 和 client,相当于 sqlite 的模式
  • rocksDB 是以 levelDB 为基础的分布式 kv server
  • Google BigTable,HBase,RocksDB,Apache Cassandra 都是基于 LSM tree 的数据库
  • chrome 的 indexDB 也是基于 levelDB 的 (或者参考?)
  • 其实 prometheus 也是同样的模型 prometheus代码走读
  • 对于一些嵌入式场景,或者一些 有状态 server,都可以用 levelDB 做 kv 存储
  • SSDB 是基于 levelDB 的 kv 存储,提供了 client-server ,并实现了 redis 的接口,可以用 redis client 实现很多功能,还是很有前途的。
  • bitcask 是类 LSM tree 的方案,具体的存储上,采用了 hashmap 的方式,rosedb 就是采用这种方案,并且也实现了 redis 的接口。

源码走读

不得不说,用两个字形容 goleveldb 的代码: 非常简洁!

  • 需要再细看一下 memdb 的具体实现
  • 需要再细看一下 compact 的具体实现

看看别人的笔记,写得多好啊:

其他思考

  • 嵌入式场景下的数据库选型

Happiness mainly comes from our own attitude, rather than from external factors.
Dalai Lama