上一篇開了個頭,從Kimball數據倉庫生命周期方法角度,列出了數據倉庫搭建的核心步驟,從這一篇開始將講述技術路徑:技術架構設計和產品選擇和安裝。
首先先以某公司的數據倉庫的總體架構圖的視角,了解整個數據倉庫搭建起來后結構大體的樣子。
- 最底層是數據源,一般是在線的數據庫或者是文件系統。對於在線數據庫,一般是操作型數據庫,比如mysql,oracle等,一般是存在主庫和從庫,從庫用來做備份,主庫出現問題時切換到從庫,從而盡可能的避免影響線上的應用,從庫的數據是從主庫使用工具同步過來的,比如oracle的shareplex等,所以從庫有一定的延遲。文件系統一般使用的格式是csv或者txt。不推薦excle格式的文件,容易出現格式問題。
- 數據倉庫層包含ODS,EDW,DM,接口數據,歸檔數據以及調度監控,元數據管理,主數據管理和數據質量監控
- ODS層是從數據源抽取(E),經過格式的轉換(T),最后加載(L)到數據倉庫中的。
- ETL過程中數據的粒度不會變化,一般除了簡單的格式變化,跟線上的數據庫的表基本一致。
- 抽取是對從庫的表的數據進行抽取,抽取的時候需要對主從庫是否存在延遲進行監測。
- 有的時候是加載操作在轉換操作之前,也就是ELT,這取決於轉換操作在數據倉庫中是否更加容易操作,在一般的TB、PB的數據倉庫中,數據的轉換函數並不是很豐富,即便是有,有時候性能也不是很好,所以都是在抽取數據到文件之后,對文件進行轉換操作處理。
- 抽取的時候一般可以選擇增量抽取還是全量抽取,增量抽取一般需要根據時間戳,全量抽取的時候可以通過ROW NUM字段進行批量式的抽取。
- 加載的目標表可以是臨時表staging table,全量ODS表,分區ODS表。加載到臨時表一般是針對增量抽取而言的,通過將增量數據全部load到臨時表之后,通過merge操作更新ODS表。加載到全量ODS表,如果是增量抽取,那么就用新增數據merge歷史全量數據,此時確保沒有應刪除操作;如果是全量抽取,那么直接用新抽取的數據覆蓋歷史數據。 分區ODS表分為增量分區(每個分區是增量數據)和全量分區(每個分區是歷史全量數據),增量分區表可以選擇增量抽取,全量分區,在沒有硬刪除的時候可以采用增量抽取,然后merge前一個分區的數據生成最新的分區,有硬刪除的情況下只能采用全量抽取,然后直接生成最新的分區。
- EDW層是將ODS層的數據按照主題來生成基礎數據。EDW之上的是DM層。針對特殊的APP應用或者部門等,可以通過EDW的數據生成接口數據,專門服務於應用軟件等。
- 任務調度,從數據源—>ODS—>EDW—>DM/接口層的數據流的計算都需要使用工具或者編寫腳本來執行,執行的過程需要調度系統來安排,過程中需要管理任務的執行頻率,優先級,任務的依賴,以及任務運行時的監控(失敗或者延遲)等等。
- 元數據和主數據的管理,這一塊是比較難於管理的部分。
- 數據質量監控
- ODS層是從數據源抽取(E),經過格式的轉換(T),最后加載(L)到數據倉庫中的。
- 數據應用層主要是數據的分析、挖掘和展示。
系統角度上,影響建設數據倉庫的解決方案的因素
- 操作出現的頻率,即業務部門每隔多長時間做一次查詢分析。
- 在系統中需要保存多久的數據,是一年、兩年還是五年、十年。
- 用戶查詢數據的主要方式,如在時間維度上是按照自然年,還是財政年。
- 用戶所能接受的響應時間是多長、是幾秒鍾,還是幾小時。
產品選擇角度上,影響建設數據倉庫的解決方案的因素
- 廠商的背景和支持能力,能否提供全方位的技術支持和咨詢服務。
- 數據庫對大數據量(TB級)的支持能力。
- 數據庫是否支持並行操作。
- 能否提供數據倉庫的建模工具,是否支持對元數據的管理。
- 能否提供支持大數據量的數據加載、轉換、傳輸工具(ETT)。
- 能否提供完整的決策支持工具集,滿足數據倉庫中各類用戶的需要。
在了解了整個數據倉庫自上而下的框架之后,數據的同步,數據的存儲計算,數據的計算,數據的分析,數據的展現,這些階段上建設數據倉庫有什么樣的解決方案呢?
- 首先是數據同步(數據源-ODS層):ETL工具的選擇
- 主流的ETL工具有Informatica,Datastage,Kettle
(借此吐槽一下博客園表格的使用太不和諧了,做好的表格,整篇文章格式全亂了! 只能做好截個圖)
-
- 其他的ETL工具有ODI,Beenload,Cognos等等
- 其次是數據的存儲計算(EDW-DM):數據倉庫
- 數據倉庫主流有Teradata,Exadata,GreenPlum,SybaseIQ,Hive
- 數據的分析和報表展示:OLAP
- 5大主流BI工具
- 參考http://www.cnblogs.com/cold/archive/2011/10/18/2216272.html
- 5大主流BI工具