Google宣布將LevelDB開源,并且遵守New BSD許可證。LevelDB是一個(gè)嵌入式的key-value數(shù)據(jù)庫。它的鍵和關(guān)聯(lián)值可以是任意的字節(jié)數(shù)組,并且按照鍵值排序,排序機(jī)制是可以被重載的。數(shù)據(jù)存儲(chǔ)機(jī)制非常簡(jiǎn)單,僅僅支持Put,Get和Delete命令,然后還有前向和后向迭代遍歷。
數(shù)據(jù)會(huì)自動(dòng)使用Snappy壓縮,這是一個(gè)壓縮庫,Google將其用于BigTable,MapReduce和RPC中,并且在四月份宣布開源。LevelDB也有一些局限:不支持 SQL查詢和索引,支持多線程單進(jìn)程訪問,并且可以用于嵌入式設(shè)備,這將使某些項(xiàng)目收益,但是也會(huì)給其他的項(xiàng)目來帶麻煩。
LevelDB優(yōu)化了批量寫操作。它將多個(gè)修改請(qǐng)求有序緩存在內(nèi)存中,在累計(jì)到配置文件預(yù)設(shè)置的閾值之后再寫入到磁盤中。對(duì)于順序和隨機(jī)寫操作,以及順序讀操作來說,它的性能非常優(yōu)秀,根據(jù)Google的性能基準(zhǔn)測(cè)試,它能在某些測(cè)試項(xiàng)目中得分領(lǐng)先SQLite兩個(gè)數(shù)量級(jí)。SQLite在隨機(jī)讀操作中比LevelDB稍好,而在寫入較大數(shù)據(jù)的時(shí)候速度兩倍快于LevelDB。LevelDB同樣也表現(xiàn)得比Kyoto Cabinet優(yōu)秀,Kyoto Cabinet也是一個(gè)key-value數(shù)據(jù)庫,不過Google并沒有像SQLite那樣在所有測(cè)試項(xiàng)目中均進(jìn)行比較。同樣,Riak進(jìn)行了一些測(cè)試對(duì)比LevelDB和InnoDB,在一些測(cè)試項(xiàng)目中,Google的LevelDB要比InnoDB要優(yōu)秀或者能達(dá)到相同性能。
LevelDB是使用C++編寫,一些外部的依賴庫已經(jīng)成功地移植到Windows、Mac OS X、Android和各種Unix上。在實(shí)際的應(yīng)用中,Chrome的一些實(shí)驗(yàn)性版本中已經(jīng)使用了LevelDB,將其作為IndexDB API的實(shí)現(xiàn)。而Riak則將其用于節(jié)點(diǎn)級(jí)的存儲(chǔ)。不僅如此,一家開發(fā)3D地圖軟件的公司UpNext也使用了這套系統(tǒng)。