「數據倉庫篇」數據倉庫分層的必要性

一、文章概述

本文主要介紹多年來大數據小夥伴們一直在探討的問題,數據倉庫分層的必要性。


本文主要是探討數據倉庫分層的意義,給剛剛接觸數倉的同學一些提示,行業大牛就不要看了。

  • 為什麼要分層,在數據建設初期,為了滿足業務方的需求,大部分開發同學簡單粗暴的直接訪問底層數據,用SQL計算出業務指標。各種重複計算,造成嚴重的資源浪費。
  • 分層的價值,分層可以是數據血緣關係更加清晰。
  • 成本分攤,通過數據分層和數據主題建設,清晰明瞭的規劃處各個業務方佔用數據存儲情況,對日後資源申請,數據生命週期管理提供強有力的數據依據。


二、為什麼要分層

數據從繁多的業務DB數據、埋點日誌、外站數據等形形色色的異構數據源中經過各種ETL變換,到最終的報表、儀表盤、API、OLAP等,需要讓用戶看到統一一致性的數據。針對這些常規的需求,我們需要在做數據管理的時候,能有清晰的血緣關係,明確的權限管理,這樣才能對數據有一個合理的把控能力。主要考慮一下幾個原因:

  1. 空間換時間:通過建設多層數據模型供用戶使用,避免用戶直接操作底層操作型數據,可以更高效的訪問數據。
  2. 清晰的數據血緣關係:方便各個業務團隊,在某個業務數據出現問題,或者是梳理數據邏輯的時候,能夠清晰準確的找到自己想要的表。
  3. 減少數據重複計算:規劃數據分層,有條件的公司可以做數據中臺,提煉出通用性的中間表,減少重複計算。
  4. 複雜問題簡單化:將一個需要關聯多個業務表才能產出結果的業務邏輯,分成多步計算,這樣可以將複雜的問題簡單化,這樣當每一層數據出問題或者修改業務邏輯時,不用修復所有的數據,只需要在本層以及下級依賴中進行相關操作。
  5. 數據脫敏:在數據的最原始層對相關的業務數據進行數據脫敏,這樣後續的依賴的數據都已經做了脫敏操作,必須關鍵數據暴露。
  6. 便於處理業務的變化:隨著業務的變化,只需要調整底層的數據,數據中臺、數據集市等應用型層級對業務調整0感知。


三、分層的價值

1.清晰的數據組織形式【易維護】

數據倉庫擁有得天獨厚的數據組織形式,能夠提供非常完善的數據體系,數據結構,清晰的數據分類和分層機制。所有數據在進入數據倉庫之前,需要做數據清晰、數據規範化、數據過濾等操作,避免原始數據的雜亂無章。後續在數據中臺中,以清晰的數據脈絡和數據主題對外提供簡單一致性查詢服務。


2.高效率數據查詢【時間短】

數據倉庫合理的分層大大縮減了數據訪問時間,在數據倉庫體系中,建立一個合理的數據中臺,數據中臺作為一個按業務場景分層的數據集合,所有信息都可以從數據中臺出。一旦數據中臺建設完畢,數據可以按照數據血緣關係初步生成。從數據應用角度來看,使用數據中臺去建立數據集市可以大大提高查詢效率,因此數據中臺利於實現複雜的業務需求,提高數據統計的效率。


3.保證數據一致性【指標一致】

良好的數據中臺,能保證數據統一由數據中臺出,方便構建合理的指標庫(通過版本、規則責任人等信息構建一致性的指標庫),以保證公司內部核心指標的一致性。


4.數據生命週期管理【節省資源】

通過合理的數據倉庫分層,只需要確保底層的ODS保留歷史全量數據,其他層級數據可以根據重要程度,佔用空間大小等諸多因素合理劃分數據中間表的生命週期。


四、成本分攤

通常情況下,每個大型互聯網公司都會由大數據部門統一管理數據倉庫,大數據部門只是負責管理數據,並不是數據的所有者。在數據暴增的互聯網時代,每天都有大量的日誌入庫,對數據進行合理的分層和主題劃分,能夠清晰的明確各個業務團隊的數據佔用硬盤情況,方便評估每條業務線每年的數據增幅;在後期申請服務器資源時,合理的把成本分攤到各個業務方。方便公司機器成本分攤。


分享到:


相關文章: