數倉分層模型架構分享(1)

數據倉庫的作用
整合公司的所有業務,建立統一的數據中心。
分析用戶行爲數據,通過數據挖掘來降低投入成本,提高投入效果。
作爲各個業務的數據源,形成業務數據互相反饋的良性循環。
提供數據報表,用於公司的決策支持等等。

數據倉庫的架構

數據採集層:數據採集層的任務就是把數據從各種數據源中採集和存儲到數據庫上,期間有可能會做一些ETL(抽取extra,轉化transfer,裝載load )操作。數據源種類可以有多種:
日誌:所佔份額最大,存儲在備份服務器上 業務數據庫:如Mysql、Oracle 來自HTTP/FTP的數據:合作伙伴提供的接口 其他數據源:如Excel等需要手工錄入的數據

數據存儲與分析
HDFS是大數據環境下數據倉庫/數據平臺最完美的數據存儲解決方案。
離線數據分析與計算,也就是對實時性要求不高的部分,Hive是不錯的選擇。
使用Hadoop框架自然而然也提供了MapReduce接口,如果可以開發Java,或者對SQL不熟,那麼也可以使用MapReduce來做分析與計算。
Spark性能比MapReduce好很多,同時使用SparkSQL操作Hive。

數據共享
前面使用Hive、MR、Spark、SparkSQL分析和計算的結果,還是在HDFS上,但大多業務和應用不能直接從HDFS上獲取數據,那麼就需要一個數據共享的地方,使得各業務和產品能方便的獲取數據。 這裏的數據共享,其實指的是前面數據分析與計算後的結果存放的地方,其實就是關係型數據庫和NOSQL數據庫

數據應用
報表
:報表所使用的數據,一般也是已經統計彙總好的,存放於數據共享層。
接口:接口的數據都是直接查詢數據共享層即可得到。
即席查詢:即席查詢通常是現有的報表和數據共享層的數據並不能滿足需求,需要從數據存儲層直接查詢。一般都是通過直接操作SQL得到。

數據倉庫的要求
高效率:數據倉庫的分析數據一般分爲日、周、月、季、年等,可以看出,以日爲週期的數據要求的效率最高,要求24小時甚至12小時內,客戶能看到昨天的數據分析。由於有的企業每日的數據量很大,如果數據倉庫設計的不好,需要延時一到兩天才能顯示數據,這顯然是不能出現這種事情的。
高質量:數據倉庫所提供的各種信息,肯定要準確的數據。數據倉庫通常要經過數據清洗,裝載,查詢,展現等多個流程而得到的,如果複雜的架構會有更多層次,那麼由於數據源有髒數據或者代碼不嚴謹,都可以導致數據不準確或者有錯誤,如果客戶看到錯誤的信息就可能導致分析出錯誤的決策,造成損失經濟的損失。
高擴展性:之所以有的大型數據倉庫系統架構設計複雜,是因爲考慮到了未來3-5年的擴展性,因爲如果在未來需要擴展一些新的功能了,就可以不用重建數據倉庫系統,就能很穩定運行。因爲重建一個數據倉庫是比較耗費人力和財力。可擴展性主要體現在數據建模的合理性。
爲了達到上述的要求,建立起一個高效率、高數據質量、良好的可擴展性,再加上爲了提高建倉的速度,根據在實際生產環境中的經驗的總結,於是數據倉庫需要分層。

數據倉庫分層的原因
1、用空間換時間,通過數據預處理提高效率,通過大量的預處理可以提升應用系統的用戶體驗(效率),但是數據倉庫會存在大量冗餘的數據.
2、增強可擴展性,方便以後業務的變更。如果不分層的話,當源業務系統的業務規則發生變化整個數據倉庫需要重建,這樣將會影響整個數據清洗過程,工作量巨大。
3、通過分層管理來實現分步完成工作,簡化數據清洗的過程,使每一層處理邏輯變得更簡單。因爲把原來一步的工作分到了多個步驟去完成,相當於把一個複雜的工作拆成了多個簡單的工作,把一個大的黑盒變成了一個白盒,每一層的處理邏輯都相對簡單和容易理解,這樣我們比較容易保證每一個步驟的正確性,當數據發生錯誤的時候,往往我們只需要局部調整某個步驟即可。

數據倉庫具體的分層
標準的數據倉庫分層:ods(臨時存儲層),pdw(數據倉庫層),mid(數據集市層),app(應用層)。
ods:歷史存儲層,它和源系統數據是同構的,而且這一層數據粒度是最細的,這層的表分爲兩種,一種是存儲當前需要加載的數據,一種是用於存儲處理完後的數據。
pdw:數據倉庫層,它的數據是乾淨的數據,是一致的準確的,也就是清洗後的數據,它的數據一般都遵循數據庫第三範式,數據粒度和ods的粒度相同,它會保存bi系統中所有歷史數據。
mid:數據集市層,它是面向主題組織數據的,通常是星狀和雪花狀數據,從數據粒度來講,它是輕度彙總級別的數據,已經不存在明細的數據了,從廣度來說,它包含了所有業務數量。從分析角度講,大概就是近幾年。
app:應用層,數據粒度高度彙總,倒不一定涵蓋所有業務數據,只是mid層數據的一個子集。


補充
數據緩存層:用於存放接口方提供的原始數據的數據庫層,此層的表結構與源數據保持基本一致,數據存放時間根據數據量大小和項目情況而定,如果數據量較大,可以只存近期數據,將歷史數據進行備份。此層的目的在於數據的中轉和備份。

核心數據層:此層的數據在數據緩存層的基礎上做了一定程度的整合,稱之爲數據集市,存儲上仍是關係模型。此層的目的在於進行必要的數據整合爲下一步多維模型做準備。

分析應用層:此層的數據爲根據業務分析需要構造的多維模型數據。數據可以直接用於分析展現。

說明
數據層次的劃分不是固定不變的,可以根據工作當中實際項目的需要進行適當裁剪或者是添加。如果業務相對簡單和獨立,可以將核心數據層與分析應用層進行合併。另外,分析應用的數據可以來自多維模型的數據,也可以來自關係模型數據甚至原始數據。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章