數據倉庫簡介

寫於2014年秋

是什麼

數據倉庫是一個面向主題的、集成的、非易失的、隨時間變化的用來支持管理人員決策的數據集合。
面向主題的(subject-oriented):
數據倉庫圍繞一些主題,如顧客、供應商、產品和銷售組織。數據倉庫關注決策者的數據建模與分析,而不是集中於組織機構的日常操作和事務處理。
集成的(integrated):
通常,構造數據倉庫時將多個異種數據源,如關係數據庫、一般文件和聯機分析處理記錄,集成在一起。使用數據清理和數據集成技術,確保命名約定、編碼結構、屬性度量等的一致性。
非易失的(Nonvolatile):
數據倉庫中的數據通常以批量方式載入訪問,但在數據倉庫中並不進行數據更新。當產生變化時,一個新的快照記錄就會寫入數據倉庫。
隨時間變化的(Time-Variant):
數據倉庫中的每個數據單元只是在某一時間是準確的。在一些情況下,記錄加有時間戳,而在另外一些情況下記錄則包含一個事務的時間。記錄都包含某種形式的時間標誌用以說明數據在那一時間是準確的。

歷史

1.1981年NCR公司(national cash register corporation)爲Wal mart 建立了第一個數據倉庫,總容量超過101TB
2.商務智能的瓶頸是從數據到知識的轉換。1983年,該teradata公司利用並行處理技術爲美國富國銀行(Wells Fargo Bank)建立了第一個決策支持系統。
3. 1988年,爲解決企業集成問題,IBM公司的研究員Barry Devlin和Paul Murphy創造性的提出了一個新的術語:數據倉庫(Data Warehouse)
4. 1992年,比爾·恩門(Bill Inmon)出版了《Building the Data Warehouse》一書,第一次給出了數據倉庫的清晰定義和操作性極強的指導意見,真正拉開了數據倉庫得以大規模應用的序幕。
5.1993年,畢業於斯坦福計算機系的博士拉爾夫·金博爾,也出版了一本書:《The Data Warehouse Toolkit》,他在書裏認同了比爾·恩門對於數據倉庫的定義,但卻在具體的構建方法上和他分庭抗禮。最終拉爾夫金博爾爾由下而上,從部門到企業的數據倉庫建立方式迎合人們從易到難的心理,得到了長足的發展。

早期的數據庫主要是一些獨立的數據庫,應用於企業數據處理的各個方面--從事務處理到批處理,再到分析型處理。將操作型數據庫和分析型數據庫分離開,主要是出於以下原因:
1、服務於操作型需求的數據在物理上不同於分析型需求的數據
2、操作型數據的用戶羣體不同於分析型數據所支持的用戶羣體
3、操作型環境的處理特點與分析型環境的處理特點從根本上不同

與OLTP區別

特徵 OLTP OLAP
特徵 操作處理 信息處理
面向 事務 分析
用戶 辦事員、數據庫專業人員 知識工人(經理、主管、分析員)
功能 日常操作 長期信息需求、決策支持
DB設計 基於E-R,面向應用 星型、雪花,面向主題
數據 當前的 歷史的
彙總 原始的,高度詳細 彙總的,統一的
視圖 詳細,一般關係 複雜查詢
存取 讀、寫 基本爲讀
關注 數據進入 信息輸出
操作 主關鍵字上索引/散列 大量掃描
訪問記錄數 數十個 數千萬
用戶數 數千 數百
DB數量 GB 100GB到TB
優先 高性能、高可靠性 高靈活性,端點用戶自治
度量 事務吞吐量 查詢吞吐量,響應時間

設計要點

事實表
事實表存儲了從機構業務活動或者事件中提煉出來的性能度量
粒度
粒度越細,越可以支撐多樣的需求;粒度越粗,對特定需求性能支持越好。
維表
事實表僅有鍵和數值型度量所組成,與事實表不同,維度表不具有健壯性和完整性,它們當中充滿了“大而笨重”的描述字段。
緩慢變化維
縱表與橫表
縱表靈活,性能需特別關注;橫表性能好,需特別關注靈活性。

這裏寫圖片描述星型模型是一種多維的數據關係,它由一個事實表(Fact Table)和一組維表(Dimension Table)組成。所有維表都直接連接到“ 事實表”。
雪花模型是對星型模型的擴展。它對星型模型的維表進一步層次化,原有的各維表可能被擴展爲小的事實表,形成一些局部的 ” 層次 ” 區域,這些被分解的表都連接到主維度表而不是事實表

技術要點

特點
數據量大
弱事務,寫少讀多
完整性和一致性需求弱

應對
批處理
Mpp數據庫
多維數據庫
Hadoop等分佈式框架
列式存儲
多種存儲介質
壓縮
分區
Load
Bitmap索引
無主外鍵
不記日誌(弱日誌)
預統計(inforbright knowledge grid)

DW2.0

這裏寫圖片描述

ETL

ETL,是英文 Extract-Transform-Load 的縮寫,用來描述將數據從來源端經過抽取(extract)、轉置(transform)、加載(load)至目的端的過程。
ETL作爲數據倉庫的核心和靈魂,能夠按照統一的規則集成並提高數據的價值,是負責完成數據從數據源向目標數據倉庫轉化的過程,是實施數據倉庫的重要步驟。
1、ETL工具的典型代表有:Informatica、Datastage、Oracle ODI、Kettle。
DataStage(以下簡稱DS)的基礎組件被稱爲Stage,它所實現的功能,大多是通過在圖形界面上拖拉實現的。DS的基礎Stage分爲兩類:Active Stage就是完成數據的轉換加載等動作,Passive Stage就是與數據庫或者文件進行連接,然後讓Active Stage完成其他操作。
Passive Stage可以與文本文件,XML文件,幾乎所有的數據庫,Web Services, WebSphere MQ和主要的企業級應用如SAP、Siebel、Oracle 以及PeopleSoft進行聯接。
Active Stage幾乎可以完成SQL所能完成的所有工作,如關聯,過濾,去重。
Job Sequence可以將基礎JOB聯接起來,實現JOB間的依賴,互斥等操作。
加上DS自帶的Basic語言,可以實現各種定製Function,也可以在DS Job Job Crontrol中,除可以對JOB進行靈活多樣的控制外,也可以完成大多數語言實現的功能。
DS也可以調用其他語言,如Shell(或DOS),TCL,可以完成DS本身難以完成的任務。
當然,調度自然不可少,它支持相對不復雜的以時間爲主的調度。以及相關的源數據的管理,備份恢復,調試等功能。
2、ETL自己實現,調度程序+SQL(sp)

調度

調度是ETL的靈魂。ETL調度的設計,決定了ETL所能實現的功能以及靈活性,也決定了其他ETL部分工作量的大小。
調度涉及到的問題主要有優先級,順序亂序執行,出錯處理,重傳處理,調度監控,出錯、超時報警等。
優先級就是任務之間執行的先後緊急順序,將Job分爲幾個優先級,同一優先級或者不同優先級的JOB間有依賴、互斥等關係。
順序亂序執行,順序就是同一JOB按照時間的先後順序執行,而亂序則可以不按照時間順序執行,主要是一些高頻率JOB,異常情況不適合人工處理。
出錯處理、重傳處理,就是要求整個ETL支持重做。
調度監控,對ETL的處理結果和重要步驟有一個記錄,出錯或者超時時發郵件或者短信通知相關負責人。監控主是通過TASK日誌、JOB日誌或者調度日誌實現。

Extract

就是從數據源獲取數據。在數據抽取時,儘量將沒用的數據,錯誤的數據在抽取時過濾,格式等不符合的轉換掉。如果源系統對自己的性能、穩定性要求比較高,則用對源系統打擾儘量少的方式獲取,如db2的export,oracle的exp、或者在備機上抽取等方式,然後再做處理。

涉及到的功能主要有:
數據範圍過濾,抽取表中所有數據或者根據時間抽取相應數據
字段過濾,只抽取需要的字段,不需要的就不用管
條件過濾,根據抽取條件抽取數據
去除回車換行,如果已抽取成文件,字段中的回車換行將很難去掉
格式轉換,特別是時間格式,最好是做成統一格式
賦缺省值,對於空的部分數據,根據需要賦一個缺省值
類型變換,如將number類型轉換爲varchar類型
代碼轉換,就是將在不同源系統中同一含義不同的編碼表示轉換成統一的編碼表示,如將代表性別“男”的’N’,’0’轉換成’M’
數值轉換,就是度量單位的轉換

Transform

就是將抽取的數據,進行一定的處理,生成目標表所需要的格式,內容。
涉及到的處理主要有:
字段合併、拆分:字段合併就是將多個字段合併成一個字段;拆分就是將一個字段拆成多個字段
數據翻譯,就是不同的數據集進行關聯,從另一個數據集中得到所需要的部分數據
數據聚合,就是做一些sum,max等操作
數據合併,相當於數據庫中的merge
行列轉換,需要將某些數據轉換成行,或者是將行轉換成列
參照完整性檢查,對於數據中的參照完整性,入庫前需要進行關聯等方式檢查其參照完整性
唯一性檢查,對數據進行去重操作

Load

就是將數據入庫,如果前面的處理都做了,就可以直接入庫了。入庫的時候需要考濾:
更新入庫,對數據庫中的記錄進行更新
插入,就是將數據直接入庫
刷新,將表中的數據清空,然後入庫
部分刷新,將表中的部分數據清除,然後入庫

由於性能等方面的需要,入庫前後,可能需要做一些處理,如索引臨時失效,主外鍵約束臨時失效、數據庫表不記日誌等

數據集市

獨立型數據集市
獨立型數據集市是爲滿足特定用戶(一般是部門級別的)的需求而建立的一種分析型環境,它能夠快速地解決某些具體的問題,而且投資規模也比數據倉庫小很多。
從屬型數據集市
數據集市就是企業級數據倉庫的一個子集,他主要面向部門級業務,並且只面向某個特定的主題。爲了解決靈活性和性能之間的矛盾,數據集市就是數據倉庫體系結構中增加的一種小型的部門或工作組級別的數據倉庫。數據集市存儲爲特定用戶預先計算好的數據,從而滿足用戶對性能的需求。數據集市可以在一定程度上緩解訪問數據倉庫的瓶頸。
這裏寫圖片描述

應用

數據倉庫常規使用方式包括常見的報表,即席查詢,數據挖掘,BI。
報表是數據倉庫中最常見的使用方式,一般都是在晚上提前計算好,使用時,前端報表工具直接根據維度進行查詢,然後在前端展現。報表數據比明細數據小很多,具體小多少取決於維度的多少及每個維度維值的多少。報表部分的挑戰在於需求非常多樣,而且善變,計算量非常大。
即席查詢(Ad Hoc)是用戶根據自己的需求,靈活的選擇查詢條件,系統能夠根據用戶的選擇生成相應的統計報表。即席查詢與普通應用查詢最大的不同是普通的固定報表查詢是定製開發的,而即席查詢是由用戶自定義查詢條件的。所以即席查詢基本不能提前全部計算好,只能計算好一部分。
BI(Business Intelligence)即商務智能,它是一套完整的解決方案,用來將企業中現有的數據進行有效的整合,快速準確的提供報表並提出決策依據,幫助企業做出明智的業務經營決策。數據倉庫的一個很大特點是需求的不明確,很多時候是用戶看到已經實現部分,才知道下一步該如何做,這此步驟需要反覆驗證的很多;數據從不同的維度,或者某一維度維值特定時,看其他的數據纔有意義。這些特點靠固定報表所需的時間太長,而且修改的太頻繁,BI工具部分滿足了這些需求。但是BI工具大部分都是針對特定數據庫有接口,或者實現了ODBC、JDBC等通用接口,可以跟數據源很好的集成。
數據挖掘一般是指從大量的數據中通過算法搜索隱藏於其中信息的過程。數據挖掘通常與計算機科學有關,並通過統計、在線分析處理、情報檢索、機器學習、專家系統(依靠過去的經驗法則)和模式識別等諸多方法來實現上述目標。數據挖掘的實現方式多種多樣,總體一個特點就是對數據的高頻使用,需要大量的計算,而且經過多次試驗後才能確定一個比較好的方案。數據挖掘基於的數據可以是彙總數據,但是大部分需要從明細數據中計算才能發掘比較大的價值。

實時數據倉庫

以上都是傳統的數據倉庫,一般是一週一次、或者一月一次刷新數據。而實時數據倉庫要求在極短的時間內,或者實時捕獲數據源中發生的變化,並且根據預先設置的規則做出決策。

研究重點
1、數據集成研究問題
實時數據的主動變化捕捉
支持數據一致性和完整性的實時數據分發
實時、高效的連續數據加載
2、數據的組織與管理
RTADW中的數據建模
實時數據的查詢一致性維護
實時數據的查詢衝突解決
實時數據與歷史數據的“無縫”集成
3、主動決策服務
RTADW中事件的主動探查
支持主動決策的分析規則技術

傳統數據倉庫與實時數據倉庫的區別
傳統數據倉庫 實時數據倉庫
僅支持戰略決策 支持戰略決策和戰術決策
數據傳輸是單向的 數據傳輸是雙向的
返回高度彙總指標 返回日常運營指標
以天周月爲週期獲取 只包含當前明細數據,可以爲分鐘爲獲取
數據,並做預先聚合計算 明細數據
中等規模用戶 多用戶併發
高度限制的報表,適合 靈活的即席查詢、數據挖掘
預處理的聚合或數據集市
高級用戶、分析員和內部用戶 操作員,外部用戶

參考資料
數據倉庫 (第四版) W.H.Inmon
數據倉庫生命週期工具箱(第二版) Ralph Kimball
DW2.0 下一代數據倉庫的架構 W.H.Inmon Derek Strauss Genia Neushloss
數據挖掘 概念與技術 Jiawei Han Micheline Kamber

W.H.Inmon http://www.inmoncif.com/home/
Ralph Kimball http://www.kimballgroup.com/
數據倉庫之路 http://www.dwway.com/
中國商業智能網 http://www.chinabi.net/
加州理工學院公開課:機器學習與數據挖掘
http://v.163.com/special/opencourse/learningfromdata.html

發佈了42 篇原創文章 · 獲贊 29 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章