去年一月份,Google发布了LevelDB。LevelDB是Key-Value嵌入式数据库管理系统编程库,目前的版本能够支持Billion级别的数据量。LevelDB是一个C++库,可按照字符串键值顺序映射。源于其本身的良好设计,特别是LSM算法,LevelDB性能非常之高。在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。
LevelDB可应用于很多场景,如用于网页浏览器存储最近存取网页的缓存,或用于操作系统存储安装包列表,或用于应用存储用户的设置参数。新版本的Chrome浏览器里部署的IndexedDB HTML5 API就是基于LevelDB打造的,Google的数据库Bigtable掌管着数百万数据表也是用LevelDB的,其作为存储引擎被Riak和Kyoto Tycoon所支持。在国内,淘宝的Tair开源Key-Value存储也已经将LevelDB作为其持久化存储引擎,并部署在线上使用。2011年7月,Google 宣布LevelDB项目开源,使用的开源授权协议为BSD。
近期发布的一篇博客引发了有关MySQL存储引擎LevelDB的一场讨论,有人认为MySQL的高性能是源于LevelDB作为其存储引擎,有人开始对LevelDB和MySQL的性能进行对比。
LevelDB的官网提供了一些性能方面的资料,通过各种方法评测数据库的写速度在0.4MB/S到62.7MB/S之间,读速度在152MB/S到232MB/S之间,对于这些评测的细节内容可以查看LevelDB官网。
博客中同样介绍到LevelDB也许是最符合MongoDB的存储引擎,因为它不需要multi-statement处理。评论者列举了LevelDB的可能限制数据库性能的几个细节,如下:
不幸的是,这需要在SST文件的数量和存储文件所占空间两者做出一个权衡,即耗费更多时间将其压缩。——Vladmir Rodionov
GitHub近期同样发布了MySQL和LevelDB的对比, 在连续性插入性能上,LevelDB获得高吞吐量和低延迟,但是MySQL似乎更稳定。
MySQL与LevelDB在平均延迟和升级性能上表现基本一致。