如何構建資料倉儲模型?
資料倉儲模型構建
一、資料倉儲構建需要考慮的問題
與資料庫的單表基於ER模型構建思路不同,其面向特定業務分析的特性,決定了它的構建需要整合多套資料輸入系統,並輸出多業務條線的、整合的資料服務能力,需要考慮更全面的因素,包括:
-
業務需求:從瞭解業務需求著手分析業務特點和業務期望;
-
系統架構:從系統架構和資料分佈、資料特性等角度,分析系統架構設計上是否有問題;
-
邏輯設計:從資料模型邏輯設計出發是否設計合理,是否符合資料庫開發和設計規範等;
-
物理設計:從庫表型別、庫表分割槽、索引、主鍵設計等維度,主要針對效能,可擴充套件性進行物理模型設計審查
二、什麼是數倉的資料模型
資料倉儲模型構建的宗旨能夠直觀地表達業務邏輯,能夠使用實體、屬性及其關係對企業運營和邏輯規則進行統一的定義、編碼和命名,是業務人員和開發人員之間溝通的一套語言,資料倉儲資料模型的作用:
-
統一企業的資料檢視;
-
定義業務部門對於資料資訊的需求;
-
構建資料倉儲原子層的基礎;
-
支援資料倉儲的發展規劃;
-
初始化業務資料的歸屬;
常用資料模型的是關係模型和維度模型,關係模型從全企業的高度設計一個3NF模型的方法,用實體加關係描述的資料模型描述企業業務架構,在正規化理論上符合3NF,其站在企業角度進行面向主題的抽象,而不是針對某個具體業務流程的,它更多是面向資料的整合和一致性治理;
維度建模以分析決策的需求為出發點構建模型,直接面向業務,典型的代表是我們比較熟知的星形模型,以及在一些特殊場景下適用的雪花模型,大多資料倉儲均會採用維度模型建模;
維度建模中的事實表客觀反應整個業務的流程,比如一次購買行為我們就可以理解為是一個事實,訂單表就是一個事實表,你可以理解他就是在現實中發生的一次操作型事件,我們每完成一個訂單,就會在訂單中增加一條記錄,訂單表存放一些維度表中的主鍵集合,這些ID分別能對應到維度表中的一條記錄,使用者表、商家表、時間表這些都屬於維度表,這些表都有一個唯一的主鍵,然後在表中存放了詳細的資料資訊:
如果是採用ER模型,需要設計出一個大寬表,將訂單-商家-地址-時間等資訊囊括在內,比較直觀、細粒度,但也存在設計冗餘,如果資料量很大,對於查詢和檢索將是一個災難;
三、如何構建數倉的資料模型
概念模型設計(業務模型):界定系統邊界;確定主要的主題域及其內容;邏輯模型設計:維度建模方法(事實表、維度表);以星型和雪花型來組織資料;物理模型設計:將資料倉儲的邏輯模型物理化到資料庫的過程;
1、概念模型設計
資料倉儲中資料模型設計順序如上,資料倉儲是為了輔助決策的,與業務流程(Business Process)息息相關,資料模型的首要任務便是選擇業務流程,為資料倉儲的建立提供指導方向,這樣才能反過來為業務提供更好的決策資料支撐,讓資料倉儲價值的最大化,對於每個業務流程,都需要進行獨立的資料建模,將業務系統中的 ER 模型轉化為資料倉儲中的維度資料模型,以便更好的查詢與分析。
2、邏輯模型設計
事實表一般由兩部分組成,維度(Dimension)和度量(Measurement),事實表可以通俗的理解為「什麼人在什麼時間做了什麼事」的事實記錄或者場景上下文,擁有最大的資料量,它是業務流程的核心體現,比如電商場景中的訂單表,其主鍵為一個聯合主鍵,由各個維度的外來鍵組成,外來鍵不能為空值,事實表一般不包含非數字型別欄位,雖然資料量大,但佔用的空間並不大,保證更高的查詢效率。
維度表用於對事實表的補充說明,描述和還原事實發生時的場景,如電商訂單中定義使用者、商品、地址、時間、促銷5個維度,透過這5個維度還原訂單發生時的場景,什麼人在什麼時間在什麼地方購買了什麼商品,以及購買該商品的促銷方式。對於每一個維度而言,都有若干個屬性來描述,比如使用者有性別、年齡、所在地等資訊。這些維度的屬性就是之後資料統計的依據,比如我們可以統計不同性別,不同年齡,不同地區在訂單中的差異,從向使用者制定更精細的營銷策略。
在關係型資料庫三正規化(3NF)設計極力避免資料的冗餘,達到資料的高度一致性,但在資料倉儲中3NF並不是最佳實踐,反而讓系統複雜不已,不利於理解和維護,所以在維度建模中,維度表一般採取反正規化的設計,在一張維度表中扁平化儲存維度的屬性,儘量避免使用外來鍵。
3、物理模型設計
在完成資料倉儲的概念模型和邏輯模型設計之後,物理模型設計就是落地實施環節,根據資料的粒度和對於業務支撐能力將資料進行分層儲存,資料分層儲存簡化了資料清洗的過程,每一層的邏輯變得更加簡單和易於理解,當發生錯誤或規則變化時,只需要進行區域性調整;
ODS層:全稱是Operational Data Store,又叫資料準備層,資料來源層,主要用於原始資料在資料倉儲的落地,這些資料邏輯關係都與原始資料保持一致,在源資料裝入這一層時,要進行諸如業務欄位提取或去掉不用欄位,髒資料處理等等。可以理解為是關係層的基礎資料;
DIM層:Dimension層,主要存放公共的資訊資料,如國家程式碼和國家名,地理位置等資訊就存在DIM層表中,對外開放,用於DWD,DWS和APP層的資料維度關聯。
DWD層:全稱是Data Warehouse Detail,用於源系統資料在資料倉儲中的永久儲存,用以支撐DWS層和DM層無法覆蓋的需求,該層的資料模型主要解決一些資料質量問題和資料的完整度問題,比如商場的會員資訊來與不同表,某些會員的的和資料可能不完整等等問題;
DWS層:全稱是Data Warehouse Service,主要包含兩類彙總表:一是細粒度寬表,二是粗粒度彙總表,按照商場訂單例子,包含基於訂單、會員、商品、店鋪等實體的細粒度寬表和基於維度組合(會員日進場彙總、會員消費彙總、商場銷售日彙總、店鋪銷售日彙總等)的粗粒度彙總表。這層是對外開放的,用以支撐絕大部分的業務需求,彙總層是為了簡化源系統複雜的邏輯關係以及質量問題等,這層是的業務結構容易理解,dws層的彙總資料目標是能滿足80%的業務計算。
其上根據業務需求可以繼續構建ADS層(Application Data Store)和麵向指標和報表的高度彙總層。
案例解讀: 招標採購業務的資料倉儲模型構建
按照資料倉儲的構建思路,順序是概念模型-->邏輯模型-->物理模型,最重要和複雜度較高的是概念模型的設計,需要結合業務,並根據業務特性設計事實表、維度表、頂層資料彙總表;
一、概念模型設計
概念模型需要結合生產系統的ER關係模型,梳理業務邏輯,當前生產交易系統使用的是ORACLE資料庫,將資料分成多個庫:業務庫(包含招標採購專案流程)、主體+組織庫(招標人、投標人、評標專家、代理機構)、財務庫(標書費、平臺服務費、招標保證金、CA辦理費用等),專案表即是一個招標流程表,該表會記錄關於招標過程中的,招標、投標、開標、評標、定標相關的資料:
-
招標:招標流程是招標人發起的,招標人將招標過程委託給代理機構,代理機構會發布招標公告,投標人在報名、響應階段產生資料,響應後需要付投標保證金;
-
投標:投標人給代理機構繳納標書費並下載招標檔案,開標之前需要響應,並繳納投標保證金;發售招標檔案和投標人購買標書後,如果投標人對招標檔案提出質疑,或招標人要修改招標檔案,此時要在規定時間內釋出一個澄清公告。
-
開標:開標一般是線下進行,代理機構把投標人召集到開標室,公開宣讀投標人關於投標人報價、工期、質量、工程專案經理等投標人有實質要求的內容,此階段拆封投標檔案,解密電子的投標檔案;
-
評標:評標一般是線下進行,代理機構把監督人、投標人、專家召集到評標室,專家對投標人資質及投標書打分,分為技術、商務、報價分;
-
定標:專家對投標人綜合打分後,做一個總體排名,排名第1即為中標候選人,評標結束後需要釋出預中標公告,將前3名公佈,公告期間接受社會監督,期間產生的疑問、質疑需要代理機構/招標人澄清,澄清伴隨著澄清公告,若質疑生效則可能廢標和流標(評標成本高,一般不廢標);
-
合同:若預中標釋出後,質疑期間對於預中標候選人無影響,在預中標釋出xxx天后,招標人需要同中標候選人簽訂合同,同時招標人需要退還其他沒有中標單位的保證金;
對於整個流程的梳理和業務瞭解後,客戶更加關注流程的監管預警,以此為準整理一些監管維度:
二、邏輯模型設計
邏輯模型採用上一篇博文提及的維度建模模型,雪花模型,專案ID、投標人ID、招標人ID、代理機構ID、專家ID分別是整個招、投、開、評、定標流程的主要參與主體,資料抽取工具使用kettle:
資料表命名規範:tb_模型層次_主題域_業務域_彙總粒度
kettle命名規範:kt_模型層次_主題域_業務域_彙總粒度
三、物理模型設計
構建ODS-->DWD-->DWS-->ADS的分層模型,這裡ODS只抽取oracle庫中源資料,不做任何清洗和變動,DWD層開始做資料的清洗和資料工程,DWS作輕度彙總,ADS面向應用查詢提供更上層的彙總;以專案和供應商的彙總維度為例,專案流程是模型設計主體,供應商是類似維度表的資料,兩者結合能夠得到業務需要的一些投/中標相關的彙總維度(比如中標率排行、某個專案的投標人的註冊金額相關統計、某投標人參與投標相關統計等):
在專案流程表中(定標流程),將招標人的編號設計在內,定標流程的統計項從該類ADS彙總維度出結果:
資料倉儲的產品
前面講了資料倉儲的價值、構建思路、例項,完成資料倉儲的概念、邏輯、物理模型設計後,數倉的產品選型也是需要考慮的部分,根據資料儲存量、查詢效率、併發能力可以選用MPP數倉和基於Hadoop的分散式數倉等。
一、MPP還是Hadoop
這裡繼續用之前用到的圖講解,資料倉儲的特性是處理溫資料和冷資料,面向業務分析提供偏於離線分析能力,因此一般選用Hadoop+MPP數倉結合的解決方法,Hive能夠提供大批次歷史資料的儲存計算能力,Hbase能夠提供半結構化文件的快速檢索能力,MPP能夠提供強大高壓縮比基礎上的快速查詢能力;
二、MPP數倉特性
在MPP解決方案中目前我已接觸過的是vertica和GP,在teradata實習期間沒有用到td數倉;
數倉的特性是大批次的查詢和索引,少量的改查工作,MPP (Massively Parallel Processing),即大規模並行處理資料庫的一般特性:
① 列式儲存意味著高壓縮比、高IO能力、快速查詢能力、智慧索引(資料寫入時);
② shared nothing意味著節點的相互獨立、資料的冗餘備份;
③ 分散式儲存/計算、儲存/計算的高擴充套件性、高安全;
MPP的架構分為3種,GP是master/slave模式,具備統一的查詢入口(master),vertica是無中心架構,所有節點都提供查詢服務,gbase是儲存/管理雙中心架構;
shared nothing 模式:x86機器構建計算/儲存的高擴充套件叢集,資料拆分多份並備份。shared disk 模式:專用小型機,儲存1份資料。
來自 “ 資料治理體系 ”, 原文作者:資料治理體系;原文連結:https://mp.weixin.qq.com/s/XvgHtPFH4SJvotzJkKCZQQ,如有侵權,請聯絡管理員刪除。
相關文章
- Hive:資料倉儲構建步驟Hive
- 資料倉儲 - ER模型模型
- 構建實時資料倉儲首選,雲原生資料倉儲AnalyticDB for MySQL技術解密MySql解密
- 使用Power BI構建資料倉儲與BI方案
- 《Greenplum構建實時資料倉儲實踐》簡介
- HashData完成1500萬美元融資 加速構建雲原生資料倉儲
- 資料湖+資料倉儲 = 資料湖庫架構架構
- 基於OneData的資料倉儲建設
- 馬蜂窩資料倉儲的架構、模型與應用實踐架構模型
- 資料倉儲 - 星座模型、星型模型和雪花模型的介紹模型
- 企業為什麼要建資料倉儲?
- 資料倉儲架構分層設計架構
- 中小銀行資料倉儲建設 | 最佳實踐
- 最最最全資料倉儲建設指南,速速收藏!!
- 資料倉儲主題域如何劃分
- 資料庫倉庫系列:(一)什麼是資料倉儲,為什麼要資料倉儲資料庫
- 資料倉儲(5)數倉Kimball與Inmon架構的對比架構
- 雲端資料倉儲的模式選型與建設模式
- 滴滴資料倉儲指標體系建設實踐指標
- [數倉]資料倉儲設計方案
- 加快構建資料倉儲 甘肅銀行數字化轉型提速推進
- TDS 四大能力域各顯神通,構建資料湖、資料倉儲一步到位
- 分層架構在資料倉儲的應用架構
- 資料湖 VS 資料倉儲之爭?阿里提出大資料架構新概念:湖倉一體阿里大資料架構
- 為什麼要建資料倉儲,而不是直連資料來源?
- 如何構建準實時數倉?
- 資料倉儲應該用什麼方案——資料倉儲實施方案概述
- 什麼是資料倉儲
- 資料倉儲經驗概念
- 什麼是資料倉儲?
- 資料倉儲建模方法論
- 談談資料湖和資料倉儲
- 資料湖會取代資料倉儲嗎?
- 淺談資料倉儲和大資料大資料
- 美團DB資料同步到資料倉儲的架構與實踐架構
- 阿里雲“萬倉計劃”重磅釋出,助力每個企業構建屬於自己的雲原生資料倉儲阿里
- 資料湖 vs 資料倉儲 vs 資料庫資料庫
- 資料倉儲Build The Data Warehouse(William H.Inmon)學習筆記 --- 第八章、外部資料/非結構化資料與資料倉儲UI筆記