DDIA-數(shù)據(jù)存儲(chǔ)與檢索

# 日志結(jié)構(gòu)存儲(chǔ)引擎

使用日志記錄數(shù)據(jù)捌浩,僅支持追加形式的記錄集合。

# 面向頁(yè)的存儲(chǔ)引擎

# 索引是基于原始數(shù)據(jù)派生而來(lái)的額外的數(shù)據(jù)結(jié)構(gòu)铝宵,是為了快速定位想要的數(shù)據(jù)翎冲,也就是提高查詢的性能。

# 在存儲(chǔ)系統(tǒng)中重要的權(quán)衡設(shè)計(jì):適當(dāng)?shù)乃饕梢约涌熳x取速度谨敛,但是每個(gè)索引會(huì)減慢寫的速度究履,兩者需要根據(jù)實(shí)際進(jìn)行權(quán)衡。

# 哈希索引:以鍵-值方式索引數(shù)據(jù)脸狸。

# 為什么日志采取追加方式最仑,而不進(jìn)行原地更新?

1. 追加和分段寫主要是順序?qū)懘都祝入S機(jī)寫速度更快泥彤。

2. 段文件是追加的,不可變的卿啡,故并發(fā)和崩潰恢復(fù)更為簡(jiǎn)單吟吝。

# 哈希(key-value)到SSTables(排序字符串表):改變段文件的格式,要求key-value按鍵排序颈娜。每個(gè)鍵在每個(gè)合并的段文件中只能出現(xiàn)一次剑逃,相比哈希日志段浙宜,有兩個(gè)優(yōu)點(diǎn):

1. 合并段更加簡(jiǎn)單高效,即使文件大于可用內(nèi)存炕贵。

2. 在文件查找特定的鍵時(shí)梆奈,不在需要在內(nèi)存中保存所有鍵的索引

問題來(lái)了?寫入是任意順序的称开,怎么讓數(shù)據(jù)按鍵排序?答:內(nèi)存排序的數(shù)據(jù)結(jié)構(gòu):紅黑樹或AVL樹

存儲(chǔ)引擎的基本工作流程:

1. 當(dāng)寫入時(shí)乓梨,將其添加到內(nèi)存中的平衡數(shù)數(shù)據(jù)結(jié)構(gòu)(內(nèi)存表)中鳖轰。

2. 當(dāng)內(nèi)存表大于某個(gè)閥值時(shí),將其作為SSTable文件寫入磁盤扶镀。

3. 為了處理請(qǐng)求蕴侣,首先在內(nèi)存表查找,然后從最新的依次查找段文件臭觉。

4. 后臺(tái)進(jìn)程周期性執(zhí)行段文件合并與壓縮昆雀,并丟棄已經(jīng)覆蓋或刪除的值。

從SSTablesdao LSM-Tree(日志結(jié)構(gòu)的合并樹)

LSM-Tree:基于合并與壓縮排序文件的原理的存儲(chǔ)引擎統(tǒng)稱蝠筑。

# 最廣泛使用的存儲(chǔ)引擎-B-tree

> 日志結(jié)構(gòu)索引將數(shù)據(jù)庫(kù)分解為可變大小的段狞膘,通常大小為幾兆或更大,并且要求順序?qū)懭攵耸惨摇6旆猓珺-tree將數(shù)據(jù)庫(kù)分解為固定大小的塊或頁(yè),每個(gè)也可以使用一個(gè)地址標(biāo)識(shí)臣镣,傳統(tǒng)大小為4K辅愿,頁(yè)是操作系統(tǒng)讀寫的最小單元,這種設(shè)計(jì)更接近底層忆某。

# 原理:某一頁(yè)被指定為B-tree的根点待;每當(dāng)查找索引的一個(gè)鍵時(shí),總是從這里開始弃舒;該頁(yè)面包含了若干個(gè)鍵和對(duì)子頁(yè)的引用癞埠;每個(gè)孩子都負(fù)責(zé)一個(gè)連續(xù)范圍內(nèi)的鍵,相鄰引用之間的鍵可以指示這些范圍之間的邊界棒坏。

為了保證數(shù)據(jù)庫(kù)能從崩潰中恢復(fù)燕差,B-tree增加了預(yù)寫日志(WAL:write-ahead log),這是一個(gè)僅支持追加修改的文件坝冕,每個(gè)B-tree的修改必須先更新WAL然后再修改樹本身的頁(yè)徒探。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市喂窟,隨后出現(xiàn)的幾起案子测暗,更是在濱河造成了極大的恐慌央串,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碗啄,死亡現(xiàn)場(chǎng)離奇詭異质和,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)稚字,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門饲宿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人胆描,你說我怎么就攤上這事瘫想。” “怎么了昌讲?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵国夜,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我短绸,道長(zhǎng)车吹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任醋闭,我火速辦了婚禮窄驹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘目尖。我一直安慰自己馒吴,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布瑟曲。 她就那樣靜靜地躺著饮戳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪洞拨。 梳的紋絲不亂的頭發(fā)上扯罐,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音烦衣,去河邊找鬼歹河。 笑死,一個(gè)胖子當(dāng)著我的面吹牛花吟,可吹牛的內(nèi)容都是我干的秸歧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼衅澈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼键菱!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起今布,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤经备,失蹤者是張志新(化名)和其女友劉穎拭抬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侵蒙,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡造虎,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纷闺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片算凿。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖急但,靈堂內(nèi)的尸體忽然破棺而出澎媒,到底是詐尸還是另有隱情,我是刑警寧澤波桩,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站请敦,受9級(jí)特大地震影響镐躲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜侍筛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一萤皂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匣椰,春花似錦裆熙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至佳镜,卻和暖如春僚稿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蟀伸。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工蚀同, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啊掏。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓蠢络,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親迟蜜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刹孔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355