Leveldb是一个google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计。特别是LSM算法。
LevelDB 是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。
py-leveldb 是 Google 的 K/V 数据库LevelDB的 Python 客户端开发包。
plyvel源码:https://github.com/wbolster/plyvel
plyvel操作文档:https://plyvel.readthedocs.io/en/latest/
pip install leveldb
pip install cython # plyvel需要用到c环境
pip install plyvel # python 连接leveldb模块
def single_operate():
db = leveldb.LevelDB('./data')
db.Put('foo','东升')
print db.Get('foo')
db.Delete('foo')
print db.Get('foo')
新建数据库很方便,如果这个目录已经存在就会直接打开,没有的话就会新建。示例中给出了添加,删除,和获取的方法,注意,是没有修改操作的。
如果我对数据库有一大批操作,每一次都和数据库进行交互,其实挺浪费性能的,因此像mongodb,redis都提供了批量操作的方法,leveldb也是如此。下面是一个清空数据库的例子
def clear_db():
db = leveldb.LevelDB('./data')
b = leveldb.WriteBatch()
for k in db.RangeIter(include_value = False, reverse = True):
b.Delete(k)
db.Write(b)
b.Delete(k)并没有真正的删除数据,而是在db.Write(b)时执行所有的操作
import leveldb
db = leveldb.LevelDB('./db')
# multiple put/delete applied atomically, and committed to disk
batch = leveldb.WriteBatch()
batch.Put('hello', 'world')
batch.Put('hello again', 'world')
batch.Delete('hello')
db.Write(batch, sync = True)
参考:https://www.oschina.net/p/py-leveldb?fromerr=G5QJs7l1
http://www.zhangdongshengtech.com/article-detials/89
windows上编译leveldb.lib和安装plyvel:https://www.e-learn.cn/topic/1900422
Windows上安装py-leveldb:http://www.voidcn.com/article/p-eqbmpbmo-xd.html