發(fā)布時(shí)間:2024-11-18
一篇比較全面介紹數(shù)據(jù)倉(cāng)庫(kù)建模方法的普及文章,主要包括了四個(gè)方面的內(nèi)容:
1、什么是數(shù)據(jù)模型:簡(jiǎn)而言之就是對(duì)現(xiàn)實(shí)世界業(yè)務(wù)對(duì)象及關(guān)系的抽象。
2、為什么需要數(shù)據(jù)模型:數(shù)據(jù)模型不是必需的,建模的目的是為了改進(jìn)業(yè)務(wù)流程、消滅信息孤島和數(shù)據(jù)差異及提升業(yè)務(wù)支撐的靈活性。
3、如何建設(shè)數(shù)據(jù)模型:介紹了數(shù)據(jù)模型的架構(gòu)的五大部分、數(shù)據(jù)建模四個(gè)階段及三大建模方法。
4、數(shù)據(jù)倉(cāng)庫(kù)建模的樣例:舉了社保的案例。
正文開(kāi)始
這篇文章最早是2008年當(dāng)時(shí)的IBM 信息技術(shù)專家 周三保在IBM網(wǎng)站刊登的。所謂水無(wú)定勢(shì),兵無(wú)常法。不同的行業(yè),有不同行業(yè)的特點(diǎn),因此,從業(yè)務(wù)角度看,其相應(yīng)的數(shù)據(jù)模型是千差萬(wàn)別的。目前業(yè)界較為主流的是數(shù)據(jù)倉(cāng)庫(kù)廠商主要是 IBM 和 NCR,這兩家公司的除了能夠提供較為強(qiáng)大的數(shù)據(jù)倉(cāng)庫(kù)平臺(tái)之外,也有各自的針對(duì)某個(gè)行業(yè)的數(shù)據(jù)模型。
例如,在銀行業(yè),IBM 有自己的 BDWM(Banking data warehouse model),而 NCR 有自己的 FS-LDM 模型。在電信業(yè),IBM 有 TDWM(Telecom Data warehouse model),而 NCR 有自己的 TS-LDM 模型。因此,我們看到,不同的公司有自己針對(duì)某個(gè)行業(yè)的理解,因此會(huì)有不同的公司針對(duì)某個(gè)行業(yè)的模型。而對(duì)于不同的行業(yè),同一個(gè)公司也會(huì)有不同的模型,這主要取決于不同行業(yè)的不同業(yè)務(wù)特點(diǎn)。
雖然每個(gè)行業(yè)有自己的模型,但是,我們發(fā)現(xiàn),不同行業(yè)的數(shù)據(jù)模型,在數(shù)據(jù)建模的方法上,卻都有著共通的基本特點(diǎn)。
最后,我們?cè)诒疚牡慕Y(jié)尾給大家介紹了一個(gè)具體的數(shù)據(jù)倉(cāng)庫(kù)建模的樣例,幫助大家來(lái)了解整個(gè)數(shù)據(jù)建模的過(guò)程。
什么是數(shù)據(jù)模型
數(shù)據(jù)模型是抽象描述現(xiàn)實(shí)世界的一種工具和方法,是通過(guò)抽象的實(shí)體及實(shí)體之間聯(lián)系的形式,來(lái)表示現(xiàn)實(shí)世界中事務(wù)的相互關(guān)系的一種映射。在這里,數(shù)據(jù)模型表現(xiàn)的抽象的是實(shí)體和實(shí)體之間的關(guān)系,通過(guò)對(duì)實(shí)體和實(shí)體之間關(guān)系的定義和描述,來(lái)表達(dá)實(shí)際的業(yè)務(wù)中具體的業(yè)務(wù)關(guān)系。
因此,在整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的模型的設(shè)計(jì)和架構(gòu)中,既涉及到業(yè)務(wù)知識(shí),也涉及到了具體的技術(shù),我們既需要了解豐富的行業(yè)經(jīng)驗(yàn),同時(shí),也需要一定的信息技術(shù)來(lái)幫助我們實(shí)現(xiàn)我們的數(shù)據(jù)模型,最重要的是,我們還需要一個(gè)非常適用的方法論,來(lái)指導(dǎo)我們自己針對(duì)我們的業(yè)務(wù)進(jìn)行抽象,處理,生成各個(gè)階段的模型。
為什么需要數(shù)據(jù)模型
在數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)中,我們一再?gòu)?qiáng)調(diào)需要數(shù)據(jù)模型,那么數(shù)據(jù)模型究竟為什么這么重要呢?首先我們需要了解整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的建設(shè)的發(fā)展史。
如何建設(shè)數(shù)據(jù)模型
建設(shè)數(shù)據(jù)模型既然是整個(gè)數(shù)據(jù)倉(cāng)庫(kù)建設(shè)中一個(gè)非常重要的關(guān)鍵部分,那么,怎么建設(shè)我們的數(shù)據(jù)倉(cāng)庫(kù)模型就是我們需要解決的一個(gè)問(wèn)題。這里我們將要詳細(xì)介紹如何創(chuàng)建適合自己的數(shù)據(jù)模型。
數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)模型架構(gòu)
數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)模型的架構(gòu)和數(shù)據(jù)倉(cāng)庫(kù)的整體架構(gòu)是緊密關(guān)聯(lián)在一起的,我們首先來(lái)了解一下整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)模型應(yīng)該包含的幾個(gè)部分。從下圖我們可以很清楚地看到,整個(gè)數(shù)據(jù)模型的架構(gòu)分成 5 大部分,每個(gè)部分其實(shí)都有其獨(dú)特的功能。
通過(guò)對(duì)整個(gè)數(shù)據(jù)倉(cāng)庫(kù)模型的數(shù)據(jù)區(qū)域的劃分,我們可以了解到,一個(gè)好的數(shù)據(jù)模型,不僅僅是對(duì)業(yè)務(wù)進(jìn)行抽象劃分,而且對(duì)實(shí)現(xiàn)技術(shù)也進(jìn)行具體的指導(dǎo),它應(yīng)該涵蓋了從業(yè)務(wù)到實(shí)現(xiàn)技術(shù)的各個(gè)部分。
數(shù)據(jù)倉(cāng)庫(kù)建模階段劃分
我們前面介紹了數(shù)據(jù)倉(cāng)庫(kù)模型的幾個(gè)層次,下面我們講一下,針對(duì)這幾個(gè)層次的不同階段的數(shù)據(jù)建模的工作的主要內(nèi)容:
從我們上面對(duì)數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)建模階段的各個(gè)階段的劃分,我們能夠了解到整個(gè)數(shù)據(jù)倉(cāng)庫(kù)建模的主要工作和工作量,希望能夠?qū)ξ覀冊(cè)趯?shí)際的項(xiàng)目建設(shè)能夠有所幫助。
數(shù)據(jù)倉(cāng)庫(kù)建模方法
大千世界,表面看五彩繽紛,實(shí)質(zhì)上,萬(wàn)物都遵循其自有的法則。數(shù)據(jù)倉(cāng)庫(kù)得建模方法同樣也有很多種,每一種建模方法其實(shí)代表了哲學(xué)上的一個(gè)觀點(diǎn),代表了一種歸納,概括世界的一種方法。目前業(yè)界較為流行的數(shù)據(jù)倉(cāng)庫(kù)的建模方法非常多,這里主要介紹范式建模法,維度建模法,實(shí)體建模法等幾種方法,每種方法其實(shí)從本質(zhì)上講就是從不同的角度看我們業(yè)務(wù)中的問(wèn)題,不管從技術(shù)層面還是業(yè)務(wù)層面,其實(shí)代表的是哲學(xué)上的一種世界觀。我們下面給大家詳細(xì)介紹一下這些建模方法。
1. 范式建模法(Third Normal Form,3NF)
范式建模法其實(shí)是我們?cè)跇?gòu)建數(shù)據(jù)模型常用的一個(gè)方法,該方法的主要由 Inmon 所提倡,主要解決關(guān)系型數(shù)據(jù)庫(kù)得數(shù)據(jù)存儲(chǔ),利用的一種技術(shù)層面上的方法。目前,我們?cè)陉P(guān)系型數(shù)據(jù)庫(kù)中的建模方法,大部分采用的是三范式建模法。范式是數(shù)據(jù)庫(kù)邏輯模型設(shè)計(jì)的基本理論,一個(gè)關(guān)系模型可以從第一范式到第五范式進(jìn)行無(wú)損分解,這個(gè)過(guò)程也可稱為規(guī)范化。在數(shù)據(jù)倉(cāng)庫(kù)的模型設(shè)計(jì)中目前一般采用第三范式,它有著嚴(yán)格的數(shù)學(xué)定義。從其表達(dá)的含義來(lái)看,一個(gè)符合第三范式的關(guān)系必須具有以下三個(gè)條件 :
以筆者的觀點(diǎn)來(lái)看,Inmon 的范式建模法的最大優(yōu)點(diǎn)就是從關(guān)系型數(shù)據(jù)庫(kù)的角度出發(fā),結(jié)合了業(yè)務(wù)系統(tǒng)的數(shù)據(jù)模型,能夠比較方便的實(shí)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)的建模。但其缺點(diǎn)也是明顯的,由于建模方法限定在關(guān)系型數(shù)據(jù)庫(kù)之上,在某些時(shí)候反而限制了整個(gè)數(shù)據(jù)倉(cāng)庫(kù)模型的靈活性,性能等,特別是考慮到數(shù)據(jù)倉(cāng)庫(kù)的底層數(shù)據(jù)向數(shù)據(jù)集市的數(shù)據(jù)進(jìn)行匯總時(shí),需要進(jìn)行一定的變通才能滿足相應(yīng)的需求。因此,筆者建議讀者們?cè)趯?shí)際的使用中,參考使用這一建模方式。
2. 維度建模法
維度建模法,Kimball 最先提出這一概念。其最簡(jiǎn)單的描述就是,按照事實(shí)表,維表來(lái)構(gòu)建數(shù)據(jù)倉(cāng)庫(kù),數(shù)據(jù)集市。這種方法的最被人廣泛知曉的名字就是星型模式(Star-schema)。
上圖的這個(gè)架構(gòu)中是典型的星型架構(gòu)。星型模式之所以廣泛被使用,在于針對(duì)各個(gè)維作了大量的預(yù)處理,如按照維進(jìn)行預(yù)先的統(tǒng)計(jì)、分類、排序等。通過(guò)這些預(yù)處理,能夠極大的提升數(shù)據(jù)倉(cāng)庫(kù)的處理能力。特別是針對(duì) 3NF 的建模方法,星型模式在性能上占據(jù)明顯的優(yōu)勢(shì)。
同時(shí),維度建模法的另外一個(gè)優(yōu)點(diǎn)是,維度建模非常直觀,緊緊圍繞著業(yè)務(wù)模型,可以直觀的反映出業(yè)務(wù)模型中的業(yè)務(wù)問(wèn)題。不需要經(jīng)過(guò)特別的抽象處理,即可以完成維度建模。這一點(diǎn)也是維度建模的優(yōu)勢(shì)。
但是,維度建模法的缺點(diǎn)也是非常明顯的,由于在構(gòu)建星型模式之前需要進(jìn)行大量的數(shù)據(jù)預(yù)處理,因此會(huì)導(dǎo)致大量的數(shù)據(jù)處理工作。而且,當(dāng)業(yè)務(wù)發(fā)生變化,需要重新進(jìn)行維度的定義時(shí),往往需要重新進(jìn)行維度數(shù)據(jù)的預(yù)處理。而在這些與處理過(guò)程中,往往會(huì)導(dǎo)致大量的數(shù)據(jù)冗余。
另外一個(gè)維度建模法的缺點(diǎn)就是,如果只是依靠單純的維度建模,不能保證數(shù)據(jù)來(lái)源的一致性和準(zhǔn)確性,而且在數(shù)據(jù)倉(cāng)庫(kù)的底層,不是特別適用于維度建模的方法。因此以筆者的觀點(diǎn)看,維度建模的領(lǐng)域主要適用與數(shù)據(jù)集市層,它的最大的作用其實(shí)是為了解決數(shù)據(jù)倉(cāng)庫(kù)建模中的性能問(wèn)題。維度建模很難能夠提供一個(gè)完整地描述真實(shí)業(yè)務(wù)實(shí)體之間的復(fù)雜關(guān)系的抽象方法。
3. 實(shí)體建模法
實(shí)體建模法并不是數(shù)據(jù)倉(cāng)庫(kù)建模中常見(jiàn)的一個(gè)方法,它來(lái)源于哲學(xué)的一個(gè)流派。從哲學(xué)的意義上說(shuō),客觀世界應(yīng)該是可以細(xì)分的,客觀世界應(yīng)該可以分成由一個(gè)個(gè)實(shí)體,以及實(shí)體與實(shí)體之間的關(guān)系組成。那么我們?cè)跀?shù)據(jù)倉(cāng)庫(kù)的建模過(guò)程中完全可以引入這個(gè)抽象的方法,將整個(gè)業(yè)務(wù)也@可以劃分成一個(gè)個(gè)的實(shí)體,而每個(gè)實(shí)體之間的關(guān)系,以及針對(duì)這些關(guān)系的說(shuō)明就是我們數(shù)據(jù)建模需要做的工作。
上圖表述的是一個(gè)抽象的含義,如果我們描述一個(gè)簡(jiǎn)單的事實(shí):“小明開(kāi)車去學(xué)校上學(xué)”。以這個(gè)業(yè)務(wù)事實(shí)為例,我們可以把“小明”,“學(xué)!笨闯墒且粋(gè)實(shí)體,“上學(xué)”描述的是一個(gè)業(yè)務(wù)過(guò)程,我們?cè)谶@里可以抽象為一個(gè)具體“事件”,而“開(kāi)車去”則可以看成是事件“上學(xué)”的一個(gè)說(shuō)明。
由于實(shí)體建模法,能夠很輕松的實(shí)現(xiàn)業(yè)務(wù)模型的劃分,因此,在業(yè)務(wù)建模階段和領(lǐng)域概念建模階段,實(shí)體建模法有著廣泛的應(yīng)用。從筆者的經(jīng)驗(yàn)來(lái)看,再?zèng)]有現(xiàn)成的行業(yè)模型的情況下,我們可以采用實(shí)體建模的方法,和客戶一起理清整個(gè)業(yè)務(wù)的模型,進(jìn)行領(lǐng)域概念模型的劃分,抽象出具體的業(yè)務(wù)概念,結(jié)合客戶的使用特點(diǎn),完全可以創(chuàng)建出一個(gè)符合自己需要的數(shù)據(jù)倉(cāng)庫(kù)模型來(lái)。
但是,實(shí)體建模法也有著自己先天的缺陷,由于實(shí)體說(shuō)明法只是一種抽象客觀世界的方法,因此,注定了該建模方法只能局限在業(yè)務(wù)建模和領(lǐng)域概念建模階段。因此,到了邏輯建模階段和物理建模階段,則是范式建模和維度建模發(fā)揮長(zhǎng)處的階段。
因此,筆者建議讀者在創(chuàng)建自己的數(shù)據(jù)倉(cāng)庫(kù)模型的時(shí)候,可以參考使用上述的三種數(shù)據(jù)倉(cāng)庫(kù)得建模方法,在各個(gè)不同階段采用不同的方法,從而能夠保證整個(gè)數(shù)據(jù)倉(cāng)庫(kù)建模的質(zhì)量。
數(shù)據(jù)倉(cāng)庫(kù)建模樣例
上面介紹得是一些抽象得建模方法和理論,可能理解起來(lái)相對(duì)有些難度,因此,筆者在這里舉一個(gè)例子,讀者可以跟著我們的這個(gè)樣例,來(lái)初步了解整個(gè)數(shù)據(jù)倉(cāng)庫(kù)建模的大概過(guò)程。
背景介紹
熟悉社保行業(yè)的讀者可以知道,目前我們國(guó)家的社保主要分為養(yǎng)老,失業(yè),工傷,生育,醫(yī)療保險(xiǎn)和勞動(dòng)力市場(chǎng)這 6 大塊主要業(yè)務(wù)領(lǐng)域。在這 6 大業(yè)務(wù)領(lǐng)域中,目前的狀況養(yǎng)老和事業(yè)的系統(tǒng)已經(jīng)基本完善,已經(jīng)有一部分?jǐn)?shù)據(jù)開(kāi)始聯(lián)網(wǎng)檢測(cè)。而對(duì)于工傷,生育,醫(yī)療和勞動(dòng)力市場(chǎng)這一塊業(yè)務(wù),有些地方發(fā)展的比較成熟,而有些地方還不夠成熟。
1.業(yè)務(wù)建模階段
基于以上的背景介紹,我們?cè)跇I(yè)務(wù)建模階段,就很容易來(lái)劃分相應(yīng)的業(yè)務(wù)。因此,在業(yè)務(wù)建模階段,我們基本上確定我們本次數(shù)據(jù)倉(cāng)庫(kù)建設(shè)的目標(biāo),建設(shè)的方法,以及長(zhǎng)遠(yuǎn)規(guī)劃等。
在這里,我們將整個(gè)業(yè)務(wù)很清楚地劃分成了幾個(gè)大的業(yè)務(wù)主線,例如:養(yǎng)老,失業(yè),工傷,生育,醫(yī)療,勞動(dòng)力等著幾個(gè)大的部分,然后我們可以根據(jù)這些大的模塊,在每個(gè)業(yè)務(wù)主線內(nèi),考慮具體的業(yè)務(wù)主線內(nèi)需要分析的業(yè)務(wù)主題。
因此,業(yè)務(wù)建模階段其實(shí)是一次和業(yè)務(wù)人員梳理業(yè)務(wù)的過(guò)程,在這個(gè)過(guò)程中,不僅能幫助我們技術(shù)人員更好的理解業(yè)務(wù),另一方面,也能夠發(fā)現(xiàn)業(yè)務(wù)流程中的一些不合理的環(huán)節(jié),加以改善和改進(jìn)。
同時(shí),業(yè)務(wù)建模階段的另一個(gè)重要工作就是確定我們數(shù)據(jù)建模的范圍,例如:在某些數(shù)據(jù)準(zhǔn)備不夠充分的業(yè)務(wù)模塊內(nèi),我們可以考慮先不建設(shè)相應(yīng)的數(shù)據(jù)模型。等到條件充分成熟的情況下,我們可以再來(lái)考慮數(shù)據(jù)建模的問(wèn)題。
2.領(lǐng)域概念建模階段
領(lǐng)域概念建模階段是數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)建模的一個(gè)重要階段,由于我們?cè)跇I(yè)務(wù)建模階段已經(jīng)完全理清相應(yīng)的業(yè)務(wù)范圍和流程,因此,我們?cè)谶@個(gè)領(lǐng)域概念建模階段的最主要的工作就是進(jìn)行概念的抽象,整個(gè)領(lǐng)域概念建模的工作層次
通過(guò)領(lǐng)域概念建模,數(shù)據(jù)倉(cāng)庫(kù)的模型已經(jīng)被抽象成一個(gè)個(gè)的實(shí)體,模型的框架已經(jīng)搭建完畢,下面的工作就是給這些框架注入有效的肌體。
3.邏輯建模階段
通過(guò)領(lǐng)域概念建模之后,雖然模型的框架已經(jīng)完成,但是還有很多細(xì)致的工作需要完成。一般在這個(gè)階段,我們還需要做非常多的工作,主要包括:
總而言之,在邏輯建模階段,我們主要考慮得是抽象實(shí)體的一些細(xì)致的屬性。通過(guò)邏輯建模階段,我們才能夠?qū)⒄麄(gè)概念模型完整串聯(lián)成一個(gè)有機(jī)的實(shí)體,才能夠完整的表達(dá)出業(yè)務(wù)之間的關(guān)聯(lián)性。
在這個(gè)階段,筆者建議大家可以參考 3NF 的建模方法,表達(dá)出實(shí)體的屬性,以及實(shí)體與實(shí)體之間的聯(lián)系。例如:在這個(gè)階段,我們可以通過(guò)采用 ERWIN 等建模工具等作出符合 3NF 的關(guān)系型數(shù)據(jù)模型來(lái)。
4.物理建模階段
物理建模階段是整個(gè)數(shù)據(jù)建模的最后一個(gè)過(guò)程,這個(gè)過(guò)程其實(shí)是將前面的邏輯數(shù)據(jù)模型落地的一個(gè)過(guò)程?紤]到數(shù)據(jù)倉(cāng)庫(kù)平臺(tái)的不同,因此,數(shù)據(jù)模型得物理建模過(guò)程可能會(huì)稍微有一些不同,在這個(gè)階段我們主要的工作是:
經(jīng)過(guò)物理建模階段,整個(gè)數(shù)據(jù)倉(cāng)庫(kù)的模型已經(jīng)全部完成,我們可以按照自己的設(shè)計(jì)來(lái)針對(duì)當(dāng)前的行業(yè)創(chuàng)建滿足自己需要的數(shù)據(jù)模型來(lái)。
這里,筆者通過(guò)一個(gè)數(shù)據(jù)建模的樣例,希望能夠給讀者一個(gè)關(guān)于數(shù)據(jù)倉(cāng)庫(kù)建模的感性的認(rèn)識(shí)。希望讀者在利用這些數(shù)據(jù)倉(cāng)庫(kù)得建模方法創(chuàng)建自己的數(shù)據(jù)模型的時(shí)候,可以根據(jù)業(yè)務(wù)實(shí)際的需要和自己對(duì)抽象能力的把握來(lái)創(chuàng)建適合自己的數(shù)據(jù)模型。
客服電話:400-665-0028
關(guān)鍵字:用友財(cái)務(wù)軟件,暢捷通軟件,財(cái)務(wù)軟件,進(jìn)銷存軟件,U9官網(wǎng),用友U8,用友T1,用友T+,用友T3,用友T6,暢捷通好會(huì)計(jì),好生意,智+好業(yè)財(cái),用友培訓(xùn)服務(wù)售后公司,暢捷通運(yùn)營(yíng)培訓(xùn)服務(wù)公司
版權(quán)所有:用友暢捷通軟件 Copyright © 2024 All rights reserved.