LSM樹由來县耽、設(shè)計(jì)思想以及應(yīng)用到HBase的索引

講LSM樹之前,需要提下三種基本的存儲引擎镣典,這樣才能清楚LSM樹的由來

哈希存儲引擎 ?是哈希表的持久化實(shí)現(xiàn)兔毙,支持增、刪的猛、改以及隨機(jī)讀取操作艺智,但不支持順序掃描疤苹,對應(yīng)的存儲系統(tǒng)為key-value存儲系統(tǒng)。對于key-value的插入以及查詢哑姚,哈希表的復(fù)雜度都是O(1),明顯比樹的操作O(n)快,如果不需要有序的遍歷數(shù)據(jù)芜茵,哈希表就是your Mr.Right

B樹存儲引擎是B樹(關(guān)于B樹的由來叙量,數(shù)據(jù)結(jié)構(gòu)以及應(yīng)用場景可以看之前一篇博文)的持久化實(shí)現(xiàn),不僅支持單條記錄的增夕晓、刪宛乃、讀、改操作蒸辆,還支持順序掃描(B+樹的葉子節(jié)點(diǎn)之間的指針)征炼,對應(yīng)的存儲系統(tǒng)就是關(guān)系數(shù)據(jù)庫(Mysql等)。

LSM樹(Log-Structured Merge Tree)存儲引擎和B樹存儲引擎一樣躬贡,同樣支持增谆奥、刪、讀拂玻、改酸些、順序掃描操作宰译。而且通過批量存儲技術(shù)規(guī)避磁盤隨機(jī)寫入問題。當(dāng)然凡事有利有弊魄懂,LSM樹和B+樹相比沿侈,LSM樹犧牲了部分讀性能,用來大幅提高寫性能市栗。

通過以上的分析缀拭,應(yīng)該知道LSM樹的由來了,LSM樹的設(shè)計(jì)思想非常樸素:將對數(shù)據(jù)的修改增量保持在內(nèi)存中填帽,達(dá)到指定的大小限制后將這些修改操作批量寫入磁盤蛛淋,不過讀取的時(shí)候稍微麻煩,需要合并磁盤中歷史數(shù)據(jù)和內(nèi)存中最近修改操作篡腌,所以寫入性能大大提升褐荷,讀取時(shí)可能需要先看是否命中內(nèi)存,否則需要訪問較多的磁盤文件嘹悼。極端的說叛甫,基于LSM樹實(shí)現(xiàn)的HBase的寫性能比Mysql高了一個(gè)數(shù)量級,讀性能低了一個(gè)數(shù)量級绘迁。

LSM樹原理把一棵大樹拆分成N棵小樹合溺,它首先寫入內(nèi)存中,隨著小樹越來越大缀台,內(nèi)存中的小樹會flush到磁盤中棠赛,磁盤中的樹定期可以做merge操作,合并成一棵大樹膛腐,以優(yōu)化讀性能睛约。


以上這些大概就是HBase存儲的設(shè)計(jì)主要思想,這里分別對應(yīng)說明下:

因?yàn)樾湎葘懙絻?nèi)存中哲身,為了防止內(nèi)存數(shù)據(jù)丟失辩涝,寫內(nèi)存的同時(shí)需要暫時(shí)持久化到磁盤,對應(yīng)了HBase的MemStore和HLog

MemStore上的樹達(dá)到一定大小之后勘天,需要flush到HRegion磁盤中(一般是Hadoop DataNode)怔揩,這樣MemStore就變成了DataNode上的磁盤文件StoreFile,定期HRegionServer對DataNode的數(shù)據(jù)做merge操作脯丝,徹底刪除無效空間商膊,多棵小樹在這個(gè)時(shí)機(jī)合并成大樹,來增強(qiáng)讀性能宠进。


關(guān)于LSM Tree晕拆,對于最簡單的二層LSM Tree而言,內(nèi)存中的數(shù)據(jù)和磁盤你中的數(shù)據(jù)merge操作材蹬,如下圖

圖來自lsm論文

lsm tree实幕,理論上吝镣,可以是內(nèi)存中樹的一部分和磁盤中第一層樹做merge,對于磁盤中的樹直接做update操作有可能會破壞物理block的連續(xù)性昆庇,但是實(shí)際應(yīng)用中末贾,一般lsm有多層,當(dāng)磁盤中的小樹合并成一個(gè)大樹的時(shí)候凰锡,可以重新排好順序未舟,使得block連續(xù)圈暗,優(yōu)化讀性能掂为。

hbase在實(shí)現(xiàn)中,是把整個(gè)內(nèi)存在一定閾值后员串,flush到disk中勇哗,形成一個(gè)file,這個(gè)file的存儲也就是一個(gè)小的B+樹寸齐,因?yàn)閔base一般是部署在hdfs上欲诺,hdfs不支持對文件的update操作,所以hbase這么整體內(nèi)存flush渺鹦,而不是和磁盤中的小樹merge update扰法,這個(gè)設(shè)計(jì)也就能講通了。內(nèi)存flush到磁盤上的小樹毅厚,定期也會合并成一個(gè)大樹塞颁。整體上hbase就是用了lsm tree的思路。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吸耿,一起剝皮案震驚了整個(gè)濱河市祠锣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咽安,老刑警劉巖伴网,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妆棒,居然都是意外死亡澡腾,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門糕珊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來动分,“玉大人,你說我怎么就攤上這事放接〈汤玻” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵纠脾,是天一觀的道長玛瘸。 經(jīng)常有香客問我蜕青,道長,這世上最難降的妖魔是什么糊渊? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任右核,我火速辦了婚禮,結(jié)果婚禮上渺绒,老公的妹妹穿的比我還像新娘贺喝。我一直安慰自己,他們只是感情好宗兼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布躏鱼。 她就那樣靜靜地躺著,像睡著了一般殷绍。 火紅的嫁衣襯著肌膚如雪染苛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天主到,我揣著相機(jī)與錄音茶行,去河邊找鬼。 笑死登钥,一個(gè)胖子當(dāng)著我的面吹牛畔师,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牧牢,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼看锉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了结执?” 一聲冷哼從身側(cè)響起度陆,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎献幔,沒想到半個(gè)月后懂傀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜡感,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年蹬蚁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郑兴。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡犀斋,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出情连,到底是詐尸還是另有隱情叽粹,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站虫几,受9級特大地震影響锤灿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辆脸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一但校、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧啡氢,春花似錦状囱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辨绊,卻和暖如春奶栖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背门坷。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留袍镀,地道東北人默蚌。 一個(gè)月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像苇羡,于是被迫代替她去往敵國和親绸吸。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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