一、文章概述
本文主要介紹多年來大數據小夥伴們一直在探討的問題,數據倉庫分層的必要性。
本文主要是探討數據倉庫分層的意義,給剛剛接觸數倉的同學一些提示,行業大牛就不要看了。
為什麼要分層,在數據建設初期,為了滿足業務方的需求,大部分開發同學簡單粗暴的直接訪問底層數據,用SQL計算出業務指標。各種重複計算,造成嚴重的資源浪費。分層的價值,分層可以是數據血緣關係更加清晰。成本分攤,通過數據分層和數據主題建設,清晰明瞭的規劃處各個業務方佔用數據存儲情況,對日後資源申請,數據生命週期管理提供強有力的數據依據。二、為什麼要分層
數據從繁多的業務DB數據、埋點日誌、外站數據等形形色色的異構數據源中經過各種ETL變換,到最終的報表、儀表盤、API、OLAP等,需要讓用戶看到統一一致性的數據。針對這些常規的需求,我們需要在做數據管理的時候,能有清晰的血緣關係,明確的權限管理,這樣才能對數據有一個合理的把控能力。主要考慮一下幾個原因:
三、分層的價值
1.清晰的數據組織形式【易維護】
數據倉庫擁有得天獨厚的數據組織形式,能夠提供非常完善的數據體系,數據結構,清晰的數據分類和分層機制。所有數據在進入數據倉庫之前,需要做數據清晰、數據規範化、數據過濾等操作,避免原始數據的雜亂無章。後續在數據中臺中,以清晰的數據脈絡和數據主題對外提供簡單一致性查詢服務。
2.高效率數據查詢【時間短】
數據倉庫合理的分層大大縮減了數據訪問時間,在數據倉庫體系中,建立一個合理的數據中臺,數據中臺作為一個按業務場景分層的數據集合,所有信息都可以從數據中臺出。一旦數據中臺建設完畢,數據可以按照數據血緣關係初步生成。從數據應用角度來看,使用數據中臺去建立數據集市可以大大提高查詢效率,因此數據中臺利於實現複雜的業務需求,提高數據統計的效率。
3.保證數據一致性【指標一致】
良好的數據中臺,能保證數據統一由數據中臺出,方便構建合理的指標庫(通過版本、規則責任人等信息構建一致性的指標庫),以保證公司內部核心指標的一致性。
4.數據生命週期管理【節省資源】
通過合理的數據倉庫分層,只需要確保底層的ODS保留歷史全量數據,其他層級數據可以根據重要程度,佔用空間大小等諸多因素合理劃分數據中間表的生命週期。
四、成本分攤
通常情況下,每個大型互聯網公司都會由大數據部門統一管理數據倉庫,大數據部門只是負責管理數據,並不是數據的所有者。在數據暴增的互聯網時代,每天都有大量的日誌入庫,對數據進行合理的分層和主題劃分,能夠清晰的明確各個業務團隊的數據佔用硬盤情況,方便評估每條業務線每年的數據增幅;在後期申請服務器資源時,合理的把成本分攤到各個業務方。方便公司機器成本分攤。