?關于數據倉庫的概念、原理、建設方面,已經有很多內容和經典書籍可以參考。在本文中,我更想討論企業數據倉庫項目中的架構和組件工具問題。
數據倉庫可以被簡單地描述為通過數據集成工具連接原始數據和分析界面數據庫的存儲機制。它管理企業大量的數據集,提供轉換、移動和展現給終端用戶的功能。有許多方法可以擴展數據倉庫的能力,但我們將重點討論最基本的問題。在不考慮過多技術細節的情況下,整個架構可以被分為4個層次:
1. 原始數據層(數據源)
2. 數據倉庫架構形態
3. 數據的采集、收集、清洗和轉換
4. 應用分析層
單層架構(直連)
大多數情況下,數據倉庫是一個關系型數據庫,包含允許多維數據的模塊,或者分為多個易于訪問的多主題信息域。最簡單的數據倉庫只有一層架構。
單層架構意味著數據倉庫與分析接口直接連接,終端用戶可以直接查詢。但是簡單也意味著有其弊端和適用性:
傳統上,數據倉庫的存儲從100GB起,直接連接可能導致查詢速度慢,因為需要直接從數據倉庫準確地查詢數據,或者是準確地輸入數據,這對數據庫和前端BI工具的性能要求相當高,基本性能不會太高。
此外,在處理復雜維度分析時,性能也受到限制,由于其緩慢性和不可預測性,很少應用于大型數據平臺。要執行高級數據查詢,數據倉庫應該在低級實例下被擴展以簡化數據查詢。
兩層數據架構(數據集市層)
兩層架構是在前端應用層和EDW層增加了數據集市層。數據集市是包含特定主題域信息的低級別存儲庫。簡而言之,它是一個在特定主題(例如銷售、運營、市場等)下延伸EDW的較小數據庫。
這種方式解決了部門級數據查詢和分析的問題,每個部門更容易訪問所需的數據,因為每個集市僅包含給定域信息。此外,數據集市限制了終端用戶對數據的訪問范圍,并設置了數據權限控制。但是創建數據集市層需要額外的硬件資源,并與數據平臺的其他數據庫集成。
三層架構(OLAP)
在數據集市層之上,我們通常會使用聯機分析(OLAP)處理多維數據集(cube)。OLAP數據集是一類特定數據庫,可以從多維度描述數據。關系型數據庫只能表示二維數據,而OLAP允許在多維度下編譯數據并在維度之間移動。
OLAP專門用于維度建模數據分析,并通過BI以圖表方式展示OLAP的結果。
OLAP的業務價值在于允許對數據進行多維度分析,以提供對所有企業數據或特定數據集市的訪問。現在,它已經成為主流的架構應用。
以下是最廣泛使用的架構體系結構圖,由頂層、中層和底層組成。
底層:數據倉庫服務器的數據庫是底層,通常是一個關系型數據庫系統,使用后端工具清潔、轉換和加載數據到該層。
中間層:數據倉庫中的中間層是使用ROLAP或MOLAP模型實現的OLAP服務器。對用戶來說,這個應用程序層顯示數據庫的抽象視圖,同時也充當最終用戶和數據庫之間的中介。
頂層:頂層是前端應用層,連接數據倉庫并從數據倉庫獲取數據或通過API獲取數據。常見的應用包括數據查詢、報表制作、BI數據分析、數據挖掘和其他應用開發。
根據功能應用和技術架構,下面是一張中大型企業的詳細數據倉庫架構圖。
數據倉庫的四個核心組件是:底層源數據庫(數據存儲方案)、ETL、前端應用和OLAP服務。
數據倉庫數據庫
底層的數據倉庫服務器通常是一個關系數據庫系統(各種表關聯的SQL統計會更方便一些,非關系型數據庫在這方面還有所區別)。常用的方案有Oracle、DB2、SQLServer以及Essbase、Greenplum、Teradata等專業數據倉庫解決方案。
1. 采用傳統關系型數據庫或經過功能擴展的MPP數據庫
- 傳統的關系型數據庫包括:Oracle、MySQL、DB2。
- 大規模并行處理數據庫包括:Vertica、Teradata(商業)、Greenplum(開源)。
Teradata在銀行業使用較多,但成本也比較高。我們目前在項目中主要使用Greenplum,它是業界最快且性價比最高的高端數據倉庫解決方案。Greenplum基于PostgreSQL,在2015年開源。國內四大行中有3家在使用,5大物流公司中有4家在使用。很多公司正從Teradata遷移到Greenplum。
2. 大數據平臺架構:Hadoop+Hive
這個方案非常通用,通常的組合是:TB級數據使用PostgreSQL,百TB級數據使用Greenplum,PB級以上的數據使用Hadoop。
下面是一個傳統數據倉庫架構、Greenplum和Hadoop大數據平臺的對比圖。
我們專注高端建站,小程序開發、軟件系統定制開發、BUG修復、物聯網開發、各類API接口對接開發等。十余年開發經驗,每一個項目承諾做到滿意為止,多一次對比,一定讓您多一份收獲!