RocksDB使用場景和特性

2021-10-19 04:09:42 字數 1734 閱讀 2056

儲存和訪問數百pb的資料是乙個非常大的挑戰,開源的rocksdb就是facebook開放的一種嵌入式、持久化儲存、kv型且非常適用於fast storage的儲存引擎。

傳統的資料訪問都是rpc,但是這樣的話訪問速度會很慢,不適用於面向使用者的實時訪問的場景。隨著fast storage的流行,越來越多的應用可以通過在flash中管理資料並快速直接的訪問資料。這些應用就需要使用到一種嵌入式的database。

使用嵌入式的database的原因有很多。當資料請求頻繁訪問記憶體或者fast storage時,網路延時會增加響應時間,比如:訪問資料中心網路耗時可能就耗費50ms,跟訪問資料的耗時一樣多,甚至更多。這意味著,通過rpc訪問資料有可能是本地直接訪問耗時的兩倍。另外,機器的core數越來越多,storage-iops的訪問頻率也達到了每秒百萬次,傳統資料庫的鎖競爭和context 切換會成為提高storage-iops的瓶頸。所以需要一種容易擴充套件和針對未來硬體趨勢可以定製化的database,rocksdb就是一種選擇。

rocksdb是基於google的開源key value儲存庫leveldb,主要滿足以下目標:

商業伺服器一般會有很多cpu核,要開發乙個隨著cpu 核數吞吐量也隨之增大的資料庫是很困難的,更別提是線性的遞增關係。但是,rocksdb是可以高效地執行在多核伺服器上。乙個優點是rocksdb提供的語義比傳統的dbms更簡單。例如:rocksdb支援mvcc,但是僅限於唯讀的transaction。另乙個優點是資料庫在邏輯上分片為read-only path和read-write path。這兩種方法可以降低鎖競爭,而降低鎖競爭是支援高併發負載的前提條件。

現在的儲存裝置都可以支援到每秒10w的隨機讀,如果有10塊儲存卡的話就可以支援每秒100w的隨機讀。rocksdb可以在這種快速儲存上高效執行且不會成為效能瓶頸。

和實時更新的b-tree相比,rocksdb有更好的壓縮和更小的寫放大。rocksdb由於壓縮更優,所以占用更少的storage;由於更小的寫放大,flash 裝置可以更持久。

rocksdb支援擴充套件。比如,我們可以新增乙個merge operator,這樣就可以使用write-only來替代read-modify-write。然而,read和write是會增加儲存的讀寫iops。在寫頻繁的負載下,這種措施可以降低iops。

io-bound workload是指資料庫大小遠大於記憶體且頻繁地訪問storage。in-memory workload是指資料庫資料都在記憶體中且仍然使用storage來持久化儲存db。write-once workload是指大部分的key都只會寫入一次或者insert且沒有更新操作。現在rocksdb很好支援io-bound,要想更好地支援in-memory,需要做一些工作。支援write-once的話,還有很多遺留問題待解決。

rocksdb不是乙個分布式的db,而是乙個高效、高效能、單點的資料庫引擎。rocksdb是乙個持久化儲存keys和values的c++ library。keys 和values可以是任意的位元組流,且按照keys有序儲存。後台的compaction會消除重複的和已刪除的key。rocksdb的data以log-structured merge tree的形式儲存。rocksdb支援原子的批量寫入操作以及前向和後向遍歷。

rocksdb採用「可插拔式」的架構,所以很容易替換其中的元件,允許使用者很容易在不同的負載和硬體裝置上進行調優。

RocksDB使用場景和特性

儲存和訪問數百pb的資料是乙個非常大的挑戰,開源的rocksdb就是facebook開放的一種嵌入式 持久化儲存 kv型且非常適用於fast storage的儲存引擎。傳統的資料訪問都是rpc,但是這樣的話訪問速度會很慢,不適用於面向使用者的實時訪問的場景。隨著fast storage的流行,越來越...

mongodb 使用場景和不使用場景

1.mongodb介紹 mongodb 名稱來自 humongous 是乙個可擴充套件的高效能,開源,模式自由,面向文件的資料庫。它使用c 編寫。mongodb特點 a.面向集合的儲存 適合儲存物件及json形式的資料。b.動態查詢 mongo支援豐富的查詢表達方式,查詢指令使用json形式的標記,...

mongodb 使用場景和不使用場景

mongodb 使用場景和不使用場景 2012 09 26 10 30 18 分類 linux 1.mongodb介紹 mongodb 名稱來自 humongous 是乙個可擴充套件的高效能,開源,模式自由,面向文件的資料庫。它使用c 編寫。mongodb特點 a.面向集合的儲存 適合儲存物件及js...