數(shù)據(jù)倉庫的設計是建立面向企業(yè)決策者的分析環(huán)境和系統(tǒng)。 數(shù)據(jù)倉庫設計 vs 數(shù)據(jù)庫設計數(shù)據(jù)倉庫中的數(shù)據(jù)具有面向主題、數(shù)據(jù)集成、不易更新、隨時間變化的特點,這些特點是數(shù)據(jù)庫系統(tǒng)沒有的,因此數(shù)據(jù)倉庫的設計將有別于數(shù)據(jù)庫系統(tǒng)的設計,兩者的區(qū)別主要包括:面向的需求不同、系統(tǒng)目標不同、設計方法不同。 1 ) 系統(tǒng)的設計目標不同。數(shù)據(jù)庫系統(tǒng)的設計是為了進行OLTP事務處理,因而進行事務處理的并發(fā)性、安全性是系統(tǒng)的主要目標。而數(shù)據(jù)倉庫的目標是為企業(yè)提供一個數(shù)據(jù)一致的分析型環(huán)境,進而在數(shù)據(jù)倉庫的基礎上建立決策支持系統(tǒng)。要到達這個目的,數(shù)據(jù)倉庫中的數(shù)據(jù)必須具備面向主題、數(shù)據(jù)集成、不易更新、隨時間變化的特點。 2)面向需求不同。操作型系統(tǒng)的數(shù)據(jù)來源主要是業(yè)務操作員的輸入,因此數(shù)據(jù)庫系統(tǒng)的設計就是要描述如何通過操作人員交互獲取數(shù)據(jù)、如何將獲取的數(shù)據(jù)按照OLTP的需求合理的存放、如何使得OLTP的性能能夠更加優(yōu)化、如何保證事務處理的安全性等等。數(shù)據(jù)倉庫系統(tǒng)的數(shù)據(jù)來源于業(yè)務系統(tǒng),主要解決如何對數(shù)據(jù)按照主題進行組織、如何保證進入數(shù)據(jù)倉庫系統(tǒng)的數(shù)據(jù)的一致性、如何對數(shù)據(jù)顆粒度進行合理劃分、如何優(yōu)化存儲方式使得OLAP的性能得到優(yōu)化等問題。 3)系統(tǒng)設計方法不同。由于系統(tǒng)的目標和面向的問題不同,導致設計方法不同。傳統(tǒng)的系統(tǒng)開發(fā)生命周期,“需求驅(qū)動”,先收集需求、分析需求,再進行設計和開發(fā);系統(tǒng)的需求在收集和分析需求階段之后就定下來了,一旦進入構(gòu)建數(shù)據(jù)庫階段,系統(tǒng)的需求就基本不變了。所以系統(tǒng)設計一般采用系統(tǒng)生命周期法(Systems Development Life Cycle ,SDLC).數(shù)據(jù)倉庫運行于一個與之完全不同的生命周期下,有時稱為CLDS(與SDLC順序相反)。 數(shù)據(jù)倉庫構(gòu)建模式1)先整體后局部的模式,是由W.H.Inmon提出。先構(gòu)建一個完整的數(shù)據(jù)倉庫,提供全局視圖,再從數(shù)據(jù)倉庫中分離業(yè)務部門業(yè)務集市,逐步建立各個主題的數(shù)據(jù)集市。優(yōu)點:數(shù)據(jù)規(guī)范化高。 2)先局部后整體的模式,有Kimball提出。先建立數(shù)據(jù)集市,然后在此基礎上逐步形成數(shù)據(jù)倉庫。 數(shù)據(jù)倉庫設計實施過程業(yè)界常用的幾種數(shù)據(jù)倉庫設計實施過程:Kimball模型實施過程,Inmon模型實施過程, 以及如下其他常用模型實踐實施過程。后面我們專門介紹下。 數(shù)據(jù)倉庫的設計步驟一個數(shù)據(jù)倉庫系統(tǒng)的設計可以分成數(shù)據(jù)倉庫模型設計部分和數(shù)據(jù)裝載接口設計部分,其設計的基本過程如下圖所示。 數(shù)據(jù)模型:什么是模型?模型是對客觀現(xiàn)實的事物的某些特征與內(nèi)在聯(lián)系,所作的一種模擬或抽象。 什么是數(shù)據(jù)模型?數(shù)據(jù)模型是對現(xiàn)實世界數(shù)據(jù)的特征抽象,用于描訴數(shù)據(jù)的定義概念,邏輯結(jié)構(gòu),物理組織存儲。 (1)分析建立企業(yè)模型(業(yè)務模型) 企業(yè)模型是從企業(yè)用戶的角度對企業(yè)所需數(shù)據(jù)的內(nèi)容以及數(shù)據(jù)間的關系的抽象。在構(gòu)建企業(yè)模型的時候,并不需要考慮操作型系統(tǒng)和數(shù)據(jù)倉庫之間的差異,它只反映企業(yè)各個階層人員對數(shù)據(jù)的需求情況。構(gòu)建企業(yè)模型,需要進行各個部分之間業(yè)務工作的界定,理清各業(yè)務部門之間的關系,深入了解各個業(yè)務部門的內(nèi)具體業(yè)務流程并將其程序化。 企業(yè)模型反映了各個部門的各個視角。 通過面向?qū)ο蠓治龇ɡL畫出超市的企業(yè)模型。 在構(gòu)建企業(yè)模型時,我們可以使用ER模型,或者面向?qū)ο蠓治龇椒ā?/p> 備注:面向?qū)ο蠓椒ê虴R模型關鍵的區(qū)別在于: 面向?qū)ο蠓椒ㄔ诿枋鲱愔g的關系上比ER模型復雜。在ER模型中,實體之間的關系只包括一對多和多對多,這在某些錯綜復雜的關系面前就顯得表達能力不足。而面向?qū)ο蟮姆椒ǘx了繼承、包容、關聯(lián)關系,這3種關系能夠?qū)碗s的關系描述得更加清晰;面向?qū)ο罄碚撨€有動態(tài)模型分析方法,通過動態(tài)模型分析,使得設計者能夠利用動態(tài)模型來刻系統(tǒng)對數(shù)據(jù)的處理過程。ER模型只是對企業(yè)進行靜態(tài)的描述,對于企業(yè)動態(tài)運作處理的描述無能為力。 通過將企業(yè)模型映射到(對應到)數(shù)據(jù)庫系統(tǒng),可以很快地了解現(xiàn)有數(shù)據(jù)庫系統(tǒng)完成了企業(yè)模型中的哪些部分,還缺少哪些部分。我們可以將ER模型中的實體以及實體間的關系(類和類間關系)映射到數(shù)據(jù)庫系統(tǒng)中的一張關系表。 (2)概念模型設計 雖然數(shù)據(jù)倉庫設計同數(shù)據(jù)庫設計有許多不同點,但是從理解問題和解決問題的方法上看,數(shù)據(jù)倉庫的設計也存在這3個層次。概念模型、邏輯模型和物理模型之間的關系如下圖所示。 ![]() 概念模型描述的是從客觀世界到主觀認識的映射,通過概念模型,我們用適合計算機世界的模型和語言對客觀世界中的具體問題進行了描述。數(shù)據(jù)倉庫是按照主題來組織數(shù)據(jù)的,將企業(yè)模型映射到概念模型上,首先要確定主題并根據(jù)主題確定邊界。在概念模型中,抽取關鍵業(yè)務概念,并將之抽象化。將業(yè)務概念分組,按照業(yè)務主線聚合類似的分組概念。細化分組概念,理清分組概念內(nèi)的業(yè)務流程并抽象化。 ![]() 在概念模型中,常用的表示方法是ER圖,另一種很好的方法是面向?qū)ο蟮姆治龇椒?。ER模型形式簡單直觀易于理解,便于同客戶交流,同時可以對問題進行更為深入細致的描述。 (3)邏輯模型設計 邏輯模型設計需要對概念模型中的每一個主題進行設計。 邏輯模型實際上就是關系模型,它具有嚴格的數(shù)學基礎—關系數(shù)據(jù)理論,概念簡單、清晰,需要完成的任務就是將概念模型映射到關系模型。在關系模型中,基本的概念包括關系表、元組(關系表的一行)、屬性(關系表的一列)、域(屬性的取值范圍)、主鍵(能夠惟一標識一個數(shù)據(jù)行的鍵或者鍵的組合)等。 數(shù)據(jù)倉庫的邏輯模型設計包括如下幾點,數(shù)據(jù)粒度選擇(在數(shù)據(jù)量較小的時候可以采取單一的數(shù)據(jù)粒度,即直接存儲。當數(shù)據(jù)量大時,對歷史數(shù)據(jù)進行匯總,保留近期明細數(shù)據(jù))、表分割()、去除操作型數(shù)據(jù)、表劃分、增加計算字段(方便后續(xù)使用)。 ![]() (4)物理模型設計 物理模型設計結(jié)局的是邏輯模型的實現(xiàn)細節(jié),確定數(shù)據(jù)倉庫的存儲結(jié)構(gòu)、數(shù)據(jù)的存儲位置和索引策略。例如合并涉及的表存儲時放到一起,可大大減少磁頭定位時間,提高I/O效率、按列存儲。 ![]() 確定數(shù)據(jù)的存儲結(jié)構(gòu)。不同的存儲結(jié)構(gòu)有不同的實現(xiàn)方式,應綜合考慮存取時間、存取空間利用率和維護代價等因素,根據(jù)各種存儲結(jié)構(gòu)的優(yōu)缺點和適用范圍選擇合適的存儲結(jié)構(gòu)。 確定數(shù)據(jù)的存儲位置。對數(shù)據(jù)按照其重要程度、使用頻率和對響應時間的要求等進行分類,并將不同類別的數(shù)據(jù)存儲在不同的存儲設備中。設置存儲分配參數(shù),對塊的大小、緩沖區(qū)的大小和個數(shù)等進行物理優(yōu)化處理。 確定索引策略。通過對數(shù)據(jù)存取路徑的分析,為各個數(shù)據(jù)存儲建立專用的索引,以獲得存取的高效率。 數(shù)據(jù)倉庫建模方法
|
|