淺談數(shù)據(jù)倉庫建模方法

概述

數(shù)據(jù)倉庫這個概念是由 Bill Inmon 所提出的放仗,其功能是將組織通過聯(lián)機(jī)事務(wù)處理(OLTP)所積累的大量的資料和數(shù)據(jù)桐早,通過數(shù)據(jù)倉庫理論所特點有的信息存儲架構(gòu),進(jìn)行系統(tǒng)的分析整理,利用各種的分析方法艇肴,比如聯(lián)機(jī)分析處理(OLAP),數(shù)據(jù)挖掘(Data Mining)叁温,進(jìn)而支持如決策支持系統(tǒng)(DSS)再悼、主管資訊系統(tǒng)(EIS)的創(chuàng)建,幫助決策者能快速有效的自大量資料中券盅,分析出有價值的資訊帮哈,以利決策擬定及快速回應(yīng)外在環(huán)境變動浙于,幫助建構(gòu)商務(wù)智能(BI)嗅绰。

Bill Inmon 在 "Build the Data Warehouse" 一書中所提出了數(shù)據(jù)倉庫的定義—— 數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)差油、相對穩(wěn)定的(Non-Volatile)泳炉、反映歷史變化(Time Variant)的數(shù)據(jù)集合憾筏,用于支持管理決策(Decision Making Support)。

數(shù)據(jù)倉庫的建模方法有很多種花鹅,每一種建模方法代表了哲學(xué)上的一個觀點氧腰,代表了一種歸納、概括世界的一種方法刨肃。常見的有 范式建模法古拴、維度建模法、實體建模法等真友,每種方法從本質(zhì)上將是從不同的角度看待業(yè)務(wù)中的問題黄痪,不管是從技術(shù)層面還是從業(yè)務(wù)層面,都代表了哲學(xué)上的一種世界觀盔然。

范式建模法(Third Normal Form桅打,3NF)

范式建模法其實是我們在構(gòu)建數(shù)據(jù)模型常用的一個方法,該方法的主要由 Inmon 所提倡愈案,主要解決關(guān)系型數(shù)據(jù)庫得數(shù)據(jù)存儲挺尾,利用的一種技術(shù)層面上的方法。目前站绪,我們在關(guān)系型數(shù)據(jù)庫中的建模方法遭铺,大部分采用的是三范式建模法。

范式 是符合某一種級別的關(guān)系模式的集合。構(gòu)造數(shù)據(jù)庫必須遵循一定的規(guī)則掂僵,而在關(guān)系型數(shù)據(jù)庫中這種規(guī)則就是范式航厚,這一過程也被稱為規(guī)范化。目前關(guān)系數(shù)據(jù)庫有六種范式:第一范式(1NF)锰蓬、第二范式(2NF)幔睬、第三范式(3NF)、Boyce-Codd范式(BCNF)芹扭、第四范式(4NF)和第五范式(5NF)麻顶。

在數(shù)據(jù)倉庫的模型設(shè)計中,一般采用第三范式舱卡。一個符合第三范式的關(guān)系必須具有以下三個條件 :

? ? 每個屬性值唯一辅肾,不具有多義性 ;

? ? 每個非主屬性必須完全依賴于整個主鍵,而非主鍵的一部分 ;

? ? 每個非主屬性不能依賴于其他關(guān)系中的屬性轮锥,因為這樣的話矫钓,這種屬性應(yīng)該歸到其他關(guān)系中去。

根據(jù) Inmon 的觀點舍杜,數(shù)據(jù)倉庫模型得建設(shè)方法和業(yè)務(wù)系統(tǒng)的企業(yè)數(shù)據(jù)模型類似新娜。在業(yè)務(wù)系統(tǒng)中,企業(yè)數(shù)據(jù)模型決定了數(shù)據(jù)的來源既绩,而企業(yè)數(shù)據(jù)模型也分為兩個層次概龄,即主題域模型和邏輯模型。同樣饲握,主題域模型可以看成是業(yè)務(wù)模型的概念模型私杜,而邏輯模型則是域模型在關(guān)系型數(shù)據(jù)庫上的實例話。


范式建模法

從業(yè)務(wù)數(shù)據(jù)模型轉(zhuǎn)向數(shù)據(jù)倉庫模型時救欧,同樣也需要有數(shù)據(jù)倉庫的域模型衰粹,即概念模型,同時也存在域模型的邏輯模型笆怠。這里铝耻,業(yè)務(wù)模型中的數(shù)據(jù)模型和數(shù)據(jù)倉庫的模型稍微有一些不同。主要區(qū)別在于:

數(shù)據(jù)倉庫的域模型應(yīng)該包含企業(yè)數(shù)據(jù)模型得域模型之間的關(guān)系骑疆,以及各主題域定義田篇。數(shù)據(jù)倉庫的域模型的概念應(yīng)該比業(yè)務(wù)系統(tǒng)的主題域模型范圍更加廣替废。

在數(shù)據(jù)倉庫的邏輯模型需要從業(yè)務(wù)系統(tǒng)的數(shù)據(jù)模型中的邏輯模型中抽象實體箍铭,實體的屬性,實體的子類椎镣,以及實體的關(guān)系等诈火。

Inmon 的范式建模法的最大優(yōu)點就是從關(guān)系型數(shù)據(jù)庫的角度出發(fā),結(jié)合了業(yè)務(wù)系統(tǒng)的數(shù)據(jù)模型状答,能夠比較方便的實現(xiàn)數(shù)據(jù)倉庫的建模冷守。但其缺點也是明顯的刀崖,由于建模方法限定在關(guān)系型數(shù)據(jù)庫之上,在某些時候反而限制了整個數(shù)據(jù)倉庫模型的靈活性拍摇,性能等亮钦,特別是考慮到數(shù)據(jù)倉庫的底層數(shù)據(jù)向數(shù)據(jù)集市的數(shù)據(jù)進(jìn)行匯總時,需要進(jìn)行一定的變通才能滿足相應(yīng)的需求充活。

維度建模法(Dimensional Modeling)

維度模型是數(shù)據(jù)倉庫領(lǐng)域另一位大師Ralph Kimall所倡導(dǎo)蜂莉,他的《The Data Warehouse Toolkit-The Complete Guide to Dimensonal Modeling,中文名《數(shù)據(jù)倉庫工具箱》混卵,是數(shù)據(jù)倉庫工程領(lǐng)域最流行的數(shù)倉建模經(jīng)典映穗。維度建模以分析決策的需求出發(fā)構(gòu)建模型,構(gòu)建的數(shù)據(jù)模型為分析需求服務(wù)幕随,因此它重點解決用戶如何更快速完成分析需求蚁滋,同時還有較好的大規(guī)模復(fù)雜查詢的響應(yīng)性能。

典型的代表是我們比較熟知的星形模型(Star-schema)赘淮,以及在一些特殊場景下適用的雪花模型(Snow-schema)辕录。

維度建模中比較重要的概念就是 事實表(Fact table)和維度表(Dimension table)。其最簡單的描述就是拥知,按照事實表踏拜、維度表來構(gòu)建數(shù)據(jù)倉庫、數(shù)據(jù)集市低剔。

事實表:發(fā)生在現(xiàn)實世界中的操作型事件速梗,其所產(chǎn)生的可度量數(shù)值,存儲在事實表中襟齿。從最低的粒度級別來看姻锁,事實表行對應(yīng)一個度量事件。事實數(shù)據(jù)表的主要特點是包含數(shù)字?jǐn)?shù)據(jù)(事實)猜欺,并且這些數(shù)字信息可以匯總位隶,以提供有關(guān)單位作為歷史的數(shù)據(jù),每個事實數(shù)據(jù)表包含一個由多個部分組成的索引开皿,該索引包含作為外鍵的相關(guān)性維度表的主鍵涧黄,而維度表包含事實記錄的特性。事實數(shù)據(jù)表不應(yīng)該包含描述性的信息赋荆,也不應(yīng)該包含除數(shù)字度量字段及使事實與維度表中對應(yīng)項的相關(guān)索引字段之外的任何數(shù)據(jù)笋妥。 包含在事實數(shù)據(jù)表中的“度量值”有兩種:一種是可以累計的度量值,另一種是非累計的度量值窄潭。最有用的度量值是可累計的度量值春宣,其累計起來的數(shù)字是非常有意義的。用戶可以通過累計度量值獲得匯總信息,例如月帝□锿铮可以匯總具體時間段內(nèi)一組商店的特定商品的銷售情況。非累計的度量值也可以用于事實數(shù)據(jù)表嚷辅,但匯總結(jié)果一般是沒有意義的簿姨,例如,在一座大廈的不同位置測量溫度時簸搞,如果將大廈中所有不同位置的溫度累加是沒有意義的款熬,但是求平均值是有意義的。一般來說攘乒,一個事實數(shù)據(jù)表都要和一個或多個維度表相關(guān)聯(lián)贤牛,用戶在利用事實數(shù)據(jù)表創(chuàng)建多維數(shù)據(jù)集時,可以使用一個或多個維度表则酝。

維度表:維度表可以看作是用戶來分析數(shù)據(jù)的窗口殉簸,維度表中包含事實數(shù)據(jù)表中事實記錄的特性,有些特性提供描述性信息沽讹,有些特性指定如何匯總事實數(shù)據(jù)表數(shù)據(jù)般卑,以便為分析者提供有用的信息,維度表包含幫助匯總數(shù)據(jù)的特性的層次結(jié)構(gòu)爽雄。每個維度表都包含單一的主鍵列蝠检。維度表的主鍵可以作為與之關(guān)聯(lián)的任何事實表的外鍵,當(dāng)然挚瘟,維度表行的描述環(huán)境應(yīng)與事實表行完全對應(yīng)叹谁。 維度表通常比較寬,是扁平型非規(guī)范表乘盖,包含大量的低粒度的文本屬性焰檩。

維度建模法

上圖的這個架構(gòu)中是典型的星型架構(gòu)。星型模式之所以廣泛被使用订框,在于針對各個維作了大量的預(yù)處理析苫,如按照維進(jìn)行預(yù)先的統(tǒng)計、分類穿扳、排序等衩侥。通過這些預(yù)處理,能夠極大的提升數(shù)據(jù)倉庫的處理能力矛物。特別是針對 3NF 的建模方法茫死,星型模式在性能上占據(jù)明顯的優(yōu)勢。

同時泽谨,維度建模法的另外一個優(yōu)點是璧榄,維度建模非常直觀,緊緊圍繞著業(yè)務(wù)模型吧雹,可以直觀的反映出業(yè)務(wù)模型中的業(yè)務(wù)問題骨杂。不需要經(jīng)過特別的抽象處理,即可以完成維度建模雄卷。這一點也是維度建模的優(yōu)勢搓蚪。

但是,維度建模法的缺點也是非常明顯的丁鹉,由于在構(gòu)建星型模式之前需要進(jìn)行大量的數(shù)據(jù)預(yù)處理妒潭,因此會導(dǎo)致大量的數(shù)據(jù)處理工作。而且揣钦,當(dāng)業(yè)務(wù)發(fā)生變化雳灾,需要重新進(jìn)行維度的定義時,往往需要重新進(jìn)行維度數(shù)據(jù)的預(yù)處理冯凹。而在這些與處理過程中谎亩,往往會導(dǎo)致大量的數(shù)據(jù)冗余。

另外一個維度建模法的缺點就是宇姚,如果只是依靠單純的維度建模匈庭,不能保證數(shù)據(jù)來源的一致性和準(zhǔn)確性,而且在數(shù)據(jù)倉庫的底層浑劳,不是特別適用于維度建模的方法阱持。

維度建模的領(lǐng)域主要適用與數(shù)據(jù)集市層,它的最大的作用其實是為了解決數(shù)據(jù)倉庫建模中的性能問題魔熏。維度建模很難能夠提供一個完整地描述真實業(yè)務(wù)實體之間的復(fù)雜關(guān)系的抽象方法衷咽。

實體建模法(Entity Modeling)

實體建模法并不是數(shù)據(jù)倉庫建模中常見的一個方法,它來源于哲學(xué)的一個流派蒜绽。從哲學(xué)的意義上說兵罢,客觀世界應(yīng)該是可以細(xì)分的,客觀世界應(yīng)該可以分成由一個個實體滓窍,以及實體與實體之間的關(guān)系組成卖词。那么我們在數(shù)據(jù)倉庫的建模過程中完全可以引入這個抽象的方法,將整個業(yè)務(wù)也可以劃分成一個個的實體吏夯,而每個實體之間的關(guān)系此蜈,以及針對這些關(guān)系的說明就是我們數(shù)據(jù)建模需要做的工作。

雖然實體法粗看起來好像有一些抽象噪生,其實理解起來很容易裆赵。即我們可以將任何一個業(yè)務(wù)過程劃分成 3 個部分,實體跺嗽,事件和說明战授,如下圖所示:

實體建模法

上圖表述的是一個抽象的含義页藻,如果我們描述一個簡單的事實:“小明開車去學(xué)校上學(xué)”。以這個業(yè)務(wù)事實為例植兰,我們可以把“小明”份帐,“學(xué)校”看成是一個實體楣导,“上學(xué)”描述的是一個業(yè)務(wù)過程废境,我們在這里可以抽象為一個具體“事件”,而“開車去”則可以看成是事件“上學(xué)”的一個說明筒繁。

從上面的舉例我們可以了解噩凹,我們使用的抽象歸納方法其實很簡單,任何業(yè)務(wù)可以看成 3 個部分:

實體毡咏,主要指領(lǐng)域模型中特定的概念主體驮宴,指發(fā)生業(yè)務(wù)關(guān)系的對象。

事件呕缭,主要指概念主體之間完成一次業(yè)務(wù)流程的過程幻赚,特指特定的業(yè)務(wù)過程。

說明臊旭,主要是針對實體和事件的特殊說明落恼。

由于實體建模法,能夠很輕松的實現(xiàn)業(yè)務(wù)模型的劃分离熏,因此佳谦,在業(yè)務(wù)建模階段和領(lǐng)域概念建模階段,實體建模法有著廣泛的應(yīng)用滋戳。從筆者的經(jīng)驗來看钻蔑,再沒有現(xiàn)成的行業(yè)模型的情況下,我們可以采用實體建模的方法奸鸯,和客戶一起理清整個業(yè)務(wù)的模型咪笑,進(jìn)行領(lǐng)域概念模型的劃分,抽象出具體的業(yè)務(wù)概念娄涩,結(jié)合客戶的使用特點窗怒,完全可以創(chuàng)建出一個符合自己需要的數(shù)據(jù)倉庫模型來。

但是蓄拣,實體建模法也有著自己先天的缺陷扬虚,由于實體說明法只是一種抽象客觀世界的方法,因此球恤,注定了該建模方法只能局限在業(yè)務(wù)建模和領(lǐng)域概念建模階段辜昵。因此,到了邏輯建模階段和物理建模階段咽斧,則是范式建模和維度建模發(fā)揮長處的階段堪置。

總結(jié)

上述的這些方法都有自己的優(yōu)點和局限性躬存,在創(chuàng)建自己的數(shù)據(jù)倉庫模型的時候,可以參考使用上述的三種數(shù)據(jù)倉庫得建模方法舀锨,在各個不同階段采用不同的方法岭洲,從而能夠保證整個數(shù)據(jù)倉庫建模的質(zhì)量。

以上的資料都來自于一些百科和一些社區(qū)整理雁竞,算是數(shù)據(jù)倉庫模型的基礎(chǔ)理論介紹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拧额,一起剝皮案震驚了整個濱河市碑诉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌侥锦,老刑警劉巖进栽,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異恭垦,居然都是意外死亡快毛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門番挺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唠帝,“玉大人,你說我怎么就攤上這事玄柏〗笏ィ” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵粪摘,是天一觀的道長瀑晒。 經(jīng)常有香客問我,道長徘意,這世上最難降的妖魔是什么苔悦? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮椎咧,結(jié)果婚禮上玖详,老公的妹妹穿的比我還像新娘。我一直安慰自己勤讽,他們只是感情好竹宋,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著地技,像睡著了一般蜈七。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上莫矗,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天飒硅,我揣著相機(jī)與錄音砂缩,去河邊找鬼。 笑死三娩,一個胖子當(dāng)著我的面吹牛庵芭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播雀监,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼双吆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了会前?” 一聲冷哼從身側(cè)響起好乐,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓦宜,沒想到半個月后蔚万,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡临庇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年反璃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片假夺。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡淮蜈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出已卷,到底是詐尸還是另有隱情礁芦,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布悼尾,位于F島的核電站柿扣,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闺魏。R本人自食惡果不足惜未状,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望析桥。 院中可真熱鬧司草,春花似錦、人聲如沸泡仗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽娩怎。三九已至搔课,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間截亦,已是汗流浹背爬泥。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工柬讨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袍啡。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓踩官,卻偏偏與公主長得像,于是被迫代替她去往敵國和親境输。 傳聞我的和親對象是個殘疾皇子蔗牡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

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