去年一月份,Google發(fā)布了LevelDB。LevelDB是Key-Value嵌入式數(shù)據(jù)庫(kù)管理系統(tǒng)編程庫(kù),目前的版本能夠支持Billion級(jí)別的數(shù)據(jù)量。LevelDB是一個(gè)C++庫(kù),可按照字符串鍵值順序映射。源于其本身的良好設(shè)計(jì),特別是LSM算法,LevelDB性能非常之高。在一臺(tái)4個(gè)Q6600的CPU機(jī)器上,每秒鐘寫數(shù)據(jù)超過(guò)40w,而隨機(jī)讀的性能每秒鐘超過(guò)10w。
LevelDB可應(yīng)用于很多場(chǎng)景,如用于網(wǎng)頁(yè)瀏覽器存儲(chǔ)最近存取網(wǎng)頁(yè)的緩存,或用于操作系統(tǒng)存儲(chǔ)安裝包列表,或用于應(yīng)用存儲(chǔ)用戶的設(shè)置參數(shù)。新版本的Chrome瀏覽器里部署的IndexedDB HTML5 API就是基于LevelDB打造的,Google的數(shù)據(jù)庫(kù)Bigtable掌管著數(shù)百萬(wàn)數(shù)據(jù)表也是用LevelDB的,其作為存儲(chǔ)引擎被Riak和Kyoto Tycoon所支持。在國(guó)內(nèi),淘寶的Tair開源Key-Value存儲(chǔ)也已經(jīng)將LevelDB作為其持久化存儲(chǔ)引擎,并部署在線上使用。2011年7月,Google 宣布LevelDB項(xiàng)目開源,使用的開源授權(quán)協(xié)議為BSD。
近期發(fā)布的一篇博客引發(fā)了有關(guān)MySQL存儲(chǔ)引擎LevelDB的一場(chǎng)討論,有人認(rèn)為MySQL的高性能是源于LevelDB作為其存儲(chǔ)引擎,有人開始對(duì)LevelDB和MySQL的性能進(jìn)行對(duì)比。
LevelDB的官網(wǎng)提供了一些性能方面的資料,通過(guò)各種方法評(píng)測(cè)數(shù)據(jù)庫(kù)的寫速度在0.4MB/S到62.7MB/S之間,讀速度在152MB/S到232MB/S之間,對(duì)于這些評(píng)測(cè)的細(xì)節(jié)內(nèi)容可以查看LevelDB官網(wǎng)。
博客中同樣介紹到LevelDB也許是最符合MongoDB的存儲(chǔ)引擎,因?yàn)樗恍枰猰ulti-statement處理。評(píng)論者列舉了LevelDB的可能限制數(shù)據(jù)庫(kù)性能的幾個(gè)細(xì)節(jié),如下:
不幸的是,這需要在SST文件的數(shù)量和存儲(chǔ)文件所占空間兩者做出一個(gè)權(quán)衡,即耗費(fèi)更多時(shí)間將其壓縮。——Vladmir Rodionov
GitHub近期同樣發(fā)布了MySQL和LevelDB的對(duì)比, 在連續(xù)性插入性能上,LevelDB獲得高吞吐量和低延遲,但是MySQL似乎更穩(wěn)定。
MySQL與LevelDB在平均延遲和升級(jí)性能上表現(xiàn)基本一致。