[CMU15445] 05 - Database Storage 3

[toc]

[CMU15445] 05 - Database Storage 3

Database Workloads

  • On-Line Transaction Processing(OLTP):每次只對(duì)整個(gè)數(shù)據(jù)庫(kù)的一小部分?jǐn)?shù)據(jù)進(jìn)行讀寫操作,通常寫操作多余讀操作,例如你在淘寶購(gòu)物車中添加商品捺萌,下訂單等
  • On-Line Analytical Processing(OLAP):每次會(huì)對(duì)大量的數(shù)據(jù)進(jìn)行操作,基本全部為讀操作惭适,很少有寫操作拍摇,并且每次通常只會(huì)對(duì)一條記錄的幾個(gè)屬性操作
  • Hybrid Transaction Analytical Processing(HTAP):同時(shí)兼顧了OLAP和OLTP的功能碗淌,屬于上述兩者的結(jié)合

Storage Models

存儲(chǔ)模型主要分為行存儲(chǔ)和列存儲(chǔ)

N-Ary Storage Model(NSM)

N-Ary將一條記錄的所有字段都連續(xù)的存儲(chǔ)在一起安拟,所以也叫行存儲(chǔ)蛤吓,適合用在OLTP的場(chǎng)景

image.png

優(yōu)點(diǎn):

  • 由于整個(gè)記錄是存在一起的,可以快速的對(duì)一條記錄進(jìn)行插入糠赦,修改和刪除
  • 對(duì)于需要用到整條記錄的查詢效率很高

缺點(diǎn):

  • 對(duì)于一個(gè)需要查詢大量的數(shù)據(jù)会傲,但是只需要用到里面幾個(gè)字段的查詢锅棕,行存儲(chǔ)的效率很低
image.png

Decomposition Storage Model(DSM)

在DSM中,將不同記錄的相同屬性連續(xù)的存儲(chǔ)淌山,所以也叫列存儲(chǔ)裸燎,非常適合OLAP的應(yīng)用場(chǎng)景

image.png

對(duì)于DSM,一個(gè)問(wèn)題就是當(dāng)我們需要一整個(gè)記錄的時(shí)候怎么辦泼疑,通常會(huì)有以下方法

  1. Fixed-length Offsets

對(duì)于每一列的存儲(chǔ)德绿,所有的字段都是定長(zhǎng)的,所以查詢特定的字段可以通過(guò)偏移量來(lái)實(shí)現(xiàn)

image.png
  1. Embedded Tuple Ids

在每一個(gè)記錄中的每一個(gè)屬性多存儲(chǔ)一個(gè)Id王浴,單獨(dú)維護(hù)一個(gè)map脆炎,可以通過(guò)id映射到各個(gè)字段的位置梅猿,這樣做需要大量額外的存儲(chǔ)空間氓辣,所以一般不用這種

image.png

總結(jié)一下DSM的優(yōu)點(diǎn):

  • 因?yàn)閿?shù)據(jù)是按列存儲(chǔ),對(duì)于特定查詢某列袱蚓,只需要讀入該部分的數(shù)據(jù)钞啸,減少了不必需要的I/O
  • 因?yàn)槭前戳写鎯?chǔ),通常一列的數(shù)據(jù)都來(lái)自同樣的域(domain)喇潘,所以可以更好的支持查詢處理和壓縮

缺點(diǎn):

  • 因?yàn)榱写鎯?chǔ)將一條記錄分開存儲(chǔ)体斩,所以對(duì)于整個(gè)記錄的查詢,插入颖低,更新絮吵,刪除等操作很慢

Database Compression

通常在一個(gè)數(shù)據(jù)庫(kù)中,性能的瓶頸總是卡在磁盤上忱屑,如果將數(shù)據(jù)壓縮蹬敲,這樣就可以一次從磁盤讀取更多的數(shù)據(jù),從而提高性能

數(shù)據(jù)庫(kù)的壓縮需要平衡壓縮率和速度莺戒,通常將數(shù)據(jù)壓縮的更小在處理時(shí)就需要花費(fèi)更多的時(shí)間伴嗡,所以大多數(shù)數(shù)據(jù)庫(kù)壓縮算法都會(huì)有一個(gè)較低的壓縮率來(lái)保證速度

數(shù)據(jù)庫(kù)壓縮算法有以下要求:

  • 數(shù)據(jù)在壓縮后也應(yīng)該是定長(zhǎng)的字段,以便通過(guò)offset來(lái)索引
  • 在需要對(duì)數(shù)據(jù)進(jìn)行操作時(shí)从铲,盡量延遲解壓縮的時(shí)間瘪校,也就是能不解壓縮就不解壓縮
  • 壓縮一定是無(wú)損的

壓縮通常有不同的粒度,可以將整塊的數(shù)據(jù)壓縮(block-level)名段,也可以將每一行(tuple-level)阱扬,每一列(column-level),或者一行中的某一個(gè)字段(attribute-level)

下面介紹一些常用的壓縮算法:

1.Run-length Encoding

將相同的記錄壓縮成一個(gè)三元組(value,start,length)

image.png

在一個(gè)已經(jīng)排序好的數(shù)據(jù)上壓縮效果會(huì)更好

image.png
  1. Bit-packing Encoding

如果所有要存儲(chǔ)的值可以使用一個(gè)更小的數(shù)據(jù)類型來(lái)存儲(chǔ)伸辟,就換成更小的類型麻惶,例如一個(gè)int64字段,但是最大的值只有45自娩,就可以壓縮成8bit的存儲(chǔ)

image.png
  1. Bit-map Encoding

使用一個(gè)bit array來(lái)存儲(chǔ)值用踩,map的每一位表示一種不同的值渠退,通常用于值的種類較少的情況,例如性別

image.png
  1. Delta Encoding

對(duì)于時(shí)間脐彩,溫度之類的存儲(chǔ)碎乃,存儲(chǔ)他和上一個(gè)數(shù)據(jù)的差值,可以在這個(gè)的基礎(chǔ)上對(duì)數(shù)據(jù)壓縮惠奸,得到更小的數(shù)據(jù)

image.png
  1. Dictionary Encoding

將一個(gè)記錄拆成許多word的組合梅誓,建立一個(gè)字典來(lái)記錄word,建立一個(gè)id到word的映射佛南,在查詢時(shí)可以將word轉(zhuǎn)換為id梗掰,這樣就可以直接在壓縮的數(shù)據(jù)上進(jìn)行查詢,對(duì)于范圍查詢嗅回,可以將整個(gè)字典進(jìn)行排序


image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末及穗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子绵载,更是在濱河造成了極大的恐慌埂陆,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃豹,死亡現(xiàn)場(chǎng)離奇詭異焚虱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)懂版,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門鹃栽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人躯畴,你說(shuō)我怎么就攤上這事民鼓。” “怎么了私股?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵摹察,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我倡鲸,道長(zhǎng)供嚎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任峭状,我火速辦了婚禮克滴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘优床。我一直安慰自己劝赔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布胆敞。 她就那樣靜靜地躺著着帽,像睡著了一般杂伟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仍翰,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天赫粥,我揣著相機(jī)與錄音,去河邊找鬼予借。 笑死越平,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的灵迫。 我是一名探鬼主播秦叛,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瀑粥!你這毒婦竟也來(lái)了挣跋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤利凑,失蹤者是張志新(化名)和其女友劉穎浆劲,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哀澈,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年度气,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了割按。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡磷籍,死狀恐怖适荣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情院领,我是刑警寧澤弛矛,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站比然,受9級(jí)特大地震影響丈氓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜强法,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一万俗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧饮怯,春花似錦闰歪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)临扮。三九已至,卻和暖如春教翩,著一層夾襖步出監(jiān)牢的瞬間公条,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工迂曲, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留靶橱,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓路捧,卻偏偏與公主長(zhǎng)得像关霸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子杰扫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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