數據倉庫的分層,你知道嗎?


數據倉庫更多代表的是一種對數據的管理和使用的方式,它是一整套包括了數據建模、ETL(數據抽取、轉換、加載)以及作用調度等在內的完整的理論體系流程。

數據倉庫在構建過程中通常都需要進行分層處理。業務不同,分層的技術處理手段也不同。分層的主要原因是在管理數據的時候,能對數據有一個更加清晰的掌控。詳細來講,主要有如下幾個原因。

  • 清晰的數據結構 每一個數據分層都有它的作用域,在使用表的時候能更方便地定位和理解。

  • 將復雜的問題簡單化 將一個復雜的任務分解成多個步驟來完成,每一層只處理單一的問題,比較簡單和容易理解。而且便於維護數據的准確性,當數據出現問題之后,可以不用修復所有的數據,只需要從有問題的地方開始修復。

  • 減少重復開發 規范數據分層,開發一些通用的中間層數據,能夠減少極大的重復計算。

  • 屏蔽原始數據的異常 屏蔽業務的影響,不必改一次業務就需要重新接入數據。

  • 數據血緣的追蹤 最終給業務呈現的是一個能直接使用業務表,但是它的來源很多,如果有一張來源表出問題了,借助血緣最終能夠快速准確地定位到問題,並清楚它的危害范圍。

數倉的常見分層一般為三層,即數據操作層、數據倉庫層和應用數據層(數據集市層)。當然根據研發人員經驗或者業務,可以分為更多不同的層,只要能達到流程清晰、方便查數即可。

下面,通過一張圖來展示數據倉庫的分層情況,如圖所示。

 

 

ODS(Operation Data Store 數據准備區)

數據倉庫源頭系統的數據表通常會原封不動的存儲一份,這稱為ODS層,也稱為准備區。它們是后續數據倉庫層加工數據的來源。ODS層數據的主要來源是業務數據庫、埋點日志、其他數據源。

  • 業務數據庫:可使用DataX、Sqoop等工具來抽取,每天定時抽取一次;在實時應用中,可用Canal監聽MySQL的 Binlog,實時接入變更的數據。

  • 埋點日志:線上系統會打入各種日志,這些日志一般以文件的形式保存,可以用 Flume 定時抽取。

  • 其他數據源:從第三方購買的數據、或是網絡爬蟲抓取的數據。

DW(Data Warehouse 數據倉庫層)

該層包含DWD、DWS、DIM層,由ODS層數據加工而成,主要是完成數據加工與整合,建立一致性的維度,構建可復用的面向分析和統計的明細事實表,以及匯總公共粒度的指標。

  • DWD(Data Warehouse Detail 細節數據層),是業務層與數據倉庫的隔離層。以業務過程作為建模驅動,基於每個具體的業務過程特點,構建細粒度的明細層事實表。可以結合企業的數據使用特點,將明細事實表的某些重要維度屬性字段做適當冗余,也即寬表化處理。

  • DWS(Data Warehouse Service 服務數據層),基於DWD的基礎數據,整合匯總成分析某一個主題域的服務數據。以分析的主題為建模驅動,基於上層的應用和產品的指標需求,構建公共粒度的匯總指標事實表。

  • DIM(公共維度層 ),基於維度建模理念思想,建立一致性維度。

  • TMP層 :臨時層,存放計算過程中臨時產生的數據。

ADS(Application Data Store 應用數據層)

該層是基於DW層的數據,整合匯總成主題域的服務數據,用於提供后續的業務查詢等。

數據倉庫層次的划分不是固定不變的,可以根據實際需求進行適當裁剪或者是添加。如果業務相對簡單和獨立,可以將DWD、DWS進行合並。 下面,以第三方支付企業支付寶數據倉庫體系結構為例進行展示,如下圖所示。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM