1. 程式人生 > >維度模型資料倉庫(二) —— 維度模型基礎

維度模型資料倉庫(二) —— 維度模型基礎

        從圖中可以看出,每種架構中都有資料集市。資料集市就是面向終端使用者的資料庫。資料集市通常使用維度模型來建模,並根據報表和分析的需求而優化。Kimball和Inmon架構最大的區別就是是否需要一個企業級的資料倉庫(EDW)。Inmon架構中有EDW,Kimball架構中沒有。EDW本質上就是一個大的資料倉庫,包括了從企業各個資料來源整合過來的所有的歷史資料。EDW不能由終端使用者直接訪問,僅用來儲存和報表相關的,用於審計的各種歷史資料。Inmon認為EDW位於業務系統和資料集市之間,也是資料集市的唯一資料來源。至於混合型架構則是結合了Kimball與Inmon架構的產物。

        以上這些方法論的東西簡單描述了幾種資料倉庫總體架構的異同之處。除了架構層面,還有兩種主要的建模方法,即規範化模型和維度模型。規範化模型用於EDW建模,而維度模型用於資料集市建模。規範化模型對於資料庫設計者來說非常熟悉,通常業務資料庫、OLTP系統都採用規範化模型。簡單地說,1NF就是消除重複元組,並保持列的原子性,具體到資料庫設計上就是每個表都要有一個主鍵來唯一標識一行記錄。2NF就是在1NF的基礎上消除了部分依賴,即非鍵屬性必須完全依賴於主鍵。3NF在2NF基礎上消除了傳遞依賴,即非鍵屬性只能完全依賴於主鍵。一般資料庫設計需要滿足3NF。在《構建Oracle高可用環境》這本書裡有一個很好的例子講述資料庫正規化設計。而對於維度模型最簡單的描述就是,按照事實表、維度表來構建資料倉庫、資料集市。這種方法被人們熟知的有星型模式和雪花模式。

        星型模式是部署在關係資料庫管理系統之上的多維結構,主要包含事實表,以及通過主鍵/外來鍵關係與之關聯的維度表。在星型模式實施中,所有維度級別的維度資料儲存在單個表或檢視中。雪花模就是將維度層次進一步規範化為子維度。在雪花模式實施中,使用多個表或檢視來儲存維度資料。單獨的資料庫表或檢視儲存與維中每個級別相關的資料。

        看一下以上星型模式的定義,問題來了:既然事實表與維度表也是以主鍵/外來鍵的方式相互關聯,換句話說,3NF和維度模型都能用實體/關係圖(ERD)表示,那麼兩者的根本區別是什麼呢?答案就是:3NF的本質是消除資料冗餘,那麼維度模型與其根本區別就是資料冗餘程度不同。隨著規範化程度的提高,必然會使得表和表之間的關係越來越多。而維度模型雖然常應用在關係資料庫管理系統之上,但是並不要求必須滿足3NF,也就是說維度模型允許可控的資料冗餘。這樣做簡少了表和表間關係的數量,同時提高了查詢速度。下面引用《資料倉庫設計》書中的一個例子,進一步說明3NF與維度模型的差異。