數據倉庫的基本架構
數據倉庫的目的是構建面向分析的集成化數據環境,為企業提供決策支持(Decision-Support)。其實數據倉庫本身并不“生產”任何數據,同時自身也不需要“消費”任何的數據,數據來源于外部,并且開放給外部應用,這也是為什么叫“倉庫”,而不叫“工廠”的原因。因此數據倉庫的基本架構主要包含的是數據流入流出的過程,可以分為三層——源數據、數據倉庫、數據應用:
從圖中可以看出數據倉庫的數據來源于不同的源數據,并提供多樣的數據應用,數據自上而下流入數據倉庫后向上層開放應用,而數據倉庫只是中間集成化數據管理的一個平臺。
數據倉庫從各數據源獲取數據及在數據倉庫內的數據轉換和流動都可以認為是ETL(抽取Extra, 轉化Transfer, 裝載Load)的過程,ETL是數據倉庫的流水線,也可以認為是數據倉庫的血液,它維系著數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩定。
下面主要簡單介紹下數據倉庫架構中的各個模塊,當然這里所介紹的數據倉庫主要是指網站數據倉庫。
數據倉庫的數據來源
其實之前的一篇文章已經介紹過數據倉庫各種源數據的類型——數據倉庫的源數據類型,所以這里不再詳細介紹。
對于網站數據倉庫而言,點擊流日志是一塊主要的數據來源,它是網站分析的基礎數據;當然網站的數據庫數據也并不可少,其記錄這網站運營的數據及各種用戶操作的結果,對于分析網站Outcome這類數據更加精準;其他是網站內外部可能產生的文檔及其它各類對于公司決策有用的數據。
數據倉庫的數據存儲
源數據通過ETL的日常任務調度導出,并經過轉換后以特性的形式存入數據倉庫。其實這個過程一直有很大的爭議,就是到底數據倉庫需不需要儲存細節數據,一方的觀點是數據倉庫面向分析,所以只要存儲特定需求的多維分析模型;另一方的觀點是數據倉庫先要建立和維護細節數據,再根據需求聚合和處理細節數據生成特定的分析模型。我比較偏向后面一個觀點:數據倉庫并不需要儲存所有的原始數據,但數據倉庫需要儲存細節數據,并且導入的數據必須經過整理和轉換使其面向主題。簡單地解釋下:
(1).為什么不需要所有原始數據?數據倉庫面向分析處理,但是某些源數據對于分析而言沒有價值或者其可能產生的價值遠低于儲存這些數據所需要的數據倉庫的實現和性能上的成本。比如我們知道用戶的省份、城市足夠,至于用戶究竟住哪里可能只是物流商關心的事,或者用戶在博客的評論內容可能只是文本挖掘會有需要,但將這些冗長的評論文本存在數據倉庫就得不償失;
(2).為什么要存細節數據?細節數據是必需的,數據倉庫的分析需求會時刻變化,而有了細節數據就可以做到以不變應萬變,但如果我們只存儲根據某些需求搭建起來的數據模型,那么顯然對于頻繁變動的需求會手足無措;
(3).為什么要面向主題?面向主題是數據倉庫的第一特性,主要是指合理地組織數據以方面實現分析。對于源數據而言,其數據組織形式是多樣的,像點擊流的數據格式是未經優化的,前臺數據庫的數據是基于OLTP操作組織優化的,這些可能都不適合分析,而整理成面向主題的組織形式才是真正地利于分析的,比如將點擊流日志整理成頁面(Page)、訪問(Visit或Session)、用戶(Visitor)三個主題,這樣可以明顯提升分析的效率。
數據倉庫基于維護細節數據的基礎上在對數據進行處理,使其真正地能夠應用于分析。主要包括三個方面:
數據的聚合
這里的聚合數據指的是基于特定需求的簡單聚合(基于多維數據的聚合體現在多維數據模型中),簡單聚合可以是網站的總Pageviews、Visits、Unique Visitors等匯總數據,也可以是Avg. time on page、Avg. time on site等平均數據,這些數據可以直接地展示于報表上。
多維數據模型
多維數據模型提供了多角度多層次的分析應用,比如基于時間維、地域維等構建的銷售星形模型、雪花模型,可以實現在各時間維度和地域維度的交叉查詢,以及基于時間維和地域維的細分。所以多維數據模型的應用一般都是基于聯機分析處理(Online Analytical Process, OLAP)的,而面向特定需求群體的數據集市也會基于多維數據模型進行構建。
業務模型
這里的業務模型指的是基于某些數據分析和決策支持而建立起來的數據模型,比如我之前介紹過的用戶評價模型、關聯推薦模型、RFM分析模型等,或者是決策支持的線性規劃模型、庫存模型等;同時,數據挖掘中前期數據的處理也可以在這里完成。
數據倉庫的數據應用
之前的一篇文章——數據倉庫的價值中介紹過數據倉庫的四大特性上的價值體現,但數據倉庫的價值遠不止這樣,而且其價值真正的體現是在數據倉庫的數據應用上。圖中羅列的幾種應用并未包含所有,其實一切基于數據相關的擴展性應用都可以基于數據倉庫來實現。
報表展示
報表幾乎是每個數據倉庫的必不可少的一類數據應用,將聚合數據和多維分析數據展示到報表,提供了最為簡單和直觀的數據。
即席查詢
理論上數據倉庫的所有數據(包括細節數據、聚合數據、多維數據和分析數據)都應該開放即席查詢,即席查詢提供了足夠靈活的數據獲取方式,用戶可以根據自己的需要查詢獲取數據,并提供導出到Excel等外部文件的功能。
數據分析
數據分析大部分可以基于構建的業務模型展開,當然也可以使用聚合的數據進行趨勢分析、比較分析、相關分析等,而多維數據模型提供了多維分析的數據基礎;同時從細節數據中獲取一些樣本數據進行特定的分析也是較為常見的一種途徑。
數據挖掘
數據挖掘用一些高級的算法可以讓數據展現出各種令人驚訝的結果。數據挖掘可以基于數據倉庫中已經構建起來的業務模型展開,但大多數時候數據挖掘會直接從細節數據上入手,而數據倉庫為挖掘工具諸如SAS、SPSS等提供數據接口。
元數據管理
元數據(Meta Date),其實應該叫做解釋性數據,即數據的數據。主要記錄數據倉庫中模型的定義、各層級間的映射關系、監控數據倉庫的數據狀態及ETL的任務運行狀態。一般會通過元數據資料庫(Metadata Repository)來統一地存儲和管理元數據,其主要目的是使數據倉庫的設計、部署、操作和管理能達成協同和一致。
最后做個Ending,數據倉庫本身既不生產數據也不消費數據,只是作為一個中間平臺集成化地存儲數據;數據倉庫實現的難度在于整體架構的構建及ETL的設計,這也是日常管理維護中的重頭;而數據倉庫的真正價值體現在于基于其的數據應用上,如果沒有有效的數據應用也就失去了構建數據倉庫的意義。
VIA:網絡
從圖中可以看出,但是并沒有相應的圖。。。