數(shù)倉界的大神之Inmon數(shù)據(jù)倉庫建設(shè)(3范式建模)
編輯導(dǎo)語:數(shù)據(jù)分層都包含什么,怎么理解?在上一篇已經(jīng)講清楚了,那么Inmon數(shù)據(jù)倉庫建設(shè)該如何搭建?作者從其定義、模型建設(shè)以及適用范圍進(jìn)行分析,提高企業(yè)管理和決策的效率,希望對(duì)你有幫助。
上一篇(最詳細(xì)!深入淺出理解「3層6類」數(shù)據(jù)分層)我們把數(shù)倉的分層情況講解清楚:數(shù)倉的背景、邏輯、應(yīng)用等等。
有心的同學(xué)一定會(huì)問了,這些分層是誰制定的呢?有相關(guān)的標(biāo)準(zhǔn)嗎?
想要了解這個(gè)問題,你要先了解兩個(gè)人,Inmon和Kimball,這兩位大師就像唐詩界的李白和杜甫,如果想要透徹了解清楚數(shù)倉,一定要了解下這兩位大師的對(duì)數(shù)倉的建設(shè)和推動(dòng)做了哪些事情。
了解大師最好的方式就是去閱讀原著,由于今天的主角是Inmon大師,所以我精讀他的著作《Building the data warehouse》。第一遍我看的是中文版本,但是很多精髓在翻譯過程中有缺失,所以又去看了兩遍原著。
一、Inmon對(duì)數(shù)倉的定義
數(shù)據(jù)倉庫是在企業(yè)管理和決策中面向主題的、集成的、與時(shí)間相關(guān)的、不可修改的數(shù)據(jù)集合。
- 面向主題:按照特定的業(yè)務(wù)特點(diǎn)來決定,例如:對(duì)一個(gè)保險(xiǎn)公司來說,問題是:汽車保險(xiǎn)、健康保險(xiǎn)等等;對(duì)公司來說,問題是:顧客、保險(xiǎn)單、保費(fèi)、索賠。不同類型的公司主題集合不同。
- 集成的(重點(diǎn)):最為重要,把各個(gè)操作系統(tǒng)匯集到數(shù)據(jù)倉庫,要進(jìn)行轉(zhuǎn)換、格式化、重新排列、匯總等。進(jìn)入數(shù)據(jù)倉庫之前,需要消除不一致性,例如:有的性別維值是“男女”,有的是“f/m”。命名習(xí)慣、關(guān)鍵字結(jié)構(gòu)、屬性度量單位以及數(shù)據(jù)物理特點(diǎn)。
- 不可修改:操作系統(tǒng)環(huán)境一般是定期更新,數(shù)倉通常是批量載入與訪問(一般不進(jìn)行傳統(tǒng)意義的更新)。數(shù)倉的載入是以靜態(tài)快照進(jìn)行。
- 隨時(shí)間變化
在他的原著《Building the data warehouse》中,以上這些特征都是和傳統(tǒng)的操作型環(huán)境對(duì)比而得出的特點(diǎn)。由于操作性環(huán)境不具備上述特征無法滿足需求,所以inmon的數(shù)據(jù)倉庫才得以應(yīng)運(yùn)而生。
二、Inmon模型實(shí)施步驟
整體過程抽象出來可以分為兩步,分別是抽出(從操作型環(huán)境到數(shù)據(jù)倉庫)和遷入(數(shù)據(jù)模型的建設(shè))。
第1步:抽出——從操作型環(huán)境到數(shù)據(jù)倉庫
這個(gè)過程簡單來理解就是有很多熊貓分布在北京、天津、河北等地方,但是由于熊貓不適合生存在這些地方,需要把他們整體遷移到四川。第一步需要把熊貓們從現(xiàn)有地方抽出來。但在這個(gè)過程中會(huì)有很多問題,例如:熊貓長得比較像無法區(qū)分、熊貓的身高體重需要統(tǒng)一標(biāo)準(zhǔn)去度量,以便我們更高的去搬運(yùn)。
回到我們真實(shí)的場(chǎng)景中,由于在抽出數(shù)據(jù)的過程中會(huì)遇到如下問題,需要重點(diǎn)去考慮:
- 命名規(guī)范:例如相同的數(shù)據(jù)以不同名字存在不同地方;相同數(shù)據(jù)在不同地方用相同方式標(biāo)注;相同數(shù)據(jù)相同名字用了不同度量
- 編碼規(guī)范:例如有的性別維值是“男女”,有的是“f/m;有的是cm,有的是英寸
- 存儲(chǔ)適配:不同的操作系統(tǒng)有不同的格式存儲(chǔ),有的在DB2中,有的在VSAM中
所以相應(yīng)的,我們需要去解決以下問題:
- 去除純粹用于操作系統(tǒng)型環(huán)境中的數(shù)據(jù)
- 企業(yè)模型的關(guān)鍵字結(jié)構(gòu)中增加時(shí)間元素
穩(wěn)定性分析:根據(jù)各個(gè)屬性是否經(jīng)常變化,而把屬性進(jìn)行拆分,很少變化、不時(shí)變化、經(jīng)常變化。
第2步:遷入——數(shù)據(jù)模型的建設(shè)
終于把熊貓們從各個(gè)地方抽離出來了,那么如何把他們遷入他們最需要去的四川呢?是囫圇吞棗把熊貓們?nèi)剿拇??還是要先對(duì)他們進(jìn)行分類(幼崽熊貓、青年熊貓、老年熊貓)分別進(jìn)行有針對(duì)性的管理呢?
數(shù)據(jù)建模分為三個(gè)層次:高層模型、中間層模型、底層模型。
(1)高層模型(實(shí)體關(guān)系)
最抽象原始的一層,整個(gè)業(yè)務(wù)環(huán)境中最顯著的關(guān)系。例如:我們現(xiàn)在要進(jìn)行電商業(yè)務(wù)的實(shí)體關(guān)系抽象(買家、賣家、訂單)。簡化一下這個(gè)模型,并且表明實(shí)體之間的關(guān)系是:一對(duì)一、一對(duì)多、多對(duì)多。
(2)中間層模型(數(shù)據(jù)項(xiàng)集或者DIS)
對(duì)高層模型中每個(gè)實(shí)體建一個(gè)中間層模型。即:上述模型中每一個(gè)實(shí)體(賣家、買家、訂單)都對(duì)應(yīng)一個(gè)DIS。中間層模型的4個(gè)基本構(gòu)造:
- 主要數(shù)據(jù)分組:每個(gè)主題域有且只有一個(gè)主要數(shù)據(jù)分組。例如:下圖中的買家信息
- 二級(jí)數(shù)據(jù)分組:每個(gè)主題域存在多次的屬性。例如:下圖中的收貨信息
- 連接器:表示各個(gè)主題域之間關(guān)聯(lián)的外鍵。
- 數(shù)據(jù)的類型:這里可以理解為某個(gè)分組中具體的分類。例如:買家信息可以拆分為他的瀏覽信息、收藏信息、購物車信息、下單信息。而下單信息又可以分為訂單信息和物流信息
(3)底層模型(物理模型)
從中間層模型細(xì)化而來,有時(shí)也稱物理模型為關(guān)系表。如果要搭建好這一層,你需要進(jìn)行如下兩步操作:
第一步:確定數(shù)據(jù)粒度。
啥是“數(shù)據(jù)的粒度”?數(shù)據(jù)粒度:數(shù)據(jù)最小的單元和數(shù)據(jù)匯總的單元,粒度越小表示越細(xì),粒度越大表示越粗。例如:分鐘級(jí)別的數(shù)據(jù)粒度一定比月級(jí)別的數(shù)據(jù)粒度小。
?為啥要預(yù)估數(shù)據(jù)的粒度?好處是啥?
要回答好這個(gè)問題,首先要回憶一下上篇文章講解的「3層6類」數(shù)據(jù)分層。數(shù)據(jù)分層的方式有很多,針對(duì)不同體量、不同業(yè)務(wù)需求的數(shù)據(jù)會(huì)有不同的設(shè)計(jì)架構(gòu)。并且數(shù)據(jù)粒度的預(yù)估同時(shí)可以帶來如下的好處:
- 多視角分析數(shù)據(jù):可以通過不同的粒度對(duì)數(shù)據(jù)進(jìn)行分析。
- 低粒度數(shù)據(jù)靈活:有了最小粒度的數(shù)據(jù),可以定位到根本的原因
- 高粒度數(shù)據(jù)概括:對(duì)于高度概括的數(shù)據(jù),可以對(duì)整體業(yè)務(wù)進(jìn)行把控
- 未知數(shù)據(jù)需求:對(duì)于未來的各種預(yù)測(cè)場(chǎng)景,可以通過所搭建的各類數(shù)據(jù)建設(shè)去進(jìn)行解決
數(shù)據(jù)粒度的分檔有哪些?
數(shù)據(jù)粒度的預(yù)估過程如下:對(duì)數(shù)倉中將來的數(shù)據(jù)行數(shù)和所需的DASD(直接存取存儲(chǔ)設(shè)備)數(shù)進(jìn)行粗略估算。分檔可以按照如下進(jìn)行分檔:
- 少量數(shù)據(jù):數(shù)據(jù)有10000行:啥粒度都可以,閉眼建粒度
- 中等數(shù)據(jù):數(shù)據(jù)有10000000行:需要一個(gè)低粒度級(jí)別,例如:天和周比起來就是低粒度,秒和分鐘比起來就是低粒度
- 大量數(shù)據(jù):數(shù)據(jù)有100億行:需要高粒度級(jí)+數(shù)據(jù)移到溢出存儲(chǔ)器。
如何預(yù)估數(shù)據(jù)粒度?
對(duì)一個(gè)已知的表,預(yù)估的方式如下:
一張表的總空間=每行空間的大小*行數(shù)*時(shí)間+索引數(shù)據(jù)的大小*時(shí)間
總空間=表1的空間+表2的空間+….+表N的空間
每行空間的大小要分別從最大和最小考慮:
每行空間的大小 = [每行的最小估計(jì)值(下限),每行的最大估計(jì)值(上限)]
行數(shù)的預(yù)估,同樣需要需要預(yù)估下時(shí)間范圍內(nèi)的最大和最小值:
行數(shù)=[最小行數(shù)(下限),最大行數(shù)(上限)]
時(shí)間范圍可以暫且按照一年和五年這兩個(gè)時(shí)間去預(yù)估考慮下。
注意:
溢出存儲(chǔ)器中的數(shù)據(jù)。一年內(nèi)總行數(shù)超過100000000,需小心設(shè)計(jì),可以把一部分?jǐn)?shù)據(jù)轉(zhuǎn)移到溢出存儲(chǔ)器中,從而應(yīng)對(duì)數(shù)據(jù)量過大對(duì)性能造成的影響
確定粒度級(jí)別。首先要靠常識(shí)和行業(yè)處理經(jīng)驗(yàn)進(jìn)行合理的推斷,接著要考慮對(duì)數(shù)據(jù)倉庫獲取數(shù)據(jù)的各個(gè)不同的體系結(jié)構(gòu)實(shí)體的需求進(jìn)行預(yù)測(cè)
第二步:考慮各種因素的核心物理I/O的使用情況。
物理IO就是將數(shù)據(jù)從外部存儲(chǔ)器調(diào)入計(jì)算器,或?qū)?shù)據(jù)從計(jì)算器送到外部存儲(chǔ)器。為啥要進(jìn)行物理IO的考慮?
為什么要考慮這一步?
首先數(shù)據(jù)模型輸出的都是表,每張表上承載的數(shù)據(jù)是有限的,所以需要通過表和表之間的關(guān)聯(lián)進(jìn)行關(guān)聯(lián)。關(guān)聯(lián)的方式就顯得異常重要,如何設(shè)計(jì)表和表之間的鏈接,顯得尤為重要。如果設(shè)計(jì)好了可以減少訪問次數(shù),降低IO;如果設(shè)計(jì)不好就會(huì)造成數(shù)據(jù)冗余,訪問困難,會(huì)提升IO。
如何進(jìn)行規(guī)范化從而降低物理IO?
數(shù)據(jù)在計(jì)算機(jī)和外部存儲(chǔ)之間的傳送以塊為單位。從性能來看,物理IO重要是因?yàn)椋捍鎯?chǔ)器和計(jì)算器間的數(shù)據(jù)傳輸速度比計(jì)算器運(yùn)算速度要慢2-3個(gè)數(shù)量級(jí)。物理IO是影響性能的主要因素。那么如何進(jìn)行規(guī)范化降低物理IO,可以根據(jù)情況使用如下方式:
- 數(shù)據(jù)數(shù)組:數(shù)據(jù)放在數(shù)組的一行中,這樣可以一次性去獲取所需數(shù)據(jù)。
- 合并表:常用數(shù)據(jù)合并為一張表
- 選擇冗余:特意引入冗余數(shù)據(jù)。常用信息散落各個(gè)表中,便于查看
- 分離數(shù)據(jù):從訪問次數(shù)這個(gè)角度把一張表中的數(shù)據(jù)分為高頻數(shù)據(jù)和低頻數(shù)據(jù)。分別建一張高頻表和一張低頻表
- 導(dǎo)出數(shù)據(jù):生成一個(gè)字段來存儲(chǔ)計(jì)算出的數(shù)據(jù)
- 預(yù)格式化
- 人工關(guān)系
- 預(yù)連接表
三、Inmon模型適用范圍
Inmon模型的特點(diǎn)是:開發(fā)進(jìn)度慢,實(shí)施成本高,建設(shè)周期很長。尤其是建設(shè)前期需要花費(fèi)大量時(shí)間,后期投入相對(duì)比較小,對(duì)開發(fā)人員的要求比較高,一般會(huì)選擇專家團(tuán)隊(duì)進(jìn)行開發(fā),維護(hù)起來相對(duì)而言比較容易。
適合對(duì)設(shè)計(jì)科學(xué)性和規(guī)范性較高的企業(yè),在業(yè)務(wù)模式較固定的行業(yè)應(yīng)用較好,比如金融、電信、石油等行業(yè)。
四、Inmon模型小結(jié)
優(yōu)點(diǎn):可以系統(tǒng)性的滿足企業(yè)需求。因?yàn)镮nmon采用的思路是自上而下的的建設(shè)方法,統(tǒng)一接入系統(tǒng)元數(shù)據(jù),統(tǒng)一根據(jù)業(yè)務(wù)部門需求建設(shè)數(shù)據(jù)集市。因?yàn)榻ㄔO(shè)較為規(guī)范,所以后期的維護(hù)成本非常小
缺點(diǎn):瀑布式建設(shè),前期建設(shè)人力(需要專家團(tuán)隊(duì)建設(shè))、資源等投入很大。由于它的思路是從數(shù)據(jù)源頭進(jìn)行系統(tǒng)性的全面建設(shè),一次性接入所有數(shù)據(jù),打通所有數(shù)據(jù),建好所有模型,所以建設(shè)的代價(jià)很大。
本文由 @數(shù)據(jù)產(chǎn)品高遠(yuǎn) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于CC0協(xié)議
點(diǎn)贊