Python版的LevelDB cpy-leveldb
cpy-leveldb是在leveldb(google 開源的高性能key-value數據庫)的 C API 基礎上開發的 python 綁定,目前支持leveldb 的 Put, Get, Delete, Write操作,以及 WriteBatch 的原子更新操作,WriteBatch 還可以通過將多個更新放到同一個 batch 里,在存在大量更新操作時,加速它們的執行,此外,cpy-leveldb 還支持快照(Snapshot),迭代器(Iterator),使 LevelDB 的功能最大化的在 Python 中得到實現。
項目地址:https://github.com/forhappy/cpy-leveldb
cpy-python使用例子:
>>> import leveldb >>> db = leveldb.LevelDB("/tmp/leveldb") >>> db.Put("1", "111") >>> db.Put("2", "222") >>> db.Put("3", "333") >>> db.Get("1") '111' >>> db.Get("3") '333' >>> db.Get("2") '222' >>> batch = leveldb.WriteBatch() >>> for i in xrange(20): ... batch.Put(str(i), "hello world %i" % i) ... >>> db.Get("2") '222' >>> db.Get("5") '' >>> db.Write(batch) >>> db.Get("5") 'hello world 5' >>> db.Get("2") 'hello world 2' >>> iter = leveldb.Iterator(db) Iterator_init executed. >>> iter.First() >>> iter.Key() '0' >>> iter.Value() 'hello world 0' >>> iter.Last() >>> iter.Key() '9' >>> iter.Value() 'hello world 9' >>> iter.First() >>> iter.Next() >>> iter.Key() '1' >>> iter.Next() >>> iter.Key() '10' >>> iter.Next() >>> iter.Key() '11' >>> iter.Value() 'hello world 11'
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);
本文由用戶 webphp 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!