自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

數(shù)倉如何建模?四種方法與實例都在這了

大數(shù)據(jù) 數(shù)據(jù)分析
數(shù)據(jù)倉庫,這個幾乎是所有大數(shù)據(jù)開發(fā)面試必問的話題。比如數(shù)據(jù)倉庫的分層架構?為什么需要數(shù)據(jù)倉庫建模?數(shù)據(jù)倉庫建模的原則是什么?結合業(yè)務舉例說明數(shù)據(jù)倉庫建模的步驟,以及注意事項?什么是緩慢變化維?維度該如何選擇建設,原則是什么,主鍵如何設計等等?

一眾問題搞得小伙伴們死去活來,甚至工作好幾年的小伙伴都沒搞清楚過,尤其是大廠特別愛問這些問題。有些小伙伴甚至覺得這些都是形而上學,不懂這些我不一樣搞了很多年開發(fā)?即使感興趣的買了一本厚厚的數(shù)據(jù)倉庫工具書也看不懂!那么實際數(shù)據(jù)倉庫建模到底是什么,開發(fā)人員該掌握哪些?

1.什么是數(shù)據(jù)倉庫及其前世今生

來一起看個官方定義:數(shù)據(jù)倉庫,英文名稱為DataWarehouse,可簡寫為DW或DWH。數(shù)據(jù)倉庫,是為企業(yè)所有級別的決策制定過程,提供所有類型數(shù)據(jù)支持的戰(zhàn)略集合。它出于分析性報告和決策支持目的而創(chuàng)建。為需要業(yè)務智能的企業(yè),提供指導業(yè)務流程改進、監(jiān)視時間、成本、質量以及控制。

數(shù)據(jù)倉庫之父 Bill Inmon 在 1991 年出版的 Building the Data Warehouse 一書中首次提出了被廣為認可的數(shù)據(jù)倉庫定義。Inmon 將數(shù)據(jù)倉庫描述為一個面向主題的、集成的、隨時間變化的、非易失的數(shù)據(jù)集合,用于支持管理者的決策過程。

簡單點來說,現(xiàn)實情況是一個企業(yè)有很多數(shù)據(jù)源,比如有的業(yè)務數(shù)據(jù)存放在Mysql,PG庫,有的存放在Oracle,有的日志存放在Ftp,Nginx服務器上等,有的是外部采集的爬蟲數(shù)據(jù)等等。

那么對于企業(yè)來說沉淀了這么多數(shù)據(jù),如何將這些數(shù)據(jù)放到一起進行數(shù)據(jù)融合,數(shù)據(jù)分析,給企業(yè)挖掘數(shù)據(jù)價值呢?這些不同數(shù)據(jù)源,不同數(shù)據(jù)存儲格式,不同的數(shù)據(jù)更新周期,如果讓你把企業(yè)這些數(shù)據(jù)融合分析,你怎么辦?

首先,你是不是要把這些不同數(shù)據(jù)按照統(tǒng)一的格式,一定的規(guī)范存儲到一起,然后在通過特定的工具做數(shù)據(jù)計算分析?那么對于企業(yè)來說,把企業(yè)各種數(shù)據(jù)源的數(shù)據(jù)放到一起存儲和計算的地方就叫數(shù)據(jù)倉庫(約定俗稱的叫法),所以本質上數(shù)據(jù)倉庫上融合各個數(shù)據(jù)源,存儲加工數(shù)據(jù)的地方,早期大數(shù)據(jù)沒有發(fā)展起來的時候,企業(yè)數(shù)據(jù)倉庫的載體一般是Oracle,那時候主要給企業(yè)做BI報表(Business Intelligence商業(yè)智能)。

圖片

后來隨著企業(yè)數(shù)字化,互聯(lián)網(wǎng)的發(fā)展,企業(yè)收集到數(shù)據(jù)越來越多,發(fā)現(xiàn)原有的技術框架已經(jīng)滿足不了業(yè)務存儲和分析的需求了。于是乎就有了現(xiàn)在Hadoop生態(tài)為主的數(shù)倉倉庫。

2.數(shù)據(jù)倉庫建模的目的

為什么要進行數(shù)據(jù)倉庫建模?大數(shù)據(jù)的數(shù)倉建模是通過建模的方法更好的組織、存儲數(shù)據(jù),以便在 性能、成本、效率和數(shù)據(jù)質量之間找到最佳平衡點。一般主要從下面四點考慮:

  • 訪問性能:能夠快速查詢所需的數(shù)據(jù),減少數(shù)據(jù)I/O。
  • 數(shù)據(jù)成本:減少不必要的數(shù)據(jù)冗余,實現(xiàn)計算結果數(shù)據(jù)復用,降低大數(shù) 據(jù)系統(tǒng)中的存儲成本和計算成本。
  • 使用效率:改善用戶應用體驗,提高使用數(shù)據(jù)的效率。
  • 數(shù)據(jù)質量:改善數(shù)據(jù)統(tǒng)計口徑的不一致性,減少數(shù)據(jù)計算錯誤 的可能性,提供高質量的、一致的數(shù)據(jù)訪問平臺。

3.常見的建模方法

數(shù)據(jù)倉庫本質是從數(shù)據(jù)庫衍生出來的,所以數(shù)據(jù)倉庫的建模也是不斷衍生發(fā)展的。從最早的借鑒數(shù)據(jù)庫的范式建模,到逐漸提出維度建模,Data Vault模型,Anchor模型等等,越往后建模的要求越高,越需滿足3NF,4NF等。但是對于數(shù)據(jù)倉庫來說,目前主流還是維度建模,會夾雜著范式建模。

數(shù)據(jù)倉庫建模方法論可分為:范式建模、維度建模、Data Vault模型、Anchor模型。

圖片

范式建模(E-R模型)

將事物抽象為“實體”、“屬性”、“關系”來表示數(shù) 據(jù)關聯(lián)和事物描述;實體:Entity,關系:Relationship,這種對數(shù)據(jù)的抽象 建模通常被稱為ER實體關系模型  。

ER模型是數(shù)據(jù)庫設計的理論基礎,當前幾乎所有的OLTP系統(tǒng)設計都采用ER模型建模的方式,且該建模方法需要滿足3NF。Bill Inom提出的數(shù)倉理論,推薦采用ER關系模型進行建模,BI架構提出分層架構,數(shù)倉底層ods、dwd也多采用ER關系模型就行設計。

但是逐漸隨著企業(yè)數(shù)據(jù)的高增長,復雜化,數(shù)倉全部使用ER模型建模顯得越來越不合時宜。為什么呢,因為其按部就班的步驟,三范式等,不適合現(xiàn)代化復雜,多變的業(yè)務組織。

E-R模型建模的步驟(滿足3NF)如下:

  • 抽象出主體  (教師,課程)。
  • 梳理主體之間的關系(一個老師可以教多門課,一門課可以被多個老師教)。
  • 梳理主體的屬性(教師:教師名稱,性別,學歷等)。
  • 畫出E-R關系圖。

圖片

  • 維度建模

維度建模,是數(shù)據(jù)倉庫大師Ralph Kimball提出的,是數(shù)據(jù)倉庫工程領域最流行的數(shù)倉建模經(jīng)典。

維度建模以分析決策的需求出發(fā)構建模型,構建的數(shù)據(jù)模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規(guī)模復雜查詢的響應性能。維度建模是面向分析的,為了提高查詢性能可以增加數(shù)據(jù)冗余,反規(guī)范化的設計技術。

Ralph Kimball提出對數(shù)據(jù)倉庫維度建模,并且將數(shù)據(jù)倉庫中的表劃分為事實表、維度表兩種類型。

1)事實表

在ER模型中抽象出了有實體、關系、屬性三種類別,在現(xiàn)實世界中,每一個操作型事件,基本都是發(fā)生在實體之間的,伴隨著這種操作事件的發(fā)生,會產(chǎn)生可度量的值,而這個過程就產(chǎn)生了一個事實表,存儲了每一個可度量的事件。以電商行業(yè)為例:電商場景:一次購買事件,涉及主體包括客戶、商品、商家,產(chǎn)生的可度量值 包括商品數(shù)量、金額、件數(shù)等:

圖片

         

  • 事實表根據(jù)粒度的角色劃分不同,可分為事務事實表、周期快照事實表、累積快照事實表。注意:這里需要值得注意的是,在事實表的設計時,一定要注意一個事實表只能有一個粒度,不能將不同粒度的事實建立在同一張事實表中。
  • 事務事實表,用于承載事務數(shù)據(jù),通常粒度比較低,它是面向事務的,其粒度是每一行對應一個事務,它是最細粒度的事實表,例如產(chǎn)品交易事務事實、ATM交易事務事實。
  • 周期快照事實表,按照一定的時間周期間隔(每天,每月)來捕捉業(yè)務活動的執(zhí)行情況,一旦裝入事實表就不會再去更新,它是事務事實表的補充。用來記錄有規(guī)律的、固定時間間隔的業(yè)務累計數(shù)據(jù),通常粒度比較高,例如賬戶月平均余額事實表。

累積快照事實表,用來記錄具有時間跨度的業(yè)務處理過程的整個過程的信息,每個生命周期一行,通常這類事實表比較少見。

2)維度表

維度,顧名思義,業(yè)務過程的發(fā)生或分析角度。比如從顏色、尺寸的角度來比較手機的外觀,從cpu、內(nèi)存等較比比較手機性能維。維度表一般為單一主鍵,在ER模型中,實體為客觀存在的事物,會帶有自己的 描述性屬性,屬性一般為文本性、描述性的,這些描述被稱為維度。

比如商品,單一主鍵:商品ID,屬性包括產(chǎn)地、顏色、材質、尺寸、單價等, 但并非屬性一定是文本,比如單價、尺寸,均為數(shù)值型描述性的,日常主要的維度抽象包括:時間維度表、地理區(qū)域維度表等。

案例:某電商平臺,經(jīng)常需要對訂單進行分析,以某寶的購物訂單為例,以維度建模的方式設計該模型。

涉及到事實表為訂單表、訂單明細表,維度包括商品維度、用戶維度、商家維度、區(qū)域維度、時間維度 :

  • 商品維度:商品ID、商品名稱、商品種類、單價、產(chǎn)地等 。
  • 用戶維度:用戶ID、姓名、性別、年齡、常住地、職業(yè)、學歷等 。
  • 時間維度:日期ID、日期、周幾、上/中/下旬、是否周末、是否假期等。

圖片

維度分為:

(1)退化維度(DegenerateDimension)

在維度類型中,有一種重要的維度稱作為退化維度,亦維度退化一說。這種維度指的是直接把一些簡單的維度放在事實表中。退化維度是維度建模領域中的一個非常重要的概念,它對理解維度建模有著非常重要的作用,退化維度一般在分析中可以用來做分組使用。

(2)緩慢變化維(Slowly Changing Dimensions)

維度的屬性并不是始終不變的,它會隨著時間的流逝發(fā)生緩慢的變化,這種隨時間發(fā)生變化的維度我們一般稱之為緩慢變化維(SCD)。比如員工表中的部門維度,員工的所在部門有可能兩年后調(diào)整一次。

3)維度建模模型的分類

 維度建模按數(shù)據(jù)組織類型劃分可分為星型模型、雪花模型、星座模型。

(1)星型模型

星型模型主要是維表和事實表,以事實表為中心,所有維度直接關聯(lián)在事實表上,呈星型分布。

圖片

(2)雪花模型

雪花模型,在星型模型的基礎上,維度表上又關聯(lián)了其他維度表。這種模型維護成本高,性能方面也較差,所以一般不建議使用。尤其是基于hadoop體系構建數(shù)倉,減少join就是減少shuffle,性能差距會很大。

圖片

提示:由上可以看出

星型模型和雪花模型主要區(qū)別就是對維度表的拆分。

對于雪花模型,維度表的涉及更加規(guī)范,一般符合3NF,有效降低數(shù)據(jù)冗余,維度表之間不會相互關聯(lián)。

而星型模型,一般采用降維的操作,反規(guī)范化,不符合3NF,利用冗余來避免模型過于復雜,提高易用性和分析效率,效率相對較高。

(3)星座模型

星座模型,是對星型模型的擴展延伸,多張事實表共享維度表。數(shù)倉模型建設后期,大部分維度建模都是星座模型。

4) 維度建模步驟

維度建模步驟:選擇業(yè)務過程->聲明粒度->確定維度->確定事實。旨在重點解決數(shù)據(jù)粒度、維度設計和事實表設計問題。

圖片

聲明粒度,為業(yè)務最小活動單元或不同維度組合。以共同粒度從多個組織業(yè)務過程合并度量的事實表稱為合并事實表,需要注意的是,來自多個業(yè)務過程的事實合并到合并事實表時,它們必須具有同樣等級的粒度。 

  • DataVault模型

Data Vault是Dan Linstedt發(fā)起創(chuàng)建的一種模型方法論,Data Vault是在ER模型的基礎上衍生而來,模型設計的初衷是有效的組織基礎數(shù)據(jù)層,使之易擴展、靈活的應對業(yè)務的變化,同時強調(diào)歷史性、可追溯性和原子性,不要求對數(shù)據(jù)進行過度的一致性處理。同時設計的出發(fā)點也是為了實現(xiàn)數(shù)據(jù)的整合,并非為數(shù)據(jù)決策分析直接使用。

Data Vault模型是一種中心輻射式模型,其設計重點圍繞著業(yè)務鍵的集成模式。這些業(yè)務鍵是存儲在多個系統(tǒng)中的、針對各種信息的鍵,用 于定位和唯一標識記錄或數(shù)據(jù)。

Data Vault模型包含三種基本結構 :

  • 中心表-Hub :唯一業(yè)務鍵的列表,唯一標識企業(yè)實際業(yè)務,企業(yè)的業(yè)務主體集合 。
  • 鏈接表-Link:表示中心表之間的關系,通過鏈接表串聯(lián)整個企業(yè)的業(yè)務關聯(lián)關系。
  • 衛(wèi)星表- Satellite:歷史的描述性數(shù)據(jù),數(shù)據(jù)倉庫中數(shù)據(jù)的真正載體。

1) 中心表-Hub

圖片

2)鏈接表-Link

圖片

3)衛(wèi)星表- Satellite

圖片

4)Data Vault模型建模流程

  • 梳理所有主要實體
  • 將有入邊的實體定義為中心表
  • 將沒有入邊切僅有一個出邊的表定義為中心表
  • 源苦衷沒有入邊且有兩條或以上出邊的表定義為連接表
  • 將外鍵關系定義為鏈接表

圖片

提示:Hub想像成人體的骨架,那么Link就是連接骨架的韌帶組織, 而satelite就是骨架上的血肉。Data Vault是對ER模型更近一步的規(guī)范化,由于對數(shù)據(jù)的拆解和更偏向于基礎數(shù)據(jù)組織,在處理分析類場景時相對復雜, 適合數(shù)倉低層構建,目前實際應用場景較少。

  • Anchor模型

Anchor是對Data Vault模型做了更近一步的規(guī)范會處理,初衷是為了 設計高度可擴展的模型,核心思想是所有的擴張只添加而不修改,于 是設計出的模型基本變成了k-v結構的模型,模型范式達到了6NF。

由于過度規(guī)范化,使用中牽涉到太多的join操作,目前木有實際案例,僅作了解。

4.四種模型總結

以上為四種基本的建模方法,當前主流建模方法為:ER模型、維度模型。

  • ER模型常用于OLTP數(shù)據(jù)庫建模,應用到構建數(shù)倉時更偏重數(shù)據(jù)整合, 站在企業(yè)整體考慮,將各個系統(tǒng)的數(shù)據(jù)按相似性一致性、合并處理,為 數(shù)據(jù)分析、決策服務,但并不便于直接用來支持分析。缺陷:需要全面梳理企業(yè)所有的業(yè)務和數(shù)據(jù)流,周期長,人員要求高。
  • 維度建模是面向分析場景而生,針對分析場景構建數(shù)倉模型;重點關注快 速、靈活的解決分析需求,同時能夠提供大規(guī)模數(shù)據(jù)的快速響應性能。針對性 強,主要應用于數(shù)據(jù)倉庫構建和OLAP引擎低層數(shù)據(jù)模型。優(yōu)點:不需要完整的梳理企業(yè)業(yè)務流程和數(shù)據(jù),實施周期根據(jù)主題邊界而定,容易快速實現(xiàn)demo。
  • 數(shù)倉模型的選擇是靈活的,不局限于某一種模型方法。
  • 數(shù)倉模型的設計也是靈活的,以實際需求場景為導向。
  • 模型設計要兼顧靈活性、可擴展,而對終端用戶透明性。
  • 模型設計要考慮技術可靠性和實現(xiàn)成本。

5.常用建模工具

建模工具,一般企業(yè)以Erwin、powerdesigner、visio,甚至Excel等為主。也有些企業(yè)自行研發(fā)工具,或使用阿里等成熟套裝組件產(chǎn)品。

責任編輯:武曉燕 來源: 數(shù)倉寶貝庫
相關推薦

2022-10-27 09:50:41

數(shù)據(jù)倉開發(fā)

2014-03-17 09:22:43

Linux命令

2022-09-02 14:29:01

JavaScrip數(shù)組屬性

2022-04-25 21:40:54

數(shù)據(jù)建模

2011-06-22 15:21:08

XML

2023-02-03 08:47:20

職位招聘難題

2020-08-10 00:30:55

備份密碼iPhone移動安全

2009-02-25 09:52:14

類型轉換.NET 強制轉型

2009-03-31 13:12:30

解析XMLJava

2016-06-28 10:19:31

云計算云安全

2010-07-16 13:50:53

Perl哈希表

2009-11-23 15:57:51

PHP偽靜態(tài)

2021-03-10 10:13:39

爬蟲Python代碼

2022-03-29 20:52:07

分析方法用戶

2009-09-17 16:55:58

C#組件設計

2020-01-21 19:15:23

漏洞安全IT

2010-03-18 17:57:37

Java XMLSoc

2010-08-02 16:47:46

Flex

2020-07-24 09:56:12

React開發(fā)數(shù)據(jù)

2014-02-28 10:50:24

Linux命令
點贊
收藏

51CTO技術棧公眾號