Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。

  LevelDB 是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。

  示例代码:

  #include

  #include "leveldb/include/db.h"

  leveldb::DB* db;

  leveldb::Options options;

  options.create_if_missing = true;

  leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);

  assert(status.ok());

  std::string value;

  leveldb::Status s = db->Get(leveldb::ReadOptions(), key1, &value);

  if (s.ok()) s = db->Put(leveldb::WriteOptions(), key2, value);

  if (s.ok()) s = db->Delete(leveldb::WriteOptions(), key1);

  授权协议: BSD

  开发语言: C/C++C/C++

  操作系统: Linux Linux

  【简单说下leveldb】

  作者:黄东旭@youdao

  最近在公司内有人讨论到leveldb,之前正好也简单看了看文档,没仔细看实现,简单写个总结

  1. leveldb的committer阵容很强大,几乎是google那篇经典的big table的原班人马。虽然有人说可能并不是完整的google的使用着的实现,但是还是很吸引人的

  2. 它是一个k/v db library,提供持久化,看项目首页给出的performance很牛逼, 注意目前只是library, 严格来说和tc有点像,并没有dht,甚至没有server实现,不过我相信网上很多蛋疼的hacker会写的,如果有时间的话,我也蠢蠢欲动啊。和Redis之类没法比,因为没有cache。

  3. 针对随机写做了优化,使用了传说中的LSMTree,google的那篇paper里写了,但是没仔细看,在这里暂时不评论。我想应该是目前开源的唯一的LSMTree的kv db的实现(流行的大多数b-tree,其实lsmtree貌似是b-tree的一个优化)

  4. 实现了iterator, 对data可以前序甚至逆序遍历,这点很新鲜

  5. 类似batch,atom这种就不说了,基本是目前的标配

  6. 8g一下, chrome中的indexedDB就是用它实现的

  7. 居然还提供了ObjC的port

  简单归结一句话:这个东西是个k-v本地存储库,读性能一般(和TokyoCabinet 比),随机写不错,很小很清凉。没有memcache,没有server,什么都没有,就是个存储引擎而已。