RocksDB系列二十一:持久化讀緩存

Introduction

??很長一段時(shí)間脑奠,持久化數(shù)據(jù)存儲(chǔ)都是使用磁盤权烧。隨著SSD的引入,我們現(xiàn)在有了新的持久化的存儲(chǔ)介質(zhì)肢扯,這種存儲(chǔ)介質(zhì)比傳統(tǒng)的磁盤更快,也給人們提供了探索分層存儲(chǔ)架構(gòu)的機(jī)會(huì)担锤。像flash cache一樣的開源實(shí)現(xiàn)都是使用SSD和disk作為分層的底層存儲(chǔ)蔚晨。RocksDB的持久化讀cache嘗試以一種對(duì)設(shè)備無感知且獨(dú)立于操作系統(tǒng)的方式來充分發(fā)揮分層存儲(chǔ)架構(gòu)的優(yōu)點(diǎn)。

Tiered Storage Vs Tiered Cache

??RocksDB可以通過兩種方式利用分層存儲(chǔ)架構(gòu):分層存儲(chǔ)部署和分層緩存部署肛循。當(dāng)使用前者時(shí)铭腕,可以將LSM的數(shù)據(jù)分布在多層持久化存儲(chǔ)中。使用后者時(shí)多糠,用戶可以使用快速的持久化媒介來提供高性能的讀cache服務(wù)累舷,避免頻繁讀取LSM的part數(shù)據(jù),提高RocksDB的整體性能熬丧。
??就數(shù)據(jù)的流動(dòng)性而言笋粟,分層cache有很多優(yōu)點(diǎn),因?yàn)閏ache是提升性能的一個(gè)加分項(xiàng)析蝴。數(shù)據(jù)庫在沒有cache時(shí)害捕,仍然可以提供服務(wù)。

Key Features

硬件無感知

??persistent read cache是一種通用的實(shí)現(xiàn)闷畸,并不是為任何特殊的設(shè)備設(shè)計(jì)的尝盼。RocksDB設(shè)計(jì)了這種cache來為用戶提供一種以最好的方式訪問設(shè)備的機(jī)制。
Write code path
{ Block Size, Queue depth, Access/Caching Technique }
Read code path
{ Access/Caching Technique }
block size描述了讀寫的塊大小佑菩。在SSD場景下盾沫,block size應(yīng)該是刪除塊(erase block)的大小裁赠。queue depth是設(shè)備發(fā)揮最優(yōu)性能的并行度。Access/Caching技術(shù)用來提供訪問設(shè)備的最優(yōu)方式赴精。在某種設(shè)備或者應(yīng)用下比較適合采用direct IO佩捞,其他場景下有可能使用buffered access。

操作系統(tǒng)無感知

持久化讀緩存適用于RocksDB支持的所有平臺(tái)

可插拔

持久化緩存是一種cache的實(shí)現(xiàn)蕾哟,該功能不能保證都支持一忱。

設(shè)計(jì)和實(shí)現(xiàn)細(xì)節(jié)

持久化緩存有三部分組成

Block Lookup Index

??Block Lookup Index是一種可伸縮的內(nèi)存hash索引,key為LSM block address谭确,value為cache record locator帘营。通過cache record locator可以locate到cache中的block數(shù)據(jù)。Cache record可以描述為:{ file-id, offset, size }

File Lookup Index / LRU

??這是一種基于LRU可實(shí)現(xiàn)淘汰機(jī)制的可伸縮的內(nèi)存hash索引逐哈,key為一個(gè)文件標(biāo)志芬迄,value為文件的 reference object abstraction。 reference object abstraction可以用來從cache中讀取數(shù)據(jù)昂秃。當(dāng)耗盡持久化緩存的空間時(shí)禀梳,就可以從index中根據(jù)LRU策略來淘汰一些file。

File Layout

??這種cache以有序文件的形式存儲(chǔ)在文件系統(tǒng)中械蹋。每個(gè)文件包含一個(gè)record序列出皇,每個(gè)record包含RocksDB LSM上某一個(gè)block的相應(yīng)數(shù)據(jù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末哗戈,一起剝皮案震驚了整個(gè)濱河市郊艘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌唯咬,老刑警劉巖纱注,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胆胰,居然都是意外死亡狞贱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門蜀涨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞎嬉,“玉大人,你說我怎么就攤上這事厚柳⊙踉妫” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵别垮,是天一觀的道長便监。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么烧董? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任毁靶,我火速辦了婚禮,結(jié)果婚禮上逊移,老公的妹妹穿的比我還像新娘预吆。我一直安慰自己,他們只是感情好胳泉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布啡浊。 她就那樣靜靜地躺著,像睡著了一般胶背。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喘先,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天钳吟,我揣著相機(jī)與錄音,去河邊找鬼窘拯。 笑死红且,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的涤姊。 我是一名探鬼主播暇番,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼思喊!你這毒婦竟也來了壁酬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤恨课,失蹤者是張志新(化名)和其女友劉穎舆乔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剂公,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡希俩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纲辽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜武。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拖吼,靈堂內(nèi)的尸體忽然破棺而出鳞上,到底是詐尸還是另有隱情,我是刑警寧澤绿贞,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布因块,位于F島的核電站,受9級(jí)特大地震影響籍铁,放射性物質(zhì)發(fā)生泄漏涡上。R本人自食惡果不足惜趾断,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吩愧。 院中可真熱鬧芋酌,春花似錦、人聲如沸雁佳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糖权。三九已至堵腹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間星澳,已是汗流浹背疚顷。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留禁偎,地道東北人腿堤。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像如暖,于是被迫代替她去往敵國和親笆檀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,906評(píng)論 2 89
  • 前端開發(fā)者丨h(huán)ttp請(qǐng)求 https:www.rokub.com 前言見解有限盒至, 如有描述不當(dāng)之處酗洒, 請(qǐng)幫忙指出扶关,...
    麋鹿_720a閱讀 10,896評(píng)論 11 31
  • 理論總結(jié) 它要解決什么樣的問題酿矢? 數(shù)據(jù)的訪問、存取侄非、計(jì)算太慢登淘、太不穩(wěn)定箫老、太消耗資源,同時(shí)黔州,這樣的操作存在重復(fù)性耍鬓。因...
    jiangmo閱讀 2,842評(píng)論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)流妻,斷路器牲蜀,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 前話 Sentry作為一款監(jiān)視軟件異常,并記錄異常行為的開源軟件绅这,對(duì)Web應(yīng)用的監(jiān)視有特別不錯(cuò)的效果涣达,以下將利用D...
    gogoforit閱讀 953評(píng)論 0 1