行存儲(chǔ)镀脂、列存儲(chǔ)牺蹄、行列混存

行存儲(chǔ)

我們常用的關(guān)系型數(shù)據(jù)庫(kù)mysql,oracle等都是基于行存儲(chǔ)薄翅,以最常用的mysql數(shù)據(jù)庫(kù) innodb引擎為例,見(jiàn)下圖


行存儲(chǔ)

多個(gè)連續(xù)的行記錄沙兰,組成一個(gè)data page(大小16k)虑省,然后按照B+樹(shù)的結(jié)構(gòu)進(jìn)行組織存儲(chǔ)。


image.png

這種存儲(chǔ)模式適用于OLTP的業(yè)務(wù)場(chǎng)景
  1. 一行記錄的所有列連續(xù)存儲(chǔ)僧凰,一次IO可以實(shí)現(xiàn)整行讀取或者寫(xiě)入探颈,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的ACID特性就比較簡(jiǎn)單。
  2. OLTP常見(jiàn)的業(yè)務(wù)場(chǎng)景训措,點(diǎn)查詢伪节,點(diǎn)更新等
    select c1,c2,c3 from table where id =xxx;
    update table set c1=xxx,c2=xxx where id = xxx;
    由于B+樹(shù)的邏輯結(jié)構(gòu),千萬(wàn)級(jí)別數(shù)據(jù)量最少3次IO可返回結(jié)果绩鸣。

列存儲(chǔ)

隨著數(shù)據(jù)量的膨脹(億數(shù)量級(jí))以及在線分析業(yè)務(wù)OLAP的發(fā)展怀大,基于行存儲(chǔ)的mysql等關(guān)系型數(shù)據(jù)庫(kù)就開(kāi)始力不從心了,基于列存儲(chǔ)的數(shù)據(jù)庫(kù)產(chǎn)品就開(kāi)始登場(chǎng)呀闻。


列存

如圖化借,數(shù)據(jù)按列進(jìn)行存儲(chǔ)。
行存和列存在以下關(guān)鍵點(diǎn)上有極大差異

  1. IO放大問(wèn)題
    OLAP大多是對(duì)某一列或幾列數(shù)據(jù)的一個(gè)聚合分析捡多,比如找出年齡在18-30歲之間的人的userid 蓖康,如果是傳統(tǒng)的行存儲(chǔ)模式,即使在年齡上有索引垒手,那么在回表查詢的時(shí)候蒜焊,也會(huì)不得不將符合條件記錄的所有列(userid之外的姓名,性別...)都讀出來(lái)科贬。這就會(huì)造成IO放大泳梆,當(dāng)數(shù)據(jù)量在億級(jí)別的時(shí)候,這就很影響性能了榜掌,列存儲(chǔ)就規(guī)避了這一點(diǎn)优妙。
  2. 數(shù)據(jù)壓縮問(wèn)題
    同一列的數(shù)據(jù),數(shù)據(jù)類型一致憎账,列存的模式下就適合數(shù)據(jù)壓縮套硼,不同的列可以采用不同的壓縮算法,壓縮存儲(chǔ)就會(huì)帶來(lái)IO性能的提升鼠哥。
  3. 事務(wù)ACID問(wèn)題
    行存儲(chǔ)熟菲,一條記錄一次IO寫(xiě)入看政,那么保證事務(wù)特性就很簡(jiǎn)單朴恳。
    列存儲(chǔ),一條記錄拆分成多次IO進(jìn)行列寫(xiě)入允蚣,那么就比較難實(shí)驗(yàn)事務(wù)特性于颖。

這樣的差異造成,OLAP場(chǎng)景很適合采用列存儲(chǔ)嚷兔,但是反過(guò)來(lái)森渐,在OLTP場(chǎng)景做入,列存儲(chǔ)又無(wú)能為力了。比如對(duì)某一條記錄的寫(xiě)入或者修改同衣,行存儲(chǔ)一次IO搞定竟块,可以保證數(shù)據(jù)的完整性,但是列存儲(chǔ)就要將一條行記錄的寫(xiě)入拆成多次的列記錄寫(xiě)入耐齐,這就帶來(lái)了寫(xiě)入IO的性能問(wèn)題浪秘。

基于以上行存和列存的特性,在實(shí)際業(yè)務(wù)中,我們的OLTP系統(tǒng)一般是采用基于行存的數(shù)據(jù)庫(kù)產(chǎn)品,像mysql oracle等术浪,然后將業(yè)務(wù)數(shù)據(jù)離線導(dǎo)入到基于列存的產(chǎn)品办成,進(jìn)行后續(xù)的分析,這種模式的實(shí)時(shí)性是很差的戏仓,一般用于分析T-1的離線數(shù)據(jù),如果有需求要實(shí)時(shí)分析在業(yè)務(wù)系統(tǒng)中實(shí)時(shí)產(chǎn)生的數(shù)據(jù),這種模式就無(wú)法滿足了沟沙,那么有沒(méi)有既能滿足OLTP的寫(xiě)入性能要求,又能滿足OLAP的分析性能要求的存儲(chǔ)結(jié)構(gòu)呢?答案是肯定的壁榕。

行列混合存儲(chǔ)

阿里的AnalyticDB就是采用行列混合存儲(chǔ)的產(chǎn)品


image.png

如圖所示尝胆,AnalyticDB將30720條記錄定義為一個(gè)block,數(shù)據(jù)在block中的某一列护桦,是按列存儲(chǔ)的含衔。同一block的不同列,又是連續(xù)存儲(chǔ)的二庵。在行列混存的模式下

  1. 多列寫(xiě)入 贪染,列存模式的隨機(jī)寫(xiě)變成順序?qū)?/li>
  2. OLTP明細(xì)查詢,select 多列由列存的隨機(jī)讀催享,變成了block內(nèi)的順序讀
  3. OLAP多維分析杭隙,將隨機(jī)讀變成順序讀

基于行列混合存儲(chǔ)的特性,配合倒排索引因妙,bitmap索引痰憎,范圍索引,預(yù)排序攀涵、各種的Cache機(jī)制铣耘、讀寫(xiě)分離等。AnalyticDB做到了既滿足大批量高性能寫(xiě)入以故、又滿足千億量級(jí)數(shù)據(jù)實(shí)時(shí)分析毫秒級(jí)別響應(yīng)蜗细,很適合大數(shù)據(jù)量實(shí)時(shí)寫(xiě)入,實(shí)時(shí)分析的場(chǎng)景。

最后:阿里B2B廣告團(tuán)隊(duì)招人炉媒,java踪区,數(shù)據(jù)工程,數(shù)據(jù)挖掘吊骤,base可選北京杭州缎岗。有意者丟簡(jiǎn)歷過(guò)來(lái)
hengyi.wzw@alibaba-inc.com

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市白粉,隨后出現(xiàn)的幾起案子密强,更是在濱河造成了極大的恐慌,老刑警劉巖蜗元,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件或渤,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡奕扣,警方通過(guò)查閱死者的電腦和手機(jī)薪鹦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惯豆,“玉大人池磁,你說(shuō)我怎么就攤上這事】蓿” “怎么了地熄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)芯杀。 經(jīng)常有香客問(wèn)我端考,道長(zhǎng),這世上最難降的妖魔是什么揭厚? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任却特,我火速辦了婚禮,結(jié)果婚禮上筛圆,老公的妹妹穿的比我還像新娘裂明。我一直安慰自己,他們只是感情好太援,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布闽晦。 她就那樣靜靜地躺著,像睡著了一般提岔。 火紅的嫁衣襯著肌膚如雪仙蛉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天唧垦,我揣著相機(jī)與錄音捅儒,去河邊找鬼液样。 笑死振亮,一個(gè)胖子當(dāng)著我的面吹牛巧还,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坊秸,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼麸祷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了褒搔?” 一聲冷哼從身側(cè)響起阶牍,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎星瘾,沒(méi)想到半個(gè)月后走孽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡琳状,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年磕瓷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片念逞。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡困食,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翎承,到底是詐尸還是另有隱情硕盹,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布叨咖,位于F島的核電站瘩例,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏甸各。R本人自食惡果不足惜仰剿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痴晦。 院中可真熱鬧南吮,春花似錦、人聲如沸誊酌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)碧浊。三九已至涂邀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間箱锐,已是汗流浹背比勉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浩聋。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓观蜗,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衣洁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子墓捻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

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