海量數(shù)據(jù)--在線大數(shù)據(jù)處理的理論與實(shí)踐--淘寶沈詢_WhisperXD

從需求出發(fā)來看關(guān)系模型與非關(guān)系模型--關(guān)系模型與非關(guān)系模型概述

1.層次模型
2.關(guān)系模型
3.ORMapping的作用:將對象模型轉(zhuǎn)換為關(guān)系模型

從需求出發(fā)來看關(guān)系模型與非關(guān)系模型--時代的變革

從需求出發(fā)來看關(guān)系模型與非關(guān)系模型--時代的變革1

互聯(lián)網(wǎng)在線處理的需求排序列表基本上可以認(rèn)為是: 數(shù)據(jù)的擴(kuò)展性>請求的響應(yīng)時間盡可能短>down機(jī)時間盡可能短>成本盡可能低>可自動快速恢復(fù)>數(shù)據(jù)的讀取一致性>程序開發(fā)者的方便與快速響應(yīng)需求敲霍。

一個小型數(shù)據(jù)庫的核心組件

數(shù)據(jù)庫核心組件
映射(map)
存儲數(shù)據(jù)并提供查詢的結(jié)構(gòu)
預(yù)寫式日志(write-ahead logging,WAL)
記錄每一次寫操作
觸發(fā)器(trigger)
鎖(lock)
保證一個邏輯原子操作的完整性
排它鎖(寫鎖)和共享鎖(讀鎖)
執(zhí)行優(yōu)化器
輸入 為 sql 的抽象語法樹(ast)域携,輸出為執(zhí)行計(jì)劃
sql 解析器
將 sql 轉(zhuǎn)化為抽象語法樹

存儲過程
核心目標(biāo): 讓數(shù)據(jù)庫端能夠運(yùn)行邏輯代碼
優(yōu)勢:性能好姨蝴,因?yàn)橹苯优c內(nèi)存交互部蛇,沒有網(wǎng)絡(luò)通信 延遲小 吞吐量大
可以用來封裝一些需要該性能的小的邏輯單元
劣勢:需要綁定到特定的數(shù)據(jù)庫剂陡,大部分存儲過程是面向過程的代碼,運(yùn)維難度比較大狐胎,不適合復(fù)雜業(yè)務(wù)邏輯
視圖
空間換時間鸭栖,利用不確定性變成確定性的方式,實(shí)現(xiàn) join 查詢速度的優(yōu)化和聚焦

從外部查詢看數(shù)據(jù)庫的內(nèi)部實(shí)現(xiàn)機(jī)制
李雷和韓梅梅的一次轉(zhuǎn)賬事務(wù)--事務(wù)系統(tǒng)概述

事務(wù)的 ACID
原子性 一致性 隔離性 持久性
隔離性的四個隔離級別 其實(shí)是對一致性和性能之間的一種取舍

數(shù)據(jù)的存儲介質(zhì)-磁盤的硬件特性
數(shù)據(jù)的存儲介質(zhì)-磁盤的RAID
數(shù)據(jù)的存儲介質(zhì)-固態(tài)存儲SSD

數(shù)據(jù)映射--映射概述
數(shù)據(jù)映射--有序數(shù)組
數(shù)據(jù)映射--平衡二叉有序樹

二叉樹特性:

  1. 有一個 ROOT(根)節(jié)點(diǎn) (數(shù)據(jù)訪問起點(diǎn))
  2. 一個節(jié)點(diǎn)有兩個子節(jié)點(diǎn)
  3. 父節(jié)點(diǎn)都有一個到子節(jié)點(diǎn)的引用(指針)
    二叉排序樹:
  4. 左子節(jié)點(diǎn)上的數(shù)據(jù)一定比父節(jié)點(diǎn)的數(shù)據(jù)小握巢,右子節(jié)點(diǎn)的數(shù)據(jù)一定比父節(jié)點(diǎn)的數(shù)據(jù)大
    平衡二叉樹:
    一個空樹或它的左右兩個子樹的高度差的絕對值不超過1晕鹊,并且左右兩個子樹都是一棵平衡二叉樹。
    平衡二叉排序樹:
    滿足以上條件
    中序遍歷平衡二叉樹其實(shí)就是對數(shù)據(jù)的有序遍歷
    左根右的順序

    讓樹能夠保持有序的前提下盡可能平衡的主要方式
    AVL,Tree Heap,紅黑樹

數(shù)據(jù)映射--跳表(skiplist)

跳表基本結(jié)構(gòu)

分層 高層數(shù)據(jù)少
最底層 level0 保存所有數(shù)據(jù)
寫入時從最底層寫入
讀取時從最高層開始讀
寫入時通過計(jì)算概率決定是否向上層推

數(shù)據(jù)映射--B樹

B樹
B+樹

問題:為什么 B 樹用數(shù)組結(jié)構(gòu)實(shí)現(xiàn)而不是鏈表
答:數(shù)組結(jié)構(gòu)(有序)能夠進(jìn)行二分查找

映射的存儲模型 – 面向列的存儲和行存儲
映射的存儲模型 – 列存儲
SQL解析與優(yōu)化器 – 概述

SQL 執(zhí)行大概流程

SQL解析與優(yōu)化器 - 基于行存儲的單表查詢
SQL解析與優(yōu)化器 - 基于列存儲的單表查詢
SQL解析與優(yōu)化器 - 倒排索引(上)

分詞 相關(guān)性

SQL解析與優(yōu)化器 - 倒排索引(下)

海量數(shù)據(jù) - join處理

inner join 镜粤,最強(qiáng)約束匹配捏题,只有全部符合的數(shù)據(jù)才會留下玻褪。
Left join ,保留左表內(nèi)所有數(shù)據(jù)肉渴,右表無對應(yīng)的用NULL代替。
right join 保留右表內(nèi)所有數(shù)據(jù)带射,左表無對應(yīng)的用NULL代替同规。
Full join 保留左右表內(nèi)所有數(shù)據(jù),對應(yīng)表內(nèi)無對應(yīng)的用NULL代替窟社。
Cross join 將左表內(nèi)的每一行數(shù)據(jù)與右表內(nèi)的每一行數(shù)據(jù)進(jìn)行關(guān)聯(lián)后輸出券勺。笛卡爾積
join 算法
Nested loop
hash join
sort merge join
Nested loop 和hash join ,都能夠比較輕松的處理小表和大表的取交集場景灿里,其中nested loop要求大表有索引关炼,如果小表可以完全的被放到內(nèi)存中,那么hash join是一個比較好的處理大小表join的方式匣吊。
Sort merge join 則要求兩張表都需要按照匹配條件排序儒拂,這個的構(gòu)建成本略高,但它的優(yōu)勢是色鸳,排序過程對內(nèi)存要求較低社痛,并且可以充分的并行執(zhí)行,因此可以發(fā)現(xiàn)命雀,它經(jīng)常出現(xiàn)在列存蒜哀,倒排索引等各類條件變化頻繁,數(shù)據(jù)量非常大的場景中吏砂。

海量數(shù)據(jù)-Group by Order by having

這類操作的核心就是幫助用戶進(jìn)行數(shù)據(jù)統(tǒng)計(jì)和分析撵儿。
對于group by ,一般的算法就是把數(shù)據(jù)按照by 后面的條件放到一個HashMap里,然后按照aggregation function(count,sum,max,min)進(jìn)行一下聚合統(tǒng)計(jì)狐血,然后走h(yuǎn)aving進(jìn)行結(jié)果集過濾就好
而對于order by 淀歇,如果order by的條件恰好在索引上,那么可以認(rèn)為數(shù)據(jù)本身就是有序的氛雪,因此不需要其他處理房匆,直接使用索引進(jìn)行處理即可。
當(dāng)然,如果沒有索引浴鸿,那么就需要創(chuàng)建一個臨時表井氢,然后在臨時表內(nèi)對數(shù)據(jù)進(jìn)行排序

海量數(shù)據(jù)-事務(wù)原子性
海量數(shù)據(jù)-事務(wù)一致性1
海量數(shù)據(jù)-事務(wù)一致性2
海量存儲之十六--一致性和高可用專題

2pc 腦裂

海量存儲之十七--一致性和高可用專題

3pc

海量存儲之十八--一致性和高可用專題

paxos zab

插一條
Paxos Made Simple【翻譯】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市岳链,隨后出現(xiàn)的幾起案子花竞,更是在濱河造成了極大的恐慌,老刑警劉巖掸哑,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件约急,死亡現(xiàn)場離奇詭異,居然都是意外死亡苗分,警方通過查閱死者的電腦和手機(jī)厌蔽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來摔癣,“玉大人奴饮,你說我怎么就攤上這事≡褡牵” “怎么了戴卜?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長琢岩。 經(jīng)常有香客問我投剥,道長,這世上最難降的妖魔是什么担孔? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任江锨,我火速辦了婚禮,結(jié)果婚禮上攒磨,老公的妹妹穿的比我還像新娘泳桦。我一直安慰自己,他們只是感情好娩缰,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布灸撰。 她就那樣靜靜地躺著,像睡著了一般拼坎。 火紅的嫁衣襯著肌膚如雪浮毯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天泰鸡,我揣著相機(jī)與錄音债蓝,去河邊找鬼。 笑死盛龄,一個胖子當(dāng)著我的面吹牛饰迹,可吹牛的內(nèi)容都是我干的芳誓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼啊鸭,長吁一口氣:“原來是場噩夢啊……” “哼锹淌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赠制,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤赂摆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后钟些,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烟号,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年政恍,在試婚紗的時候發(fā)現(xiàn)自己被綠了汪拥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡抚垃,死狀恐怖喷楣,靈堂內(nèi)的尸體忽然破棺而出趟大,到底是詐尸還是另有隱情鹤树,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布逊朽,位于F島的核電站罕伯,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叽讳。R本人自食惡果不足惜追他,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望岛蚤。 院中可真熱鬧邑狸,春花似錦、人聲如沸涤妒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽她紫。三九已至硅堆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贿讹,已是汗流浹背渐逃。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留民褂,地道東北人茄菊。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓疯潭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親面殖。 傳聞我的和親對象是個殘疾皇子袁勺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評論 2 349

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