Leveldb是一個(gè)google實(shí)現(xiàn)的非常高效的kv數(shù)據(jù)庫,目前的版本1.2能夠支持billion級別的數(shù)據(jù)量了。 在這個(gè)數(shù)量級別下還有著非常高的性能,主要?dú)w功于它的良好的設(shè)計(jì)。特別是LSM算法。

  LevelDB 是單進(jìn)程的服務(wù),性能非常之高,在一臺4個(gè)Q6600的CPU機(jī)器上,每秒鐘寫數(shù)據(jù)超過40w,而隨機(jī)讀的性能每秒鐘超過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);

  授權(quán)協(xié)議: BSD

  開發(fā)語言: C/C++C/C++

  操作系統(tǒng): Linux Linux

  【簡單說下leveldb】

  作者:黃東旭@youdao

  最近在公司內(nèi)有人討論到leveldb,之前正好也簡單看了看文檔,沒仔細(xì)看實(shí)現(xiàn),簡單寫個(gè)總結(jié)

  1. leveldb的committer陣容很強(qiáng)大,幾乎是google那篇經(jīng)典的big table的原班人馬。雖然有人說可能并不是完整的google的使用著的實(shí)現(xiàn),但是還是很吸引人的

  2. 它是一個(gè)k/v db library,提供持久化,看項(xiàng)目首頁給出的performance很牛逼, 注意目前只是library, 嚴(yán)格來說和tc有點(diǎn)像,并沒有dht,甚至沒有server實(shí)現(xiàn),不過我相信網(wǎng)上很多蛋疼的hacker會寫的,如果有時(shí)間的話,我也蠢蠢欲動啊。和Redis之類沒法比,因?yàn)闆]有cache。

  3. 針對隨機(jī)寫做了優(yōu)化,使用了傳說中的LSMTree,google的那篇paper里寫了,但是沒仔細(xì)看,在這里暫時(shí)不評論。我想應(yīng)該是目前開源的唯一的LSMTree的kv db的實(shí)現(xiàn)(流行的大多數(shù)b-tree,其實(shí)lsmtree貌似是b-tree的一個(gè)優(yōu)化)

  4. 實(shí)現(xiàn)了iterator, 對data可以前序甚至逆序遍歷,這點(diǎn)很新鮮

  5. 類似batch,atom這種就不說了,基本是目前的標(biāo)配

  6. 8g一下, chrome中的indexedDB就是用它實(shí)現(xiàn)的

  7. 居然還提供了ObjC的port

  簡單歸結(jié)一句話:這個(gè)東西是個(gè)k-v本地存儲庫,讀性能一般(和TokyoCabinet 比),隨機(jī)寫不錯,很小很清涼。沒有memcache,沒有server,什么都沒有,就是個(gè)存儲引擎而已。