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

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

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

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

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

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

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

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

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

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

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

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

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

二叉樹(shù)特性:

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

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

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

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

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

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

B樹(shù)
B+樹(shù)

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

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

SQL 執(zhí)行大概流程

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

分詞 相關(guān)性

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

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

inner join ,最強(qiáng)約束匹配,只有全部符合的數(shù)據(jù)才會(huì)留下。
Left join ,保留左表內(nèi)所有數(shù)據(jù),右表無(wú)對(duì)應(yīng)的用NULL代替。
right join 保留右表內(nèi)所有數(shù)據(jù),左表無(wú)對(duì)應(yīng)的用NULL代替。
Full join 保留左右表內(nèi)所有數(shù)據(jù),對(duì)應(yīng)表內(nèi)無(wú)對(duì)應(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 ,都能夠比較輕松的處理小表和大表的取交集場(chǎng)景,其中nested loop要求大表有索引,如果小表可以完全的被放到內(nèi)存中,那么hash join是一個(gè)比較好的處理大小表join的方式。
Sort merge join 則要求兩張表都需要按照匹配條件排序,這個(gè)的構(gòu)建成本略高,但它的優(yōu)勢(shì)是,排序過(guò)程對(duì)內(nèi)存要求較低,并且可以充分的并行執(zhí)行,因此可以發(fā)現(xiàn),它經(jīng)常出現(xiàn)在列存,倒排索引等各類條件變化頻繁,數(shù)據(jù)量非常大的場(chǎng)景中。

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

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

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

2pc 腦裂

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

3pc

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

paxos zab

插一條
Paxos Made Simple【翻譯】

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容