OLTP 與 OLAP
OLTP 聯機事務處理
OLTP是傳統關系型數據庫的主要應用,主要用於日常事物、交易系統的處理
1、數據量存儲相對來說不大
2、實時性要求高,需要支持事物
3、數據一般存儲在關系型數據庫 (oracle 或 mysql 、postgresql中)
OLAP 聯機分析處理
OLAP是數據倉庫的主要應用,支持復雜的分析查詢,側重決策支持
1、實時性要求不是很高, ETL 一般都是 T+1 的數據;
2、數據量很大;
3、主要用於分析決策;
清晰數據結構:每一個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解
臟數據清洗:屏蔽原始數據的異常
屏蔽業務影響:不必改一次業務就需要重新接入數據
數據血緣追蹤:簡單來講可以這樣理解,我們最終給業務呈現的是能直接使用的一張業務表,但是它的來源有很多,如果有一張
來源表出問題了,我們希望能夠快速准確地定位到問題,並清楚它的危害范圍。
減少重復開發:規范數據分層,開發一些通用的中間層數據,能夠減少極大的重復計算。
把復雜問題簡單化。將一個復雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。便於維護數據
的准確性,當數據出現問題之后,可以不用修復所有的數據,只需要從有問題的步驟開始修復。
邏輯分層
數倉分層,一般按ods->dw->dm整體架構。不同的企業,不同的業務場景,有衍生出不同的分層架構模式。例如經典四層架構:ods->dwd->dws-ads,bdl->fdl->gdl->adl等。
分層依據
分層的依據在ods、da、dim層一般無歧義,關鍵在dw層的分層依據,也是數據倉庫分層建設的核心。
每層划分的依據如下:
- ods層:存放原始數據信息,原則上不進行任何的數據清晰,和數據源保持一致。
- dw層:數據公共層,是數倉建設的重點,一般是日志子表和一些寬表,主要完成數據的清洗、轉換等
- dm層:數據集市層,是最直接體系數據資產的層,一般是匯總數據,現在已經逐步弱化,面向挖掘、數據分析等
- da層:數據應用層,高度匯總數據,主要用於報表展示。
技術選型,傳統數倉一般以Oracle、greenplum、teradata 等,互聯網數倉一般以Hadoop生態圈為主,離線以Hive為核心,准實時以spark為核心,實時以flink為核心構建。
數據調研
業務調研,業務側對齊,遵循關系型數據庫建模方式,從概念模型(cdm)->邏輯模型(ldm)->物理模型(pdm)建模套路,是一個從抽象到具體的一個不斷細化完善的分析,設計和開發的過程。
需求調研,現有BI報表需求,統計需求,用戶畫像,推薦系統等數據應用。
數據庫調研,了解數據庫表數據結構、數據形態,全局把握業務流程數據流向,做到真正業務流程和數據結構結合。
04. 主題域划分
業務高度抽象,可先確定企業業務bu模塊,然后可根據概念模型(cdm)進行一級主題划分,確定一致性維度和事實流程,構建總線矩陣。
圖片來源 Kimball《The Data Warehouse Toolkits,- 3rd Edition》
按照kimball大師經典建模四步驟:選擇業務過程->聲明粒度->確定維度->確定事實 進行維度建模。
數倉規范
構建企業級數據倉庫,必不可少的就是制定數倉規范。包括 命名規范,流程規范,設計規范,開發規范 等。無規矩不成方圓,建設數倉也是這樣。
開發規范 示例:
離線數據倉庫技術組件