天天看點

資料倉庫模組化方法初步

一、前言  

  資料倉庫得模組化方法同樣也有很多種,每一種模組化方法其實代表了哲學上的一個觀點,代表了一種歸 納,概括世界的一種方法。目前業界較為流行的資料倉庫的模組化方法非常多,這裡主要介紹範式模組化法,次元模組化法,實體模組化法等幾種方法,每種方法其實從本質 上講就是從不同的角度看我們業務中的問題,不管從技術層面還是業務層面,其實代表的是哲學上的一種世界觀。我們下面給大家詳細介紹一下這些模組化方法。

二、3nf範式模組化方法

  範式模組化法其實是我們在建構資料模型常用的一個方法,該方法的主要由 inmon 所提倡,主要解決關系型資料庫得資料存儲,利用的一種技術層面上的方法。目前,我們在關系型資料庫中的模組化方法,大部分采用的是三範式模組化法。

  範式是資料庫邏輯模型設計的基本理論,一個關系模型可以從第一範式到第五範式進行無損分解,這個過程也可稱為規範化。在資料倉庫的模型設計中目前一般采用第三範式,它有着嚴格的數學定義。從其表達的含義來看,一個符合第三範式的關系必須具有以下三個條件 :  

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

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

每個非主屬性不能依賴于其他關系中的屬性,因為這樣的話,這種屬性應該歸到其他關系中去。

  由于範式是基于整個關系型資料庫的理論基礎之上發展而來的,是以,本人在這裡不多做介紹,有興趣的讀者可以通過閱讀相應的材料來獲得這方面的知識。

根 據 inmon 的觀點,資料倉庫模型得建設方法和業務系統的企業資料模型類似。在業務系統中,企業資料模型決定了資料的來源,而企業資料模型也分為兩個層次,即主題域模 型和邏輯模型。同樣,主題域模型可以看成是業務模型的概念模型,而邏輯模型則是域模型在關系型資料庫上的執行個體話。

資料倉庫模組化方法初步

從業務資料模型轉向資料倉庫模型時,同樣也需要有資料倉庫的域模型,即概念模型,同時也存在域模型的邏輯模型。這裡,業務模型中的資料模型和資料倉庫的模型稍微有一些不同。主要差別在于:

資料倉庫的域模型應該包含企業資料模型得域模型之間的關系,以及各主題域定義。資料倉庫的域模型的概念應該比業務系統的主題域模型範圍更加廣。

在資料倉庫的邏輯模型需要從業務系統的資料模型中的邏輯模型中抽象實體,實體的屬性,實體的子類,以及實體的關系等。

三、次元模組化

  次元模組化法,kimball 最先提出這一概念。其最簡單的描述就是,按照事實表,維表來建構資料倉庫,資料集市。這種方法的最被人廣泛知曉的名字就是星型模式(star-schema)。

資料倉庫模組化方法初步

上圖的這個架構中是典型的星型架構。星型模式之是以廣泛被使用,在于針對各個維作了大量的預處理,如按照維進行預先的統計、分類、排序等。通過這些預處理,能夠極大的提升資料倉庫的處理能力。特别是針對 3nf 的模組化方法,星型模式在性能上占據明顯的優勢。

同時,次元模組化法的另外一個優點是,次元模組化非常直覺,緊緊圍繞着業務模型,可以直覺的反映出業務模型中的業務問題。不需要經過特别的抽象處理,即可以完成次元模組化。這一點也是次元模組化的優勢。

但是,次元模組化法的缺點也是非常明顯的,由于在建構星型模式之前需要進行大量的資料預處理,是以會導緻大量的資料處理工作。而且,當業務發生變化,需要重新進行次元的定義時,往往需要重新進行次元資料的預處理。而在這些與處理過程中,往往會導緻大量的資料備援。

另外一個次元模組化法的缺點就是,如果隻是依靠單純的次元模組化,不能保證資料來源的一緻性和準确性,而且在資料倉庫的底層,不是特别适用于次元模組化的方法。

是以以筆者的觀點看,次元模組化的領域主要适用與資料集市層,它的最大的作用其實是為了解決資料倉庫模組化中的性能問題。次元模組化很難能夠提供一個完整地描述真實業務實體之間的複雜關系的抽象方法。

四、實體模組化法

實 體模組化法并不是資料倉庫模組化中常見的一個方法,它來源于哲學的一個流派。從哲學的意義上說,客觀世界應該是可以細分的,客觀世界應該可以分成由一個個實 體,以及實體與實體之間的關系組成。那麼我們在資料倉庫的模組化過程中完全可以引入這個抽象的方法,将整個業務也可以劃分成一個個的實體,而每個實體之間的 關系,以及針對這些關系的說明就是我們資料模組化需要做的工作。

雖然實體法粗看起來好像有一些抽象,其實了解起來很容易。即我們可以将任何一個業務過程劃分成 3 個部分,實體,事件和說明,如下圖所示:

資料倉庫模組化方法初步

上 圖表述的是一個抽象的含義,如果我們描述一個簡單的事實:“小明開車去學校上學”。以這個業務事實為例,我們可以把“小明”,“學校”看成是一個實體, “上學”描述的是一個業務過程,我們在這裡可以抽象為一個具體“事件”,而“開車去”則可以看成是事件“上學”的一個說明。

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

實體,主要指領域模型中特定的概念主體,指發生業務關系的對象。

事件,主要指概念主體之間完成一次業務流程的過程,特指特定的業務過程。

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

由 于實體模組化法,能夠很輕松的實作業務模型的劃分,是以,在業務模組化階段和領域概念模組化階段,實體模組化法有着廣泛的應用。從筆者的經驗來看,再沒有現成的行 業模型的情況下,我們可以采用實體模組化的方法,和客戶一起理清整個業務的模型,進行領域概念模型的劃分,抽象出具體的業務概念,結合客戶的使用特點,完全 可以建立出一個符合自己需要的資料倉庫模型來。

但是,實體模組化法也有着自己先天的缺陷,由于實體說明法隻是一種抽象客觀世界的方法,是以,注定了該模組化方法隻能局限在業務模組化和領域概念模組化階段。是以,到了邏輯模組化階段和實體模組化階段,則是範式模組化和次元模組化發揮長處的階段。

五、總結

  以上資料來源于社群整理,算是資料倉庫模型的基礎理論介紹,其實幾十年的發展,資料倉庫模型已經有深厚的積累,尤其是一些大的資料倉庫供應商:

  銀行業:ibm有bdwm(banking data warehouse model);teradata有fs-ldm(financial services logical data model)。

  電信業:ibm有tdwm(telecom data warehouse model);teradata有ts-ldm(telecom services logical data model)。

  teradata fs-ldm7.0是一個成熟産品,在一個內建的模型内支援保險、銀行及證券,包含十大主題:當事人、産品、協定、事件、資産、财務、機構、地域、營銷、管道。

   不要重複造車輪子,建議采用或者直接參考以上成熟的資料倉庫模型,可以将項目實施的風險降到最低,當然是要花錢購買相關模型的。