一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

一口氣講完數(shù)據(jù)倉建模方法--數(shù)據(jù)倉庫架構師碎碎念

 新用戶16606013 2021-10-31

這是我的第28篇原創(chuàng)

如何搭建一個數(shù)據(jù)倉庫》這篇文章被幾個大號轉載了。有很多朋友留言,說能不能再細細的講講3NF、維度模型、寬表模型這幾種模型。

圖片

最近工作有些忙,今天終于抽出空來好好寫一下。

3NF模型

但凡是計算機科學、軟件工程、信息技術等專業(yè)畢業(yè)的同學,大學的時候肯定有一門必修課《數(shù)據(jù)庫原理》,在那本書里就非常詳細的剖析了3NF(三范式)。但是那個解釋非?;逎y懂,甚至還有數(shù)學論證圖片圖片圖片,擺明了就是不想讓人看懂。

其實3NF很容易理解,換一個說法你就明白了。

三范式是數(shù)據(jù)庫建表(類同于excel的sheet頁)設計原則,分為第一范式、第二范式、第三范式(這也太簡單了吧?圖片),其實還有第四范式、第五范式,不過那都沒人用。

  • 第一范式:保證列的原子性(每一列都是不重復的,不可再拆分的原子列);人話翻譯:每一列都只說一個事情。圖片圖片圖片

  • 第二范式:保證行的原子性(每一行都有唯一的主鍵,其他字段的值與主鍵一一對應);人話翻譯:每一行都只說一個事情。圖片圖片圖片

  • 第三范式:保證表的原子性(每張表中的數(shù)據(jù)不會冗余,一旦有冗余字段,就需要拆一張表出來,用外鍵與主表關聯(lián))人話翻譯:每張表都只說一個事情。是不是很簡單?圖片圖片圖片

詳細的解釋可以看我之前的文章《抽象真實世界的利器-三范式》,那篇文章講的透透的。

三范式主要應用在業(yè)務數(shù)據(jù)庫中,也就是傳說中的OLTP(聯(lián)機事務處理)。為啥叫聯(lián)機事務處理這么生澀的名字,我當初也是納悶了很久。后來我明白了,其實是相對于單機事務處理來的。

以前都是單機版程序,一臺電腦完成所有業(yè)務流程和數(shù)據(jù)讀寫。后來架構分離了,變成C/S、B/S架構,那就必須得好幾臺機器連在一起,所以叫聯(lián)機。事務處理好理解,就是業(yè)務流程(事務)處理的意思了。

維度模型

維度模型中,一般分為兩種:星型模型和雪花模型,再往上就是CUBE。

星型模型

看下圖你就知道為啥叫星型模型了,就是抽象出來的樣子像一顆星星。

圖片

如果你足夠仔細,其實就能發(fā)現(xiàn)星型模型,乃至于維度模型的秘密。

在維度模型的設計理念中,數(shù)據(jù)工程師把所有的業(yè)務操作抽象成兩類:

  • 一類是業(yè)務操作時,需要的一些基礎信息,也就是事實發(fā)生的前提。比如商品列表、商家信息等;

  • 一類是業(yè)務操作結果的記錄,也就是當時事實的記錄結果,所以叫事實,對應的表就叫事實表。比如上圖中的訂單事實表,就是記錄了當時這個訂單發(fā)生的所有事實,比如你買了幾個東西,多少錢等。

這兩類信息必須關聯(lián)起來,才能形成完整的交易鏈條。這兩類信息畫成圖,就是中間是事實表,四周是維表,中間用代碼連接。整個形狀像是一個星星一樣,所以叫星型模型。

雪花模型

我朋友圈里全是聰明人,所以不看圖你也應該能猜到,雪花模型為啥叫這個名字了。是的,沒錯!就是因為形狀像雪花。

圖片

邏輯跟星型模型是一樣的,事實表、維度表。

在關系型數(shù)據(jù)庫中,那時候存儲還比較貴,磁盤很小,所以每一份數(shù)據(jù)都要盡量少存一些,所以當時會嚴格按照三范式的要求,把每一個屬性都單獨抽成表。以全國的三級行政區(qū)劃表為例,如果是一張表,三個列,就是省代碼、省名稱、市代碼、市名稱、縣代碼、縣名稱,省代碼和省名稱會重復非常多次。拆成三張表,就是一張省表、一張市表、一張縣表,省表里有三十幾條數(shù)據(jù),市表里幾百條數(shù)據(jù);縣表里就幾千條數(shù)據(jù)。

另外一個好處就是表間關系就非常清晰,看到雪花模型圖,一眼就能看明白整個架構有哪些內容,各自的關系是怎樣的。

星系模型

雪花模型還有一個變種,叫做星系模型(星座模型),其實就是多個雪花模型連在一起。

圖片

如上表所示,上下是訂單和營銷兩個雪花模型,兩片雪花通過兩個事實表連接在一起,形成一個星系。另外,在星系中還會對每個雪花中相同的維度進行抽象,比如地區(qū)維度,這時候星系就會很復雜,上圖中為了保持簡潔,并沒有體現(xiàn)這種情況。

CUBE模型

之所以叫cube,就是因為抽象出來就像一個魔方-magic cube。

圖片

這個形象倒是很形象,但是很多人依然看不明白。你這個CUBE跟上面的維度模型貌似沒啥區(qū)別啊,就是把每個維度中的值給羅列出來了而已。這類圖最坑的地方就是只告訴你cube的維度了,沒告訴大家事實在哪里,所以大家都糊里糊涂的。

圖片

這么寫一下你就明白了。我們可以通過類目、訂單狀態(tài)和月份三個維度,去看訂單量、訂單金額的統(tǒng)計結果。減少一個維度,就是上卷,增加一個維度就是下鉆。就這么簡單。

所以理解cube,你可以取個巧:CUBE模型其實就是多維模型的存儲結構。在kylin這類預計算的MOLAP產品中,資料稍微詳細、易懂一些。kylin會把每個組合方式計算一遍,然后存儲下來。在查詢的時候,kylin直接讀取預計算的結果就好了,所以速度非??欤欠浅U即鎯?。為了減少存儲,kylin提供了剪枝的功能,就是把不常要的某個分支給刪掉。

圖片

以上圖為例,一個類目+訂單狀態(tài)+月份的cube,其實會生成0維1張表,1維3*1=3張表,2維C32=(3*2)/(2*1)=3張表(3張表,兩兩組合),3維1張表,總共8張表。這才3個維啊!我們現(xiàn)在動輒幾十個維度,這個存儲你可想而知了。

寬表模型

前面講過三范式。嚴格按照三范式的規(guī)則設計出來的表就是窄表,每張表只說一件事情,如果順帶說了其他事情,就要拆表。相對于窄表來說,一張表中說了好幾個事情,好幾個概念,就是寬表了。寬表其實就是三范式的退化。寬表在關系型數(shù)據(jù)庫中是異類,但是在NoSQL數(shù)據(jù)庫中大行其道。

圖片

上圖就是用三個窄表解決了訂單業(yè)務數(shù)據(jù)存儲。優(yōu)點是關系非常清晰,一眼能看明白實體以及之間的關系。

圖片

上表就是一張大寬表,冗余了賣家和買家的信息。對開發(fā)、數(shù)據(jù)分析師非常友好,不用join,直接拖數(shù)據(jù)就好了。

建模方法總結

從星型到雪花到星系到CUBE,最后到寬表,面對的業(yè)務越來越多,關系越來越復雜,數(shù)據(jù)量也越來越多。在關系型數(shù)據(jù)庫為數(shù)倉載體的時候,我們盡可能的保證實體與關系之間的清晰邏輯。

但是在NoSQL環(huán)境中,分布式數(shù)據(jù)庫JOIN的代價比較大,另外呢,現(xiàn)在的存儲也非常便宜。所以星系模型是廢了,雪花模型已經(jīng)基本不用了;星型模型和CUBE在一些情況還在用;加上現(xiàn)在對效率的要求越來越高,所以數(shù)據(jù)倉庫靠上的兩層,基本都是直接建大寬表,導致現(xiàn)在很多人就知道寬表,而不知道其他模型了。

但是,這個世界始終還是底層規(guī)則決定上層邏輯。對于底層規(guī)則吃的越透,上層邏輯就越容易理解。

以上,與諸位共勉!

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    国产精品欧美激情在线播放| 美国女大兵激情豪放视频播放| 国产真人无遮挡免费视频一区| 美国女大兵激情豪放视频播放 | 99福利一区二区视频| 亚洲精品中文字幕无限乱码| 国产一区二区三区免费福利| 国产精品成人一区二区在线| 精品少妇人妻一区二区三区| 久久91精品国产亚洲| 老熟妇2久久国内精品| 真实偷拍一区二区免费视频| 亚洲一区二区三在线播放| 欧美整片精品日韩综合| 精品日韩中文字幕视频在线| 亚洲最大福利在线观看| 国产午夜精品福利免费不| 91日韩欧美在线视频| 国产肥妇一区二区熟女精品| 色播五月激情五月婷婷| 亚洲欧洲精品一区二区三区| 国产成人午夜福利片片| 日韩性生活视频免费在线观看| 亚洲欧洲精品一区二区三区| 日韩不卡一区二区视频| 久久精品国产熟女精品| 欧美日韩三区在线观看| 国产精品国三级国产专不卡| 亚洲中文字幕有码在线观看| 神马午夜福利免费视频| 国产日产欧美精品视频| 亚洲国产欧美精品久久| 国产一区一一一区麻豆| 日韩精品视频免费观看| 欧美人妻少妇精品久久性色 | 特黄大片性高水多欧美一级| 国产一区一一一区麻豆| 色哟哟精品一区二区三区| 中文字幕久热精品视频在线| 精品少妇人妻一区二区三区| 欧美胖熟妇一区二区三区|