數據倉庫模型設計

數據倉庫的設計是建立面向企業決策者的分析環境和系統。

數據倉庫設計 vs 數據庫設計

數據倉庫中的數據具有面向主題、數據集成、不易更新、隨時間變化的特點,這些特點是數據庫系統沒有的,因此數據倉庫的設計將有別於數據庫系統的設計,兩者的區別主要包括:面向的需求不同、系統目標不同、設計方法不同。

數據倉庫模型設計

1 ) 系統的設計目標不同。數據庫系統的設計是為了進行OLTP事務處理,因而進行事務處理的併發性、安全性是系統的主要目標。而數據倉庫的目標是為企業提供一個數據一致的分析型環境,進而在數據倉庫的基礎上建立決策支持系統。要到達這個目的,數據倉庫中的數據必須具備面向主題、數據集成、不易更新、隨時間變化的特點。

2)面向需求不同。操作型系統的數據來源主要是業務操作員的輸入,因此數據庫系統的設計就是要描述如何通過操作人員交互獲取數據、如何將獲取的數據按照OLTP的需求合理的存放、如何使得OLTP的性能能夠更加優化、如何保證事務處理的安全性等等。數據倉庫系統的數據來源於業務系統,主要解決如何對數據按照主題進行組織、如何保證進入數據倉庫系統的數據的一致性、如何對數據顆粒度進行合理劃分、如何優化存儲方式使得OLAP的性能得到優化等問題。

3)系統設計方法不同。由於系統的目標和麵向的問題不同,導致設計方法不同。傳統的系統開發生命週期,“需求驅動”,先收集需求、分析需求,再進行設計和開發;系統的需求在收集和分析需求階段之後就定下來了,一旦進入構建數據庫階段,系統的需求就基本不變了。所以系統設計一般採用系統生命週期法(Systems Development Life Cycle ,SDLC).數據倉庫運行於一個與之完全不同的生命週期下,有時稱為CLDS(與SDLC順序相反)。

數據倉庫模型設計

數據倉庫構建模式

數據倉庫模型設計

1)先整體後局部的模式,是由W.H.Inmon提出。先構建一個完整的數據倉庫,提供全局視圖,再從數據倉庫中分離業務部門業務集市,逐步建立各個主題的數據集市。優點:數據規範化高。

2)先局部後整體的模式,有Kimball提出。先建立數據集市,然後在此基礎上逐步形成數據倉庫。

數據倉庫模型設計

數據倉庫設計實施過程

業界常用的幾種數據倉庫設計實施過程:Kimball模型實施過程,Inmon模型實施過程,

數據倉庫模型設計

以及如下其他常用模型實踐實施過程。後面我們專門介紹下。

數據倉庫的設計步驟

一個數據倉庫系統的設計可以分成數據倉庫模型設計部分和數據裝載接口設計部分,其設計的基本過程如下圖所示。

數據倉庫模型設計

數據模型:什麼是模型?模型是對客觀現實的事物的某些特徵與內在聯繫,所作的一種模擬或抽象。

什麼是數據模型?數據模型是對現實世界數據的特徵抽象,用於描訴數據的定義概念,邏輯結構,物理組織存儲。

(1)分析建立企業模型(業務模型)

企業模型是從企業用戶的角度對企業所需數據的內容以及數據間的關係的抽象。在構建企業模型的時候,並不需要考慮操作型系統和數據倉庫之間的差異,它只反映企業各個階層人員對數據的需求情況。構建企業模型,需要進行各個部分之間業務工作的界定,理清各業務部門之間的關係,深入瞭解各個業務部門的內具體業務流程並將其程序化。

企業模型反映了各個部門的各個視角。

數據倉庫模型設計

通過面向對象分析法繪畫出超市的企業模型。

數據倉庫模型設計

在構建企業模型時,我們可以使用ER模型,或者面向對象分析方法。

備註:面向對象方法和ER模型關鍵的區別在於:

面向對象方法在描述類之間的關係上比ER模型複雜。在ER模型中,實體之間的關係只包括一對多和多對多,這在某些錯綜複雜的關係面前就顯得表達能力不足。而面向對象的方法定義了繼承、包容、關聯關係,這3種關係能夠將複雜的關係描述得更加清晰;面向對象理論還有動態模型分析方法,通過動態模型分析,使得設計者能夠利用動態模型來刻系統對數據的處理過程。ER模型只是對企業進行靜態的描述,對於企業動態運作處理的描述無能為力。

數據倉庫模型設計

通過將企業模型映射到(對應到)數據庫系統,可以很快地瞭解現有數據庫系統完成了企業模型中的哪些部分,還缺少哪些部分。我們可以將ER模型中的實體以及實體間的關係(類和類間關係)映射到數據庫系統中的一張關係表。

數據倉庫模型設計

(2)概念模型設計

雖然數據倉庫設計同數據庫設計有許多不同點,但是從理解問題和解決問題的方法上看,數據倉庫的設計也存在這3個層次。概念模型、邏輯模型和物理模型之間的關係如下圖所示。

數據倉庫模型設計

概念模型描述的是從客觀世界到主觀認識的映射,通過概念模型,我們用適合計算機世界的模型和語言對客觀世界中的具體問題進行了描述。數據倉庫是按照主題來組織數據的,將企業模型映射到概念模型上,首先要確定主題並根據主題確定邊界。在概念模型中,抽取關鍵業務概念,並將之抽象化。將業務概念分組,按照業務主線聚合類似的分組概念。細化分組概念,理清分組概念內的業務流程並抽象化。

數據倉庫模型設計

在概念模型中,常用的表示方法是ER圖,另一種很好的方法是面向對象的分析方法。ER模型形式簡單直觀易於理解,便於同客戶交流,同時可以對問題進行更為深入細緻的描述。

(3)邏輯模型設計

邏輯模型設計需要對概念模型中的每一個主題進行設計。

邏輯模型實際上就是關係模型,它具有嚴格的數學基礎—關係數據理論,概念簡單、清晰,需要完成的任務就是將概念模型映射到關係模型。在關係模型中,基本的概念包括關係表、元組(關係表的一行)、屬性(關係表的一列)、域(屬性的取值範圍)、主鍵(能夠惟一標識一個數據行的鍵或者鍵的組合)等。

數據倉庫的邏輯模型設計包括如下幾點,數據粒度選擇(在數據量較小的時候可以採取單一的數據粒度,即直接存儲。當數據量大時,對歷史數據進行彙總,保留近期明細數據)、表分割()、去除操作型數據、表劃分、增加計算字段(方便後續使用)。

數據倉庫模型設計

(4)物理模型設計

物理模型設計結局的是邏輯模型的實現細節,確定數據倉庫的存儲結構、數據的存儲位置和索引策略。例如合併涉及的表存儲時放到一起,可大大減少磁頭定位時間,提高I/O效率、按列存儲。

數據倉庫模型設計

確定數據的存儲結構。不同的存儲結構有不同的實現方式,應綜合考慮存取時間、存取空間利用率和維護代價等因素,根據各種存儲結構的優缺點和適用範圍選擇合適的存儲結構。

確定數據的存儲位置。對數據按照其重要程度、使用頻率和對響應時間的要求等進行分類,並將不同類別的數據存儲在不同的存儲設備中。設置存儲分配參數,對塊的大小、緩衝區的大小和個數等進行物理優化處理。

確定索引策略。通過對數據存取路徑的分析,為各個數據存儲建立專用的索引,以獲得存取的高效率。

數據倉庫建模方法

  1. 3NF範式建模方法
  2. 維度建模法
  3. 實體建模法
  4. Data vault 建模法
  5. Anchor 模型


分享到:


相關文章: