文章目錄
數據倉庫理論介紹:
數據倉庫是一個面向主題的,集成的,非易失的且隨時間變化的數據集合前端
一:數據倉庫的四大特色:
1):面向主題:
- 主題(Subject) 是在較高層次上企業信息系統中的數據進行綜合,歸類和分析利用的一個抽象概念。
- 每個主題基本對應一個宏觀的分析領域
- 它是對應企業中某一宏觀分析領域所涉及的分析對象
提取主題:
- 一個面向事務處理的商場數據庫系統,其數據模式:
採購子系統:
- 訂單
- 訂單細則
- 供應商
銷售子系統:
- 顧客`
- 銷售
庫存管理子系統:
- 領料單
- 進料單
- 庫存
- 庫房
人事管理子系統:
- 員工
- 部門
2):集成
- 集成性是指數據倉庫中數據必須是一致的
- 數據倉庫的數據是從原有的分散的多個數據庫,數據文件和數據段中抽取來的
- 數據來源可能既有內部數據又有外部數據
- 集成方法
- 統一:消除不一致的現象
- 綜合:對原有數據進行綜合和計算
3):非易失
- 數據倉庫中的數據是通過抽取而造成的分析型數據
- 不具備原始性
- 主要供企業決策分析之用
- 執行的主要是查詢操做,通常狀況下不執行更新操做
- 一個穩定的數據環境也有利於數據分析操做和決策的制訂
4):隨時間變化
- 數據倉庫以維的形式對數據進行組織,時間維是數據倉庫很重要的一個維度
- 不斷增長新的數據內容
- 不斷刪去舊的數據內容
- 更新與時間有關的綜合數據
二:數據倉庫和數據庫的區別
數據庫 | 數據倉庫 | |
---|---|---|
本質 | 數據的集合 | 數據的集合 |
定位 | 事務處理OLTP | 數據分析OLAP |
面向羣體 | 前端用戶 | 管理人員 |
操做 | 增刪改查 | 查詢 |
數據粒度 | 事件記錄 | 維度 |
表結構 | 3NF | 星型、雪花 |
三:OLTP和OLAP的區別:
- 聯機事務處理OLTP
- On-line Transaction Processing
- OLTP是傳統的關係型數據庫的主要應用
對比屬性 | OLTP | OLAP |
---|---|---|
讀特性 | 每次查詢只返回少許記錄 | 對大量記錄進行彙總 |
寫特性 | 隨機、低延時寫入用戶的輸入 | 批量導入 |
使用場景 | 用戶,Java EE項目 | 內部分析師,爲決策提供支持 |
數據表徵 | 最新數據狀態 | 隨時間變化的歷史狀態 |
數據規模 | GB | TB到PB |
四:有哪些數據倉庫架構?
lnmon架構–範式建模:
ER建模:
lnmon提出–mysql
從全企業的高度設計的一個3NF模型redis
Inmon模型將模型劃分爲三個層次:sql
- ERD–Entity Relationship Diagram 實體關係圖層
- DIS–Data Item Set 數據項集層
- PM–Physical Model 物理模型
Data Vault建模:
Dan Linstedt提出–數據庫
ER模型的衍生,爲了實現數據的整合數據結構
強調可審計的基礎數據層架構
基於主題將企業數據結構化組織echarts
Data Vault組成:
- Hub:企業的核心業務實體
- Link:表明Hub之間的關係
- Satellite:是Hub的詳細描述內容
Anchor建模:
Lars.Ronnback提出–oop
一個高度可擴展的模型,核心是全部的擴展知識添加而不是修改。ui
模型規範升級成6NF,變成K-V結構化模型
Anchor模型組成:
- Anchors:表明業務實體,且只有主鍵
- Attributes:相似Satellite,更規範,所有K-V化
- Ties:Anchors之間的關係,相似Link
- Knots:表明可能在多個Anchors中公用的屬性的提煉
Kimball架構–維度建模:
Kimball提出–
是一種自上而下的建模方式,從分析決策的需求出發構建模型,關注如何更快速的完成需求分析,
維度建模數據倉庫模型構建過程:
選擇業務流程
- 確認哪些業務處理流程是數據倉庫應該覆蓋的
- 記錄方式
- 純文本
- 使用業務流程建模標註(BPMN)方法
- 使用同一建模語言(UML)
聲明粒度
- 肯定事實中表示的是什麼
- 選擇維度和事實前必須聲明粒度
- 建議從原始粒度數據開始涉及
- 不一樣的事實能夠有不一樣的粒度
確認維度
- 說明事實表的數據從哪裏採集來的
- 典型的維度都是名詞
- 維度表存儲了某一維度的全部相關數據
確認事實
- 識別數字化的度量,構成事實表的記錄
- 和系統的業務用戶密切相關
- 大部分事實表的度量都是數字類型
混合型架構:
如今我在的公司主流使用Kimball的維度建模方式,兩種架構各有優缺點,根據不一樣需求使用不一樣的架構完成。
數據倉庫的解決方案:
數據採集
- flume,sqoop,logstash,datax
數據存儲
- mysql,hdfs,hbase,redis,mongoDB
數據計算
- hive,tez,spark,flink,storm,impala
數據可視化
- tableau,echarts,superset,quickbi,datav
任務調度
- oozie,azkaban,crontab