數據倉庫

1. 數據倉庫的基本概念
數據倉庫,英文名稱爲Data Warehouse,可簡寫爲DW或DWH。數據倉庫的目的是構建面向分析的集成化數據環境,爲企業提供決策支持(Decision Support)。它出於分析性報告和決策支持目的而創建。
數據倉庫本身並不“生產”任何數據,同時自身也不需要“消費”任何的數據,數據來源於外部,並且開放給外部應用,這也是爲什麼叫“倉庫”,而不叫“工廠”的原因。
2. 數據倉庫的主要特徵
數據倉庫是面向主題的(Subject-Oriented )、集成的(Integrated)、非易失的(Non-Volatile)和時變的(Time-Variant )數據集合,用以支持管理決策 。
2.1. 面向主題
傳統數據庫中,最大的特點是面向應用進行數據的組織,各個業務系統可能是相互分離的。而數據倉庫則是面向主題的。主題是一個抽象的概念,是較高層次上企業信息系統中的數據綜合、歸類並進行分析利用的抽象。在邏輯意義上,它是對應企業中某一宏觀分析領域所涉及的分析對象。
操作型處理(傳統數據)對數據的劃分並不適用於決策分析。而基於主題組織的數據則不同,它們被劃分爲各自獨立的領域,每個領域有各自的邏輯內涵但互不交叉,在抽象層次上對數據進行完整、一致和準確的描述。一些主題相關的數據通常分佈在多個操作型系統中。

2.2. 集成性
通過對分散、獨立、異構的數據庫數據進行抽取、清理、轉換和彙總便得到了數據倉庫的數據,這樣保證了數據倉庫內的數據關於整個企業的一致性。
數據倉庫中的綜合數據不能從原有的數據庫系統直接得到。因此在數據進入數據倉庫之前,必然要經過統一與綜合,這一步是數據倉庫建設中最關鍵、最複雜的一步,所要完成的工作有:
(1)要統一源數據中所有矛盾之處,如字段的同名異義、異名同義、單位不統一、字長不一致,等等。
(2)進行數據綜合和計算。數據倉庫中的數據綜合工作可以在從原有數據庫抽取數據時生成,但許多是在數據倉庫內部生成的,即進入數據倉庫以後進行綜合生成的。
下圖說明一個保險公司綜合數據的簡單處理過程,其中數據倉庫中與“保險”主題有關的數據來自於多個不同的操作型系統。這些系統內部數據的命名可能不同,數據格式也可能不同。把不同來源的數據存儲到數據倉庫之前,需要去除這些不一致。
數據倉庫
圖:數據倉庫的數據集成
2.3. 非易失性(不可更新性)
操作型數據庫主要服務於日常的業務操作,使得數據庫需要不斷地對數據實時更新,以便迅速獲得當前最新數據,不至於影響正常的業務運作。在數據倉庫中只要保存過去的業務數據,不需要每一筆業務都實時更新數據倉庫,而是根據商業需要每隔一段時間把一批較新的數據導入數據倉庫。
數據倉庫的數據反映的是一段相當長的時間內歷史數據的內容,是不同時點的數據庫快照的集合,以及基於這些快照進行統計、綜合和重組的導出數據。
數據非易失性主要是針對應用而言。數據倉庫的用戶對數據的操作大多是數據查詢或比較複雜的挖掘,一旦數據進入數據倉庫以後,一般情況下被較長時間保留。數據倉庫中一般有大量的查詢操作,但修改和刪除操作很少。因此,數據經加工和集成進入數據倉庫後是極少更新的,通常只需要定期的加載和更新。
2.4. 時變性
數據倉庫包含各種粒度的歷史數據。數據倉庫中的數據可能與某個特定日期、星期、月份、季度或者年份有關。數據倉庫的目的是通過分析企業過去一段時間業務的經營狀況,挖掘其中隱藏的模式。雖然數據倉庫的用戶不能修改數據,但並不是說數據倉庫的數據是永遠不變的。分析的結果只能反映過去的情況,當業務變化後,挖掘出的模式會失去時效性。因此數據倉庫的數據需要更新,以適應決策的需要。從這個角度講,數據倉庫建設是一個項目,更是一個過程 。數據倉庫的數據隨時間的變化表現在以下幾個方面。
(1)數據倉庫的數據時限一般要遠遠長於操作型數據的數據時限。
(2)操作型系統存儲的是當前數據,而數據倉庫中的數據是歷史數據。
(3)數據倉庫中的數據是按照時間順序追加的,它們都帶有時間屬性。

3. 數據倉庫與數據庫區別
數據庫與數據倉庫的區別實際講的是OLTP與OLAP的區別。
操作型處理,叫聯機事務處理OLTP(On-Line Transaction Processing,),也可以稱面向交易的處理系統,它是針對具體業務在數據庫聯機的日常操作,通常對少數記錄進行查詢、修改。用戶較爲關心操作的響應時間、數據的安全性、完整性和併發支持的用戶數等問題。傳統的數據庫系統作爲數據管理的主要手段,主要用於操作型處理。
分析型處理,叫聯機分析處理OLAP(On-Line Analytical Processing)一般針對某些主題的歷史數據進行分析,支持管理決策。
首先要明白,數據倉庫的出現,並不是要取代數據庫。
l 數據庫是面向事務的設計,數據倉庫是面向主題設計的。
l 數據庫一般存儲業務數據,數據倉庫存儲的一般是歷史數據。
l 數據庫設計是儘量避免冗餘,一般針對某一業務應用進行設計,比如一張簡單的User表,記錄用戶名、密碼等簡單數據即可,符合業務應用,但是不符合分析。數據倉庫在設計是有意引入冗餘,依照分析需求,分析維度、分析指標進行設計。
l 數據庫是爲捕獲數據而設計,數據倉庫是爲分析數據而設計。
以銀行業務爲例。數據庫是事務系統的數據平臺,客戶在銀行做的每筆交易都會寫入數據庫,被記錄下來,這裏,可以簡單地理解爲用數據庫記賬。數據倉庫是分析系統的數據平臺,它從事務系統獲取數據,並做彙總、加工,爲決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當前存款餘額是多少。如果存款又多,消費交易又多,那麼該地區就有必要設立ATM了。
顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性,客戶存一筆錢需要幾十秒是無法忍受的,這就要求數據庫只能存儲很短一段時間的數據。而分析系統是事後的,它要提供關注時間段內所有的有效數據。這些數據是海量的,彙總計算起來也要慢一些,但是,只要能夠提供有效的分析數據就達到目的了。
數據倉庫,是在數據庫已經大量存在的情況下,爲了進一步挖掘數據資源、爲了決策需要而產生的,它決不是所謂的“大型數據庫”。
4. 數據倉庫分層架構
按照數據流入流出的過程,數據倉庫架構可分爲三層——源數據、數據倉庫、數據應用。
數據倉庫
數據倉庫的數據來源於不同的源數據,並提供多樣的數據應用,數據自下而上流入數據倉庫後向上層開放應用,而數據倉庫只是中間集成化數據管理的一個平臺。
l 源數據層(ODS):此層數據無任何更改,直接沿用外圍系統數據結構和數據,不對外開放;爲臨時存儲層,是接口數據的臨時存儲區域,爲後一步的數據處理做準備。
l 數據倉庫層(DW):也稱爲細節層,DW層的數據應該是一致的、準確的、乾淨的數據,即對源系統數據進行了清洗(去除了雜質)後的數據。
l 數據應用層(DA或APP):前端應用直接讀取的數據源;根據報表、專題分析需求而計算生成的數據。
數據倉庫從各數據源獲取數據及在數據倉庫內的數據轉換和流動都可以認爲是ETL(抽取Extra, 轉化Transfer, 裝載Load)的過程,ETL是數據倉庫的流水線,也可以認爲是數據倉庫的血液,它維繫着數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩定。
爲什麼要對數據倉庫分層?
用空間換時間,通過大量的預處理來提升應用系統的用戶體驗(效率),因此數據倉庫會存在大量冗餘的數據;不分層的話,如果源業務系統的業務規則發生變化將會影響整個數據清洗過程,工作量巨大。
通過數據分層管理可以簡化數據清洗的過程,因爲把原來一步的工作分到了多個步驟去完成,相當於把一個複雜的工作拆成了多個簡單的工作,把一個大的黑盒變成了一個白盒,每一層的處理邏輯都相對簡單和容易理解,這樣我們比較容易保證每一個步驟的正確性,當數據發生錯誤的時候,往往我們只需要局部調整某個步驟即可。
5. 數據倉庫元數據管理
元數據(Meta Date),主要記錄數據倉庫中模型的定義、各層級間的映射關係、監控數據倉庫的數據狀態及ETL的任務運行狀態。一般會通過元數據資料庫(Metadata Repository)來統一地存儲和管理元數據,其主要目的是使數據倉庫的設計、部署、操作和管理能達成協同和一致。
元數據是數據倉庫管理系統的重要組成部分,元數據管理是企業級數據倉庫中的關鍵組件,貫穿數據倉庫構建的整個過程,直接影響着數據倉庫的構建、使用和維護。
l 構建數據倉庫的主要步驟之一是ETL。這時元數據將發揮重要的作用,它定義了源數據系統到數據倉庫的映射、數據轉換的規則、數據倉庫的邏輯結構、數據更新的規則、數據導入歷史記錄以及裝載週期等相關內容。數據抽取和轉換的專家以及數據倉庫管理員正是通過元數據高效地構建數據倉庫。
l 用戶在使用數據倉庫時,通過元數據訪問數據,明確數據項的含義以及定製報表。
l 數據倉庫的規模及其複雜性離不開正確的元數據管理,包括增加或移除外部數據源,改變數據清洗方法,控制出錯的查詢以及安排備份等。
數據倉庫
元數據可分爲技術元數據和業務元數據。技術元數據爲開發和管理數據倉庫的IT 人員使用,它描述了與數據倉庫開發、管理和維護相關的數據,包括數據源信息、數據轉換描述、數據倉庫模型、數據清洗與更新規則、數據映射和訪問權限等。而業務元數據爲管理層和業務分析人員服務,從業務角度描述數據,包括商務術語、數據倉庫中有什麼數據、數據的位置和數據的可用性等,幫助業務人員更好地理解數據倉庫中哪些數據是可用的以及如何使用。
由上可見,元數據不僅定義了數據倉庫中數據的模式、來源、抽取和轉換規則等,而且是整個數據倉庫系統運行的基礎,元數據把數據倉庫系統中各個鬆散的組件聯繫起來,組成了一個有機的整體。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章