KV型數據存儲引擎Leveldb/lmdb/comdb /rocksdb

單機存儲引擎分類

根據《大規模分佈式存儲系統:原理解析與架構實戰》,有三類單機存儲引擎:c++

哈希存儲引擎是哈希表的持久化實現;數據庫

B樹存儲引擎是B樹的持久化實現;架構

LSM樹(Log Structure Merge Tree)存儲引擎採用批量轉儲技術來避免磁盤隨機寫入。分佈式

  • comdb(百度內部Mola開發的一個單機存儲引擎)和文中的Bitcask存儲引擎相似,不過更搓一些,沒有對索引文件進行固化,啓動速度比較慢(小時級別)。

1 寫入過程:對日誌進行追加寫入,更新內存索引,標記老紀錄無效,等待按期rewrite。 
2 讀取過程:檢索內存,讀盤 
3 rewrite 過程:限速讀取一個數據分片,順序讀取索引表,寫回新文件,切換,刪除老文件。性能

  • lmdb優化

    利用mmap 直接進行映射,儘可能少內存拷貝(能夠爲只讀直接返回引擎中的內存),提升讀性能 
    利用tree 方式組織數據,而且和系統虛擬內存頁大小一致的頁進行文件組織 
    優勢:專門進行了讀優化 
    缺點:和系統頁同樣大的組織方式(4k),若是單條record爲1k,浪費嚴重日誌

  • leveldb索引

利用層表方式組織數據,優化寫入速度 優勢:爲寫入優化,而且進行壓縮 缺點:寫入太頻繁,來不及重寫磁盤會爆掉(LSM通病)。最壞落盤7次,不可忍受。內存

  • rocksdb: RocksDB是FaceBook起初做爲實驗性質開發的一個高效數據庫軟件,旨在充分實現快存上存儲數據的服務能力。RocksDB是一個c++庫,能夠用來存儲keys和values,且keys和values能夠是任意的字節流,支持原子的讀和寫。
相關文章
相關標籤/搜索