levelDB接触

参考
官网
cli工具
go impl

leveldb是什么

一个单机的 Key,Value 数据库,适合写多读少,支持持久化,支持故障恢复,支持二进制数据
LevelDb是能够处理十亿级别规模Key-Value型数据持久性存储的C++ 程序库
官方网站报道其随机写性能达到40万条记录每秒,而随机读性能达到6万条记录每秒。
总体来说,LevelDb的写操作要大大快于读操作,而顺序读写操作则大大快于随机读写操作。

样例接口

class DB {
public:
virtual Status Put(const WriteOptions& options, const Slice& key, const Slice& value) = 0;
virtual Status Delete(const WriteOptions& options, const Slice& key) = 0;
virtual Status Write(const WriteOptions& options, WriteBatch* updates) = 0;
virtual Status Get(const ReadOptions& options, const Slice& key, std::string* value) = 0;
}

记录几个概念,有需要在深入了解

  1. memtable
  2. Imuable memtable(其实我跟1是亲兄弟啦)
  3. sstable
  4. log
  5. filter

CLI 命令
打开目录,如果没有就创建

ldb ./testdb --create
ldb -h
get
put
del
列出key
ls

总体架构

60a2861e.png

put 操作

6d3bbdc0.png

log 格式

82a2155f.png

read

67ac73ac.png