rocksdb相對于mysql等數(shù)據(jù)庫來說,比較小眾,即使接觸過一段時間flink后,還是會很好奇flink為啥要選擇rocksdb來做狀態(tài)存儲,這里總結(jié)一下為啥flink選擇rocksdb做狀態(tài)存儲的原因。
1.rocksdb采用的是LSM(Log-Struct Merge)結(jié)構(gòu),對于LSM不了解的可以參考這篇文章:從B+樹到LSM樹,及LSM樹在HBase中的應用,LSM相對于mysql里面的B+樹來說,是寫更有優(yōu)勢,而讀則比不過B+樹,但是因為flink采用的keygroup的概念Flink 源碼:從 KeyGroup 到 Rescale,flink保存的keyedstate分散到每個算子的key其實有序的,而rocksdb存儲的每個key也是有序排列的,通過blomfilter和二分查找法來查詢數(shù)據(jù)。
2.rocksdb本身也是一種嵌入式數(shù)據(jù)庫,相對于flink的每個算子來說,每個算子的rocksdb可以理解成一個單獨的數(shù)據(jù)庫,他們之間不會存在讀寫并發(fā)的問題(因為針對每個算子來說,存儲的keyedstate中的key是不會有重復的)
3.rocksdb中memtable是insert或者delete的數(shù)據(jù),每次備份的時候只需要備份memtable以及各個層級合并后新產(chǎn)生的文件,無需全部文件進行備份,flink的增量備份就是利用了rocksdb的這點特性就行增量備份的
flink選擇rocksdb存儲的原因
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關(guān)閱讀更多精彩內(nèi)容
- Intro Flink之所以能夠做到高效而準確的有狀態(tài)流式處理,核心是依賴于檢查點(checkpoint)機制。當...
- 本文僅為筆者平日學習記錄之用,侵刪原文:https://mp.weixin.qq.com/s/KNVRs4k8nH...
- State State簡述 State分類: Keyed state Operator state State兩種...
- 數(shù)據(jù)庫系統(tǒng)設計概述 世界上只有兩種開發(fā)人員,一種使用數(shù)據(jù)庫系統(tǒng)的,一種開發(fā)數(shù)據(jù)庫系統(tǒng)的。 數(shù)據(jù)是系統(tǒng)最重要的信息。...
- 前言 這篇從半個月前就開始寫,斷斷續(xù)續(xù)寫到現(xiàn)在,終于能發(fā)了(被簡書吞了好幾次),不容易。 最近筆者正在補習與Roc...