基本概念
英文名稱為Data Warehouse,可簡寫為DW或DWH。數據倉庫的目的是構建面向分析的集成化 數據環(huán)境,為企業(yè)提供決策支持(Decision Support)。
數據倉庫是存數據的,企業(yè)的各種數據往里面存,主要目的是為了分析有效數據,后續(xù)會基 于它產出供分析挖掘的數據,或者數據應用需要的數據,如企業(yè)的分析性報告和各類報表 等。
可以理解為:面向分析的存儲系統(tǒng)
主要特征
數據倉庫是面向主題的(Subject-Oriented )、集成的(Integrated)、非易失的(NonVolatile)和時變的(Time-Variant )數據集合,用以支持管理決策。
面向主題
數據倉庫是面向主題的,數據倉庫通過一個個主題域將多個業(yè)務系統(tǒng)的數據加載到一起,為了 各個主題(如:用戶、訂單、商品等)進行分析而建,操作型數據庫是為了支撐各種業(yè)務而 建立。
集成性
數據倉庫會將不同源數據庫中的數據匯總到一起,數據倉庫中的綜合數據不能從原有的數據庫 系統(tǒng)直接得到。因此在數據進入數據倉庫之前,必然要經過統(tǒng)一與整合,這一步是數據倉庫 建設中最關鍵、最復雜的一步(ETL),要統(tǒng)一源數據中所有矛盾之處,如字段的同名異義、異 名同義、單位不統(tǒng)一、字長不一致,等等。
非易失性
操作型數據庫主要服務于日常的業(yè)務操作,使得數據庫需要不斷地對數據實時更新,以便迅 速獲得當前最新數據,不至于影響正常的業(yè)務運作。
在數據倉庫中只要保存過去的業(yè)務數據,不需要每一筆業(yè)務都實時更新數據倉庫,而是根據 商業(yè)需要每隔一段時間把一批較新的數據導入數據倉庫。 數據倉庫的數據反映的是一段相當 長的時間內歷史數據的內容,是不同時點的數據庫的集合,以及基于這些快照進行統(tǒng)計、綜 合和重組的導出數據。數據倉庫中的數據一般僅執(zhí)行查詢操作,很少會有刪除和更新。但是 需定期加載和刷新數據。
時變性
數據倉庫包含各種粒度的歷史數據。數據倉庫中的數據可能與某個特定日期、星期、月份、 季度或者年份有關。數據倉庫的目的是通過分析企業(yè)過去一段時間業(yè)務的經營狀況,挖掘其 中隱藏的模式。雖然數據倉庫的用戶不能修改數據,但并不是說數據倉庫的數據是永遠不變 的。分析的結果只能反映過去的情況,當業(yè)務變化后,挖掘出的模式會失去時效性。因此數 據倉庫的數據需要定時更新,以適應決策的需要。
數據庫與數據倉庫的區(qū)別
數據庫與數據倉庫的區(qū)別實際講的是OLTP與OLAP的區(qū)別。
操作型處理,叫聯機事務處理 OLTP(On-Line Transaction Processing,),也可以稱面向交易的處理系統(tǒng),它是針對具體業(yè)務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修 改。用戶較為關心操作的響應時間、數據的安全性、完整性和并發(fā)支持的用戶數等問題。傳 統(tǒng)的數據庫系統(tǒng)作為數據管理的主要手段,主要用于操作型處理。
分析型處理,叫聯機分析處理 OLAP(On-Line Analytical Processing)一般針對某些主題的歷 史數據進行分析,支持 管理決策。
首先要明白,數據倉庫的出現,并不是要取代數據庫。
- 數據庫是面向事務的設計,數據倉庫是面向主題設計的。
- 數據庫一般存儲業(yè)務數據,數據倉庫存儲的一般是歷史數據。
- 數據庫設計是盡量避免冗余,一般針對某一業(yè)務應用進行設計,比如一張簡單的User表, 記錄用戶名、密碼等簡單數據即可,符合業(yè)務應用,但是不符合分析。數據倉庫在設計 是有意引入冗余,依照分析需求,分析維度、分析指標進行設計。
- 數據庫是為捕獲數據而設計,數據倉庫是為分析數據而設計。
數據倉庫,是在數據庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而 產生的,它決不是所謂的“大型數據庫”。
數倉的分層架構
按照數據流入流出的過程,數據倉庫架構可分為三層——源數據、數據倉庫、數據應用。

數據倉庫的數據來源于不同的源數據,并提供多樣的數據應用,數據自下而上流入數據倉庫 后向上層開放應用,而數據倉庫只是中間集成化數據管理的一個平臺。
-
源數據層(ODS):此層數據無任何更改,直接沿用外圍系統(tǒng)數據結構和數據,不對外開 放;為臨時存儲層,是接口數據的臨時存儲區(qū)域,為后一步的數據處理做準備。 -
數據倉庫層(DW):也稱為細節(jié)層,DW層的數據應該是一致的、準確的、干凈的數據,源數據層(ODS)即對源系統(tǒng)數據進行了清洗(去除了雜質)后的數據。 -
數據應用層(DA或APP):前端應用直接讀取的數據源;根據報表、專題分析需求而計算生成的數據。
數據倉庫從各數據源獲取數據及在數據倉庫內的數據轉換和流動都可以認為是ETL(抽取 Extra, 轉化Transfer, 裝載Load)的過程,ETL是數據倉庫的流水線,也可以認為是數據倉庫的 血液,它維系著數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精 力就是保持ETL的正常和穩(wěn)定。
為什么要對數據倉庫分層?
用空間換時間,通過大量的預處理來提升應用系統(tǒng)的用戶體驗(效率),因此數據倉庫會存 在大量冗余的數據;不分層的話,如果源業(yè)務系統(tǒng)的業(yè)務規(guī)則發(fā)生變化將會影響整個數據清 洗過程,工作量巨大。
通過數據分層管理可以簡化數據清洗的過程,因為把原來一步的工作分到了多個步驟去完 成,相當于把一個復雜的工作拆成了多個簡單的工作,把一個大的黑盒變成了一個白盒,每 一層的處理邏輯都相對簡單和容易理解,這樣我們比較容易保證每一個步驟的正確性,當數 據發(fā)生錯誤的時候,往往我們只需要局部調整某個步驟即可。
數倉的元數據管理
元數據(Meta Date),主要記錄數據倉庫中模型的定義、各層級間的映射關系、監(jiān)控數據倉 庫的數據狀態(tài)及ETL的任務運行狀態(tài)。一般會通過元數據資料庫(Metadata Repository)來統(tǒng) 一地存儲和管理元數據,其主要目的是使數據倉庫的設計、部署、操作和管理能達成協(xié)同和 一致。
元數據是數據倉庫管理系統(tǒng)的重要組成部分,元數據管理是企業(yè)級數據倉庫中的關鍵組件, 貫穿數據倉庫構建的整個過程,直接影響著數據倉庫的構建、使用和維護。
- 構建數據倉庫的主要步驟之一是ETL。這時元數據將發(fā)揮重要的作用,它定義了源數據系 統(tǒng)到數據倉庫的映射、數據轉換的規(guī)則、數據倉庫的邏輯結構、數據更新的規(guī)則、數據 導入歷史記錄以及裝載周期等相關內容。數據抽取和轉換的專家以及數據倉庫管理員正 是通過元數據高效地構建數據倉庫。
- 用戶在使用數據倉庫時,通過元數據訪問數據,明確數據項的含義以及定制報表。
- 數據倉庫的規(guī)模及其復雜性離不開正確的元數據管理,包括增加或移除外部數據源,改變數據清洗方法,控制出錯的查詢以及安排備份等。

元數據可分為技術元數據和業(yè)務元數據。技術元數據為開發(fā)和管理數據倉庫的IT 人員使用, 它描述了與數據倉庫開發(fā)、管理和維護相關的數據,包括數據源信息、數據轉換描述、數據 倉庫模型、數據清洗與更新規(guī)則、數據映射和訪問權限等。而業(yè)務元數據為管理層和業(yè)務分 析人員服務,從業(yè)務角度描述數據,包括商務術語、數據倉庫中有什么數據、數據的位置和 數據的可用性等,幫助業(yè)務人員更好地理解數據倉庫中哪些數據是可用的以及如何使用。
由上可見,元數據不僅定義了數據倉庫中數據的模式、來源、抽取和轉換規(guī)則等,而且是整 個數據倉庫系統(tǒng)運行的基礎,元數據把數據倉庫系統(tǒng)中各個松散的組件聯系起來,組成了一 個有機的整體。