
來源:資料社 作者:資料一哥 編輯:資料一哥
全文共1404個字,建議閱讀4分鐘
大家好,我是一哥,
今天跟大家聊一聊數倉為什么分層?
01
經典的數倉分層
首先跟大家聊一個經典的數倉分層結構,主要包括ODS、DWS、DW、APP四層,

ODS:抽取的原始業務資料,結構一般和原始業務資料庫表結構或者抽取的業務日志資料結構保持一致,一句話:從業務系統增量抽取,資料不做清洗轉換,與業務系統資料模型保持一致,
DWS:根據ODS層,增加一些維度資訊,過濾一些例外資料,為DW層提供來源明細資料,提供業務系統細節資料的長期沉淀,為未來分析類需求的擴展提供歷史資料支撐,
DW:模型層,根據DWS層資料,按各個業務需求,以某個維度ID進行粗粒度匯總聚合,此層一般會根據數倉涉及的業務發展或者主資料的建立等,抽象出一些公用的聚合匯總模型
APP:應用層/指標層/報表層,每個公司的叫法不一樣,一般指根據特定的某個應用或者報表進行的資料指標開發匯總,
02
數倉為什么分層
那么為什么資料倉庫會有分層呢?
每多一層不就會多一些開發作業嗎?還會經常有多層資料重復?不分層可不可以?
也許上面這些問題會困擾你,可能還會有人說,我來公司的時候已經有開發規范了,不分層不行!
其實資料倉庫分層原因可以概括為以下4個方面:

用空間換時間:數倉的發展已經幾十年了,在大資料技術出現之前,我們一般采用Oracle等一些關系型資料庫來做數倉,但隨著資料量的發展,特別是電信和銀行業務的快速發展(那時候互聯網企業還沒起來),在進行一個數倉應用開發程序中,我們需要分很多步驟來進行,所以會考慮用空間來換時間,包括現在市面上也會有一些用空間換時間這樣的OLAP產品,
減少重復開發:可以把一些指標用到的匯總資料進行抽象,建立一個或者多個模型,這些模型可以支撐我們建立多個數倉報表,這一步需要對業務非常了解,不然就會出現上面問題說的“ 還會經常有多層資料重復?”
復雜的問題簡單化:做過傳統數倉的都知道,以前Oracle的存盤程序會寫幾千行,所以現在我們一般很少寫幾千行的業務ETL邏輯了,而是分為多個ETL程序,從明細層到應用層進行邏輯拆解,中間也會進行一些邏輯合并,形成模型層,
資料安全:通過分層,可以更方便地對不同層,不同的資料模型進行權限管理,特定業務場景下,對不同的開發人員和業務人員屏蔽一些敏感的資料,
03
數倉分層的模板
我們可以看到現在網上有很多數倉建模的規范,那么到底有沒有一套萬能的規范模板,直接拿來就能用呢?
每個公司的業務發展都不盡相同,不能完全套搬一些規范,在建立數倉之前是要對自己公司的業務進行梳理,包括業務種類、資料量、需求量等,也許公司的資料量本來就不大,而且業務比較單一,那么明細層(DWS)可以不要呀,直接通過原始資料層來建立模型匯總層,
規范是給大家拓展思路參考的,數倉的開發建設本來就是和業務強關聯的,開發效率提升了,分析人員用著模型說好了,業務應用人員用著說好了,那就可以了,

詳解如何在數倉中管理元資料(文末彩蛋~)

「數倉面試」如何確定主題域?

企業級資料倉庫建設最新版(附16頁檔案)
公眾號推送規則變了
點擊上方公眾號名片,收藏公眾號,不錯過精彩內容推送!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431066.html
標籤:其他
