數據倉庫定義
數據倉庫之父Bill Inmon在1991年出版的“Building the Data Warehouse”一書中所提出的定義被廣泛接受:數據倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的數據集合,用於支持管理決策(Decision Making Support)。
數據倉庫特點
1. 面向主題。操作型數據庫的數據組織面向事務處理任務,各個業務系統之間各自分離,而數據倉庫中的數據是按照一定的主題域進行組織。主題是一個抽象的概念,是指用戶使用數據倉庫進行決策時所關心的重點方面,一個主題通常包含多個操作型信息系統。
2. 集成的。面向事務處理的操作型數據庫通常與某些特定的應用相關,數據庫之間相互獨立,並且往往是異構的。而數據倉庫中的數據是在對原有分散的數據庫數據抽取、清理的基礎上經過系統加工、匯總和整理得到的,必須消除元數據中的不一致性,以保證數據倉庫內的信息是關於整個企業的一致的全局信息。
3. 相對穩定的。操作型數據庫中的數據通常實時更新,數據根據需要及時發生變化。數據倉庫的數據主要供企業決策分析之用,所涉及的數據操作主要是數據查詢,一旦某個數據進入數據倉庫以后,一般情況下將被長期保留,也就是數據倉庫中一般有大量的查詢操作,但修改和刪除操作很少,通常只需要定期的加載、刷新。
4.反映歷史變化。操作型數據庫主要關心當前某一個時間段內的數據,而數據倉庫中的數據通常包含歷史信息,系統記錄了企業從過去某一時點(如開始應用數據倉庫的時點)到目前的各個階段的信息,通過這些信息,可以對企業的發展歷程和未來趨勢做出定量分析和預測。
數據倉庫中的數據
包括元數據、粒度數據、當前詳細數據,歷史數據、檔案數據。
1. 元數據:最重要的部分,關於數據的數據。也稱為數據倉庫的結構,是所有數據的集成體現。倉庫開發者使用元數據來管理和控制倉庫的建立和維護。
2. 粒度數據:定義為數據倉庫所保持的信息的概要程度。不同粒度表示為不同級別的匯總數據。匯總數據是信息倉庫的特點,所有的企業數據分類(按部門、地區、功能等)需要的信息都不同,同時有效的信息倉庫設計是為不同風格提供的,輕量級匯總數據為整個企業組成部分服務。通過企業數據分類找到詳細和匯總數據。但是它依舊比倉庫中的詳細數據少得多。高度匯總數據是企業執行的主要依據,它來自根據企業組成部分的輕量級匯總數據或來自當前詳細數據。這一層的 數據容量比其他任何一個都少,代表一個折衷的積累,用來支持廣泛的各式的需要和興趣。通過高度匯總,執行者能夠使用“鑽取”到達逐步增加的詳細層。
3. 當前詳細數據:是信息倉庫的核心,存放大量數據。數據來自業務操作數據庫,通過主題來組織,不是代表特定應用,而是代表整個企業。在倉庫中數據粒度最低,當數據精確化時,其中的每一個數據實體都是一個快照、一個時刻,表示一個瞬間。一旦需要經常支持企業需求,數據隨即進行更新。
4. 歷史數據:以前的有意義數據(一般兩年以上),給企業帶來延續的利益和價值。包含巨大的數據量,可以用來預測和趨勢分析。包括:舊數據(原始或匯總形式)、描述舊數據特征的元數據。
數據倉庫的基本架構
數據倉庫的目的是構建面向分析的集成化數據環境,為企業提供決策支持(Decision Support)。其實數據倉庫本身並不“生產”任何數據,同時自身也不需要“消費”任何的數據,數據來源於外部,並且開放給外部應用,這也是為什么叫“倉庫”,而不叫“工廠”的原因。因此數據倉庫的基本架構主要包含的是數據流入流出的過程,可以分為三層——源數據、數據倉庫、數據應用:
從圖中可以看出數據倉庫的數據來源於不同的源數據,並提供多樣的數據應用,數據自自下而上流入數據倉庫后向上層開放應用,而數據倉庫只是中間集成化數據管理的一個平台。
數據倉庫的數據來源
數據倉庫從各數據源獲取數據及在數據倉庫內的數據轉換和流動都可以認為是ETL(抽取Extra, 轉化Transfer, 裝載Load)的過程,ETL是數據倉庫的流水線,也可以認為是數據倉庫的血液,它維系着數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩定。
數據倉庫的數據存儲
數據倉庫並不需要儲存所有的原始數據,同時數據倉庫需要儲存部分細節數據。簡單地解釋下:
1. 為什么不需要所有原始數據?數據倉庫面向分析處理,但是某些源數據對於分析而言沒有價值或者其可能產生的價值遠低於儲存這些數據所需要的數據倉庫的實現和性能上的成本。比如我們知道用戶的省份、城市足夠,至於用戶究竟住哪里可能只是物流商關心的事,或者用戶在博客的評論內容可能只是文本挖掘會有需要,但將這些冗長的評論文本存在數據倉庫就得不償失;
2. 為什么要存細節數據?細節數據是必需的,數據倉庫的分析需求會時刻變化,而有了細節數據就可以做到以不變應萬變。如果我們只存儲根據某些需求搭建起來的數據模型,那么顯然對於頻繁變動的需求會手足無措;
數據倉庫基於維護細節數據的基礎上在對數據進行處理,使其真正地能夠應用於分析
主要包括三個方面:
1. 數據的聚合
這里的聚合數據指的是基於特定需求的簡單聚合(基於多維數據的聚合體現在多維數據模型中),簡單聚合可以是網站的總Pageviews、Visits、Unique Visitors等匯總數據,也可以是Avg. time on page、Avg. time on site等平均數據,這些數據可以直接地展示於報表上。
2. 多維數據模型
多維數據模型提供了多角度多層次的分析應用,比如基於時間維、地域維等構建的銷售星形模型、雪花模型,可以實現在各時間維度和地域維度的交叉查詢,以及基於時間維和地域維的細分。所以數據倉庫面向特定群體的數據集市都是基於多維數據模型進行構建的。
3. 業務模型
這里的業務模型指的是基於某些數據分析和決策支持而建立起來的數據模型,比如我之前介紹過的用戶評價模型、關聯推薦模型、RFM分析模型等,或者是決策支持的線性規划模型、庫存模型等;同時,數據挖掘中前期數據的處理也可以在這里完成。
數據倉庫的數據應用
1. 報表展示
報表幾乎是每個數據倉庫的必不可少的一類數據應用,將聚合數據和多維分析數據展示到報表,提供了最為簡單和直觀的數據。
2. 即時查詢
理論上數據倉庫的所有數據(包括細節數據、聚合數據、多維數據和分析數據)都應該開放即時查詢,即時查詢提供了足夠靈活的數據獲取方式,用戶可以根據自己的需要查詢獲取數據。
3. 數據分析
數據分析大部分基於構建的業務模型展開,當然也可以使用聚合的數據進行趨勢分析、比較分析、相關分析等,而多維數據模型提供了多維分析的數據基礎;同時從細節數據中獲取一些樣本數據進行特定的分析也是較為常見的一種途徑。
4. 數據挖掘
數據挖掘用一些高級的算法可以讓數據展現出各種令人驚訝的結果。數據挖掘可以基於數據倉庫中已經構建起來的業務模型展開,但大多數時候數據挖掘會直接從細節數據上入手,而數據倉庫為挖掘工具諸如SAS、SPSS等提供數據接口。
元數據
數據倉庫環境中一個重要方面是元數據。元數據是關於數據的數據。只要有程序和數據,元數據就是信息處理環境的一部分。但是在數據倉庫中,元數據扮演一個新的重要角色。也正因為有了元數據,可以最有效地利用數據倉庫。元數據使得最終用戶/ DSS分析員能夠探索各種可能性。
元數據在數據倉庫的上層,並且記錄數據倉庫中對象的位置。典型地,元數據記錄:
l 程序員所知的數據結構。
l DSS(決策支持系統)分析員所知的數據結構。
l 數據倉庫的源數據。
l 數據加入數據倉庫時的轉換。
l 數據模型。
l 數據模型和數據倉庫的關系。
l 抽取數據的歷史記錄。
數據集市
數據集市(Data Market)是一種更小、更集中的數據倉庫。簡單地說,原始數據從數據倉庫流入不同的部門以支持這些部門的定制化使用。這些部門級的數據庫就稱為數據集市。一個數據集市就是一個部門的數據集合。數據集市是為特定部門的決策支持而組織起來的一批數據和業務規則,習慣上稱它們為“主題域”。不同部門有不同的“主題域”,因而也就有不同的數據集市。例如,財務部門有自己的數據集市,市場部門也有自己的數據集市,它們之間可能有關聯,但相互不同且在本質上互為獨立。
盡管數據集市與數據倉庫在很多方面有類似之處,但它們之間卻存在着區別。主要體現在:
(1)面向的對象不同。數據倉庫面向的是整個企業,為整個企業提供所需的數據;數據集市則面向各個部門。
(2)數據粒度不一樣。數據倉庫中的數據粒度非常小;數據集市中的數據主要是概括級的數據。
內容來源於網絡