LevelDB概述

@[TOC]LevelDB概述

特性

  • 他是一個key、value存儲數據庫。
  • 數據按照key的字典序進行排序,也可以重載這個排序方法
  • 提供基本的增刪查API:Put(key,value), Get(key), Delete(key)
  • 支持針對多條操作的原子batch操作
  • 只允許單個進程訪問
  • LevelDb的寫操作要大大快於讀操作,而順序讀寫操作則大大快於隨機讀寫操作。(因爲一次寫入操作只涉及一次磁盤順序寫和一次內存寫入,所以這是爲何說LevelDb寫入速度極快的主要原因。)

對比Redis的不同點:

  • Redis是純內存型的數據庫,而LevelDB大部分數據放在磁盤中
  • Redis提供了server-client進程,而LevelDB不提供,LevelDB只是一個引擎。

RocksDB對比LevelDB的改進點:

  • RocksDB增加了Column Family,每個CF單獨有一顆LSM-Tree和多個MemTable。
  • RocksDB支持多線程Compaction,而LevelDB是單線程Compaction的,在多CPU情況下RocksDB更加友好。
  • 壓縮方面RocksDB可採用多種壓縮算法,除了LevelDB用的snappy,還有zlib、bzip2,RocksDB在多層採用不同的壓縮算法,0-2層不壓縮,最後一層用zlib,其它層用snappy壓縮。
  • 每個Column Family的memtable與sstable都是分開的,所以每一個Column Family都可以單獨配置,所有Column Family共用同一個WAL log文件,可以保證跨Column Family寫入時的原子性
  • leveldb中,memtable在內存中核心s的數據結構爲skiplist,而在rocksdb中,memtable在內存中的形式有三種:skiplist、hash-skiplist、hash-linklist
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章