Google 开源 Key-Value 数据库 LevelDB

阅读数:9434 2011 年 7 月 29 日

话题:数据库Google架构DevOps语言 & 开发AI

Google 宣布将LevelDB开源,并且遵守New BSD许可证。LevelDB 是一个嵌入式的 key-value 数据库。它的键和关联值可以是任意的字节数组,并且按照键值排序,排序机制是可以被重载的。数据存储机制非常简单,仅仅支持 Put,Get 和 Delete 命令,然后还有前向和后向迭代遍历。

数据会自动使用Snappy压缩,这是一个压缩库,Google 将其用于 BigTable,MapReduce 和 RPC 中,并且在四月份宣布开源。LevelDB 也有一些局限:不支持 SQL 查询和索引,支持多线程单进程访问,并且可以用于嵌入式设备,这将使某些项目收益,但是也会给其他的项目来带麻烦。

LevelDB 优化了批量写操作。它将多个修改请求有序缓存在内存中,在累计到配置文件预设置的阈值之后再写入到磁盘中。对于顺序和随机写操作,以及顺序读操作来说,它的性能非常优秀,根据 Google 的性能基准测试,它能在某些测试项目中得分领先 SQLite 两个数量级。SQLite 在随机读操作中比 LevelDB 稍好,而在写入较大数据的时候速度两倍快于 LevelDB。LevelDB 同样也表现得比Kyoto Cabinet优秀,Kyoto Cabinet 也是一个 key-value 数据库,不过 Google 并没有像 SQLite 那样在所有测试项目中均进行比较。同样,Riak 进行了一些测试对比 LevelDB 和 InnoDB,在一些测试项目中,Google 的 LevelDB 要比 InnoDB 要优秀或者能达到相同性能。

LevelDB 是使用 C++ 编写,一些外部的依赖库已经成功地移植到 Windows、Mac OS X、Android 和各种 Unix 上。在实际的应用中,Chrome 的一些实验性版本中已经使用了 LevelDB,将其作为IndexDB API的实现。而Riak则将其用于节点级的存储。不仅如此,一家开发 3D 地图软件的公司UpNext也使用了这套系统。

查看英文原文:Google Has Open Sourced LevelDB, A Key-Value Datastore