1.OLAP查詢的基本概念
維度(dimension):常用於where查詢條件,是人們觀察數據的特定角度,是考慮問題時的一類屬性。
度量(measure):即按照維度標記,用於描述事實本身的數據。
事實(Fact):由measure信息組成並按照維度劃分的表稱為Fact表
常用的數據模型包括星型模型和雪花型模型。
事實表與維表:
1.建設方式:
數據流:
數據採集 --- 數據接入 --- 數據存儲 --- 數據建模 --- 數據開發
建設方式:
自上而下, 自下而上。
2.建設流程-建模
需求調研 - 業務建模 - 主題劃分
結構設計 - 邏輯建模 - 層次結構劃分 (分為四層(base ods , mds ,應用數據層 ), 多維建模,大寬表)
結構落地 - 物理建模 - 最終設計文檔 (基於hive建模,具體的表結構, 或者目錄+parquet)
根據業務需求,選擇相應的建模方法進行建模,建模方法如下。
3.建模方法
建模方法:
實體建模(ER)
維度建模 (數據預處理複雜,表連接查詢速度慢)
DataVault
Anchor模型
3.1.實體關係(ER)模型
面向主題的3NF模型。
數據倉庫之父Immon的方法從全企業的高度設計一個3NF模型,用實體加關係描述的數據模型描述企業業務架構,在範式理論上符合3NF,它與OLTP系統中的3NF的區別,在於數據倉庫中的3NF上站在企業角度面向主題的抽象,而不是針對某個具體業務流程的實體對象關係抽象,它更多的是面向數據的整合和一致性治理,正如Immon所希望達到的:“single version of the truth”。
3.2.維度模型
維度模型是數據倉庫領域另一位大師Ralph Kimall所倡導,他的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling,中文名《數據倉庫工具箱》,是數據倉庫工程領域最流行的數倉建模經典。維度建模以分析決策的需求出發構建模型,構建的數據模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。
典型的代表是我們比較熟知的星形模型,以及在一些特殊場景下適用的雪花模型。
步驟:
選擇分析決策的業務過程。
選擇粒度
選擇維度
選擇事實 -分析需要衡量的指標。
3.3.DataVault
DataVault是Dan Linstedt發起創建的一種模型方法論,它是在ER關係模型上的衍生,同時設計的出發點也是為了實現數據的整合,並非為數據決策分析直接使用。它強調建立一個可審計的基礎數據層,也就是強調數據的歷史性可追溯性和原子性,而不要求對數據進行過度的一致性處理和整合;同時也基於主題概念將企業數據進行結構化組織,並引入了更進一步的範式處理來優化模型應對源系統變更的擴展性。
它主要由:Hub(關鍵核心業務實體)、Link(關係)、Satellite(實體屬性) 三部分組成 。
相關書籍: Data Vault modeling Guide
3.4.Anchor模型 ['æŋkɚ]
Anchor模型是由Lars. Rönnbäck設計的,初衷是設計一個高度可擴展的模型,核心思想:所有的擴展只是添加而不是修改,因此它將模型規範到6NF,基本變成了K-V結構模型。
Anchor模型由:Anchors 、Attributes 、Ties 、Knots 組成,相關細節可以參考《AnchorModeling-Agile Information Modeling in Evolving Data Environments》
4.數據倉庫子系統
數據監控 - 保證數據穩定
規範設計 -開發一致性
開發模板和工具 - 提升開發效率 (補數,對數)
元數據--- 解決數據易用
調度系統 - 解決程序依賴
數據監控:
數據未生成
數據總條數異常
某渠道或來源數據異常
數據格式異常
同比環比異常
監控方法:
根據azakaban報警信息
任務執行完後驗證(同比,環比,驗證,報警)
規範設計:
命名規範
數據目錄結構規範
程序目錄規範
處理流程規範
開發模板和工具:
日期獲取,同比環比日期獲取
刪除文件操作
結果數據入庫
補數工具
對數工具
元數據:
基礎元數據
業務元數據(表結構描述為文檔)
調度系統:
azkaban調度
二.建模流程詳解
業務建模 - 主題劃分
層次劃分
BASE層: 存儲每天的增量數據和變更數據,如Canal接收的業務變更日誌, 按天創建分區。
ODS層: 明細數據 (數據清洗,轉換,字段拆分 ),輕粒度的彙總。抽象出來一些通用的維度:時間、ip、id,並根據這些維度做一些統計值。
MDS:分主題: 寬表,維表+事實表
RPT: 生成特徵, 應用的數據 , OLAP 決策分析,數據挖掘。
(一個維表可以給多個事實表使用)
數據倉庫使用kylin做多維數據分析。
數據倉庫可視化:zeppelin + kylin 做可視化。
三.數倉架構
數據倉庫定義:
面向主題: 用戶主題(用戶留存分析,用戶畫像,會員分析),行為主題,訂單主題,庫存主題
集成數據使用於OLAP離線分析場景
用於決策分析,數據挖掘,報表統計
數據倉庫架構:
數據接入:
四.集群運維
部署:
Apache(社區版) (目前使用)
CDH (Cloudera)
HDP (Hortonworks)
五.數據質量監控
1.監控
日常監控、數據對賬、性能監控。
(日常監控最重要)
日常監控內容:
數據落地監控
數據掉0監控:實際擴展一下就是數據量閾值監控,少於某個量就告警
重複數據監控:很多表一定要監控重複數據的,這點至關重要。
關鍵指標監控
數據同比環比監控
這是一些常用的監控,可以做一個規則引擎,上面提到的都做到規則裡面,哪個表需要了就配置一下, 然後執行引擎去執行。
2.日常監控實現
規則引擎:
Sql模板 :提前配置好大部分的sql模板,然後需要監控哪張表了就在這張表配置一下就行。
元數據:Hive表的行數都是在元數據庫中有存放的,我們可以直接通過Hive的元數據來抓取表的每天的數據量的。
自定義模板
執行引擎:
1.sql執行:
提前配置好大部分的sql模板,然後需要監控哪張表了就在這張表配置一下就行。
具體的執行引擎的話可以考慮presto或者spark sql,特別大的任務可以考慮hive。
2.直接獲取數據量
Hive是有元數據管理的,它的元數據庫中是記錄Hive的所有表的記錄數的,這些記錄數可以直接用作數據量相關的監控,比如數據掉零、數據量環比同比、數據量趨勢等。
閱讀更多 從大數據說起 的文章