數(shù)據(jù)倉庫架構
為了滿足技術期望,數(shù)據(jù)倉庫工程師可以使用各種架構來構建數(shù)據(jù)倉庫。常見的數(shù)據(jù)倉庫架構是基于分層方法的,這在信息系統(tǒng)中很常見。下面將描述其中的兩個典型數(shù)據(jù)架構。
兩層數(shù)倉架構
Kimball引入了一種常用的雙層結構。在這個架構中(如圖1.3所示),數(shù)據(jù)倉庫系統(tǒng)本身只有兩層。
圖 1.3 兩層數(shù)倉架構
來自源系統(tǒng)的原始數(shù)據(jù)被加載到集結區(qū)。目標是擁有應該加載到數(shù)據(jù)倉庫中的所有數(shù)據(jù)的精確副本。集結區(qū)的主要目的是減少源系統(tǒng)上的操作數(shù)量和從源系統(tǒng)中提取數(shù)據(jù)的時間。集結區(qū)中的表是按照源系統(tǒng)中的表建模的。當轉換很復雜并且不能即時執(zhí)行時,或者當數(shù)據(jù)在不同的時間從多個源系統(tǒng)到達時,需要一個集結區(qū)。
一旦數(shù)據(jù)被加載到集結區(qū),Kimball建議將數(shù)據(jù)加載到數(shù)據(jù)倉庫中。該數(shù)據(jù)倉庫是按照維度模型建模的,由數(shù)據(jù)集市(表示業(yè)務流程)組成。
1996年,Kimball首次提出這一建議。維度模型是一個事實上的標準,業(yè)務用戶和分析工具(如OLAP前端或引擎)可以很容易地查詢它。因為它是符合標準的數(shù)據(jù)集市的邏輯關聯(lián),所以必須在數(shù)據(jù)倉庫層之前實現(xiàn)業(yè)務規(guī)則,以便符合和對齊數(shù)據(jù)集。我們將在第7章“維度建模”中討論維度建模。數(shù)據(jù)訪問應用程序使用維度模型向用戶顯示信息,并允許進行專門的分析。
兩層數(shù)倉架構的優(yōu)點是,與其他架構相比,從源數(shù)據(jù)構建維度存儲很容易。但是,缺點是從相同的源數(shù)據(jù)構建第二個維度模型更為復雜,因為需要從集結區(qū)中再次加載數(shù)據(jù),而且無法重用現(xiàn)有的ETL工作流。
三層數(shù)倉架構
為了克服兩層數(shù)倉架構的局限性,另一個常見的數(shù)倉架構是基于三層的(圖1.4)。
圖 1.4 三層數(shù)倉架構
該架構由Inmon引入,并引入了原子數(shù)據(jù)倉庫,通常是集結區(qū)和維度模型之間的規(guī)范化業(yè)務數(shù)據(jù)存儲(ODS)。此架構中的集結區(qū)遵循兩層數(shù)倉架構。然而,數(shù)據(jù)倉庫持有以三范式規(guī)范建模的原始數(shù)據(jù)。它集成了企業(yè)的所有數(shù)據(jù),但仍然基于來自源系統(tǒng)的物理表。通過這樣做,它的行為類似于一個大型業(yè)務數(shù)據(jù)庫。
在業(yè)務數(shù)據(jù)的規(guī)范化視圖之上,有一個維度模型。業(yè)務用戶可以使用面向主題的數(shù)據(jù)集市(類似于兩層數(shù)倉架構)訪問和分析數(shù)據(jù)。但是,從業(yè)務數(shù)據(jù)存儲中可用的數(shù)據(jù)創(chuàng)建新的數(shù)據(jù)集市要容易得多,因為數(shù)據(jù)已經被清洗和集成了。因此,構建新的數(shù)據(jù)集市不需要進行數(shù)據(jù)清洗和集成。在實踐中,2層的數(shù)據(jù)倉庫通常有多個數(shù)據(jù)集市,通過向用戶提供不同的主題域來滿足不同用戶組的需求。
然而,它更復雜,需要更多的數(shù)據(jù)處理來構建整個數(shù)據(jù)倉庫,包括業(yè)務數(shù)據(jù)存儲和依賴數(shù)據(jù)集市。另一個問題是,如果許多數(shù)據(jù)集市依賴于業(yè)務性數(shù)據(jù)存儲,那么對數(shù)據(jù)模型的更改可能成為一種負擔。在下篇文章中,我們將討論一種替代的三層架構,以支持對數(shù)據(jù)倉庫進行更快的更改。