数据仓库建设Best Pratice学习
學前準備
數據倉庫是什么?
從字面上理解,說白了就是把數據存在一個地方,類似于現實生活中的倉庫,之所以叫數據倉庫,也是由于它的一些特性
數據倉庫的作用,可以分為以下幾點:
-
存儲:數據倉庫將接收和存儲來自多個數據源的數據。
-
處理:ETL。
-
訪問:為企業的分析和決策提供支持。
數據倉庫的特點:
- 面向主題,基本的主題比如銷量、用戶。而普通數據庫一般面向事務,比如用戶下訂單、用戶注冊登錄
- 數據倉庫是集成的,數據來源于分散的操作型數據,將數據進行ETL之后才能進入數據倉庫
學習數倉,要學些什么?
- 數據倉庫的基礎理論
- 別人是怎么建數倉的
- 為什么這樣建設數倉,為什么這樣定義數倉的層級
- 數倉的理論知識由淺入深有哪些
學成數槍之后,我要會做些什么,掌握了什么能力?
從零開始建設一個數倉,并為企業帶來收益
應該從哪些資料中學習 ?
書:《阿里巴巴大數據建設指南》
網站:正在收集
具體要學些什么,學習的順序?
每一步的學習具體要用到哪個資料?
可以用網上找到的數倉建設指南,最好尋找類似工作中使用的數倉,結合自己在工作中的理解,縮小學習資料的范圍
數據倉庫學習
一. 為什么要建設數倉
其實不建設數倉,也可以在業務型數據庫中完成數據分析,支撐業務決策,但是業務型數據庫有以下缺點:
- 業務型數據庫為開發和操作而建立主要面向的用戶是C端用戶和開發人員,不適合數據分析
- 數據流轉不清晰,使用三范式建模而不是維度建模
- 數據質量不可預估,可能存在許多臟數據
- 查詢速度慢,OLTP型數據庫不適合查詢超大數據量
而數據倉庫的特點就是適合分析業務,下面是業務數據庫和數據倉庫的對比
?二. 數據倉庫基礎理論
維度建模:維度建模從分析決策的需求出發構建模型,為分析需求服務(和數倉的特點相同,所以適合數據倉庫建模),主要由事實表和維度表兩種類型構成,典型代表是星型模型
三范式:??數據庫三大范式通俗解釋
三. 模型的層次結構
1. 數據源層:ODS(Operational Data Store)
ODS 層,是最接近數據源中數據的一層,為了考慮后續可能需要追溯數據問題,因此對于這一層就不建議做過多的數據清洗工作,原封不動地接入原始數據即可,至于數據的去噪、去重、異常值處理等過程可以放在后面的 DWD 層來做。
2. 數據倉庫層:DW(Data Warehouse)
數據倉庫層是我們在做數據倉庫時要核心設計的一層,在這里,從 ODS 層中獲得的數據按照主題建立各種數據模型。
DW 層又細分為?DWD(Data Warehouse Detail)層、DWM(Data WareHouse Middle)層和?DWS(Data WareHouse Servce) 層。
1) 數據明細層:DWD(Data Warehouse Detail)
該層一般保持和 ODS 層一樣的數據粒度,并且提供一定的數據質量保證。DWD 層要做的就是將數據清理、整合、規范化,臟數據都會被處理。
同時,為了提高數據明細層的易用性,該層會采用一些維度退化手法,將維度退化至事實表中,減少事實表和維表的關聯。
另外,在該層也會做一部分的數據聚合,將相同主題的數據匯集到一張表中,提高數據的可用性 。
2) 數據中間層:DWM(Data WareHouse Middle)
該層會在 DWD 層的數據基礎上,數據做輕度的聚合操作,生成一系列的中間表,提升公共指標的復用性,減少重復加工。
直觀來講,就是對通用的核心維度進行聚合操作,算出相應的統計指標。
在實際計算中,如果直接從 DWD 或者 ODS 計算出寬表的統計指標,會存在計算量太大并且維度太少的問題,因此一般的做法是,在 DWM 層先計算出多個小的中間表,然后再拼接成一張 DWS 的寬表。由于寬和窄的界限不易界定,也可以去掉 DWM 這一層,只留 DWS 層,將所有的數據再放在 DWS 亦可。
3) 數據服務層:DWS(Data WareHouse Servce)
DWS 層為公共匯總層,會進行輕度匯總,粒度比明細數據稍粗,基于 DWD 層上的基礎數據,整合匯總成分析某一個主題域的服務數據,一般是寬表。DWS 層應覆蓋 80% 的應用場景。又稱數據集市或寬表。
按照業務劃分,如主題域流量、訂單、用戶等,生成字段比較多的寬表,用于提供后續的業務查詢,OLAP 分析,數據分發等。
一般來講,該層的數據表會相對比較少,一張表會涵蓋比較多的業務內容,由于其字段較多,因此一般也會稱該層的表為寬表。
3. 數據應用層:APP(Application)
在這里,主要是提供給數據產品和數據分析使用的數據,一般會存放在 ES、 PostgreSql、Redis 等系統中供線上系統使用,也可能會存在 Hive 或者 Druid 中供數據分析和數據挖掘使用。比如我們經常說的報表數據,一般就放在這里。
4. 維表層(Dimension)
如果維表過多,也可針對維表設計單獨一層,維表層主要包含兩部分數據:
高基數維度數據:一般是用戶資料表、商品資料表類似的資料表。數據量可能是千萬級或者上億級別。
低基數維度數據:一般是配置表,比如枚舉值對應的中文含義,或者日期維表。數據量可能是個位數或者幾千幾萬。
總結
以上是生活随笔為你收集整理的数据仓库建设Best Pratice学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Pratice Of Concurren
- 下一篇: OSG学习之路(一)osg各个库的用途