你的數據倉庫既要有「維度模型設計」也要看「分層架構」

2021-01-12 上海大數據SHData

維度模型設計和分層架構都是數據倉庫必不可缺的。維度建模以分析決策的需求出發構建模型,構建的數據模型為分析需求服務,因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。而分層架構的設計的主要是為在管理數據的時候,能對數據有一個更加清晰的掌控。這篇乾貨將帶你認清數據倉庫「維度模型設計」與「分層架構」。

數據倉庫緯度模型設計

基本概念

維度模型是數據倉庫領域大師Ralph Kimall所倡導,它的《數據倉庫工具箱》,是數據倉庫工程領域最流行的數倉建模經典。它重點解決用戶如何更快速完成分析需求,同時還有較好的大規模複雜查詢的響應性能。

維度建模是專門應用於分析型資料庫、數據倉庫、數據集市建模的方法。數據集市可以理解為是一種"小型數據倉庫"。

事實表

發生在現實世界中的操作性事件,其所產生的可度量數值,存儲在事實表中。從最低的粒度級別來看,事實表行對應一個度量事件,反之亦然。

事實表表示對分析主題的度量。比如一次購買行為我們就可以理解為是一個事實。

圖中的訂單表就是一個事實表,可以理解它就是在現實中發生的一次操作型事件,每完成一個訂單,就會在訂單中增加一條記錄。

事實表的特徵:表裡沒有存放實際的內容,他是一堆主鍵的集合,這些ID分別能對應到維度表中的一條記錄。事實表包含了與各維度表相關聯的外鍵,可與維度表關聯。事實表的度量通常是數值類型(條/個/次),且記錄數會不斷增加,表數據規模迅速增長。

維度表

維度表示要對數據進行分析時所用的一個量,比如你要分析產品銷售情況,你可以選擇按類別進行分析,或按區域分析。這樣的按…分析就構成一個維度。上圖中的用戶表、商家表、時間表這些都屬於維度表。這些表都有一個唯一的主鍵,然後在表中存放了詳細的數據信息。

例如:交易金額分析分析

男性用戶的訂單金額、聯想商品的訂單金額、第一季度的訂單金額、手機的訂單金額、家裡下單的訂單金額。

例如:學生分析

姓張的同學有多少、男性的同學有多少、江蘇的同學有多少、身高小於170cm的同學有多少、年齡小於23歲的同學有多少。

維度表的特徵:每個維度表都包含單一的主鍵列。維度表的主鍵可以作為與之關聯的任何事實表的外鍵,當然,維度表行的描述環境應與事實表行完全對應。維度表通常比較寬,是扁平型非規範表,包含大量的低粒度的文本屬性。

總的說來,在數據倉庫中不需要嚴格遵守規範化設計原則。因為數據倉庫的主導功能就是面向分析,以查詢為主,不涉及數據更新操作。

需要強調的是:

事實表的設計是以能夠正確記錄歷史信息為準則。維度表的設計是以能夠以合適的角度來聚合主題內容為準則。維度建模三種模式

星形模型

星形模式(Star Schema)是最常用的維度建模方式。星型模式是以事實表為中心,所有的維度表直接連接在事實表上,像星星一樣。

星形模式的維度建模由一個事實表和一組維度表成,且具有以下特點:

維表只和事實表關聯,維表之間沒有關聯;每個維表主鍵為單列,且該主鍵放置在事實表中,作為兩邊連接的外鍵;以事實表為核心,維度表圍繞核心呈星形分布;

雪花模式

雪花模式(Snowflake Schema)是對星形模式的擴展。雪花模式的維度表可以擁有其他維度表的,雖然這種模型相比星型更規範一些,但是由於這種模型不太容易理解,維護成本比較高,而且性能方面需要關聯多層維表,性能也比星型模型要低。所以一般不是很常用。

星座模式

星座模式是星型模式延伸而來,星型模式是基於一張事實表的,而星座模式是基於多張事實表的,而且共享維度信息。

前面介紹的兩種維度建模方法都是多維表對應單事實表,但在很多時候維度空間內的事實表不止一個,而一個維表也可能被多個事實表用到。在業務發展後期,絕大部分維度建模都採用的是星座模式。

數據倉庫分層架構

分層的意義

分層的主要原因是在管理數據的時候,能對數據有一個更加清晰的掌控,詳細來講,主要有下面幾個原因:

清晰數據結構:

每一個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解。

方便數據血緣追蹤:

簡單來說,我們最終給業務呈現的是一個能直接使用業務表,但是它的來源有很多,如果有一張來源表出問題了,我們希望能夠快速準確地定位到問題,並清楚它的危害範圍。

減少重複開發:

規範數據分層,開發一些通用的中間層數據,能夠減少極大的重複計算。

把複雜問題簡單化:

將一個複雜的任務分解成多個步驟來完成,每一層只處理單一的步驟,比較簡單和容易理解。而且便於維護數據的準確性,當數據出現問題之後,可以不用修復所有的數據,只需要從有問題的步驟開始修復。

屏蔽原始數據的異常:

屏蔽業務的影響,不必改一次業務就需要重新接入數據。

數倉分層思想

數據分層,每個企業根據自己的業務需求可以分成不同的層次,但是最基礎的分層思想,理論上數據分為三個層,數據運營層、數據倉庫層、數據服務層。基於這個基礎分層之上添加新的層次,來滿足不同的業務需求。

數據運營層(ODS)

Operatedata store(操作數據-存儲),是最接近數據源中數據的一層,數據源中的數據,經過抽取、洗淨、傳輸,也就說傳說中的ETL之後,裝入ODS層。本層的數據,總體上大多是按照源頭業務系統的分類方式而分類的。

例如:MySQL裡面的一張表可以通過sqoop之間抽取到ODS層。

ODS層數據的來源方式:

業務庫經常會使用sqoop來抽取,比如我們每天定時抽取一次。在實時方面,可以考慮用canal監聽mysql的binlog,實時接入即可。

埋點日誌線上系統會打入各種日誌,這些日誌一般以文件的形式保存,我們可以選擇用flume定時抽取,也可以用用spark streaming或者Flink來實時接入,當然,kafka也會是一個關鍵的角色。

消息隊列來自ActiveMQ、Kafka的數據等。

數據倉庫層(DW)

Datawarehouse(數據倉庫)。在這裡,從ODS層中獲得的數據按照主題建立各種數據模型。例如以研究人的旅遊消費為主題的數據集中,便可以結合航空公司的登機出行信息,以及銀聯繫統的刷卡記錄,進行結合分析,產生數據集。在這裡,我們需要了解四個概念:維(dimension)、事實(Fact)、指標(Index)和粒度( Granularity)。

DW數據分層,由下到上為 DWD,DWB,DWS:

DWD:data warehouse detail細節數據層,是業務層與數據倉庫的隔離層。DWB:data warehouse base 基礎數據層,存儲的是客觀數據,一般用作中間層,可以認為是大量指標的數據層。DWS:data warehouseservice 服務數據層,基於DWB上的基礎數據,整合匯總層分析某一個主題域的服務數據,一般是寬表。 數據服務層/應用層(ADS):

ApplicationData Service(應用數據服務)。該層主要是提供數據產品和數據分析使用的數據,一般會存放在ES、MySQL等系統中供線上系統使用。

例如:我們經常說的報表數據,或者說那種大寬表,一般就放在這裡。

這就是經典的數據倉庫分層架構,大家不妨去瞧一瞧各大平臺的數據倉庫產品,他們的數據倉庫架構圖都至少包含這些分層。

原文連結:https://blog.csdn.net/weixin_44318830/article/details/105956712

文章部分素材來源:CSDN

相關焦點

  • 【原創】-數據倉庫架構的設計
    概述 架構是數據倉庫建設的總體規劃,從整體視角描述了解決方案的高層模型,描述了各個子系統的功能以及關係,描述了數據從源系統到決策系統的數據流程。業務需求回答了要做什麼,架構就是回答怎麼做的問題。
  • 數據倉庫系統架構和數倉分層體系介紹
    一、數據倉庫體系架構 公司藉助的第三方數據平臺,在此平臺之上建設數據倉庫。因為第三方平臺集成了很多東西,所以省去了不少功夫。 數據倉庫的體系架構,無外乎就是數據源、數據採集方式、計算存儲系統、數據應用層,這幾個方面。
  • 數據倉庫模型設計與工具
    數據模型對於數倉是最核心的東西,數據模型是數據組織和存儲方法,模型的好壞,決定了數倉能支撐企業業務多久。為什麼大多數企業,數倉都要重建,這不僅僅是業務拓展、發展迅速,很大一部分是因為模型建的很爛。
  • 馬蜂窩數據中臺起步建設:數倉的架構、模型與應用
    一、馬蜂窩數據倉庫與數據中臺最近幾年,數據中臺概念的熱度一直不減。2018 年起,馬蜂窩也開始了自己的數據中臺探索之路。數據中臺到底是什麼?要不要建?和數據倉庫有什麼本質的區別?相信很多企業都在關注這些問題。我認為數據中臺的概念非常接近傳統數據倉庫+大數據平臺的結合體。
  • 如何深入淺出理解數據倉庫建模?
    作者 | 傅一平 來源 | 與數據同行 今天跟著我來學學數據倉庫的基礎知識,希望你結合案例可以把它吃透。下圖是個示例,通過統一數據模型,屏蔽數據源變化對業務的影響,保證業務的穩定,表述了數據倉庫模型的一種價值:二、數據倉庫分層的設計為了實現以上的目的,數據倉庫一般要進行分層的設計,其能帶來五大好處:清晰數據結構:每一個數據分層都有它的作用域,這樣我們在使用表的時候能更方便地定位和理解。
  • 大數據篇:一文讀懂@數據倉庫
    數據倉庫不是靜態的概念,只有把信息及時交給需要這些信息的使用者,供他們做出改善其業務經營的決策,信息才能發揮作用,信息才有意義。而把信息加以整理歸納和重組,並及時提供給相應的管理決策人員,是數據倉庫的根本任務。因此,從產業界的角度看,數據倉庫建設是一個工程,是一個過程數據倉庫內的數據時限一般在5-10年以上,甚至永不刪除,這些數據的鍵碼都包含時間項,標明數據的歷史時期,方便做時間趨勢分析。
  • 《數據中臺實戰》:數據中臺的分層建模體系
    數據中臺數據模型的分層,業界比較通用的分層方式是將數據模型分為5層:①ODS(Operate Data Store,操作數據層)、②DIM(Dictionary Data Layer ,維度數據層)、③DWD(Data Warehouse Detail ,明細數據層)、④DWS(Data
  • 傳統行業如何建立數據倉庫?
    所以在需求討論的基礎上,需要理解業務工作流程,當然如果你已經具備了這個行業豐富的業務知識,那可以在需求調研的時候儘可能地讓對方按照自己的思路去完成數據倉庫系統的功能設計。3、需求方群體的分類,BI項目最終的使用對象可以分為以下幾類:數據查詢者、報表查詢者、企業決策者
  • 如何設計分層架構和交互接口 API?
    今天我們繼續來聊聊分層架構的設計流程,以及接口設計方法等內容。通常,我們可以將分層架構的設計流程分解為下列 4 個步驟:第一步,結合現實情況,將系統劃分成多個層次。僅僅四個步驟就完成了架構設計嗎?這會不會太簡單空洞了呢?各位看官,不要著急,請聽蔡老師慢慢道來,每個步驟都有極具可操作性的方法及工具。層次的切分方法面對一個龐然大物,你該如何下手呢?不用擔心,這已經給你準備了庖丁解牛的方法,輕輕鬆鬆把一個複雜的大系統變得可以掌控了。
  • 關於數據倉庫建設,了解這7點就夠了
    決定你的報表和BI到底能不能實時展現數據。01 數據倉庫的發展趨勢1.1 數據倉庫的趨勢關於數據倉庫的概念就不多介紹了。數據倉庫是伴隨著企業信息化發展起來的,在企業信息化的過程中,隨著信息化工具的升級和新工具的應用,數據量變得越來越大,數據格式越來越多,決策要求越來越苛刻,數據倉庫技術也在不停的發展。
  • 數據湖 VS 數據倉庫之爭?阿里提出大數據架構新概念:湖倉一體
    平臺技術演進出兩個趨勢,數據湖 VS 數據倉庫- 兩者均關注數據存儲和管理(平臺技術),但方向不同。圖1. 阿里巴巴雙十一單日處理數據量增長1.2 從大數據技術發展看湖和倉首先,數據倉庫的概念出現的要比數據湖早的多,可以追溯到資料庫為王的上世紀 90 年代。因此,我們有必要從歷史的脈絡來梳理這些名詞出現的大概時間、來由以及更重要的背後原因。
  • 大數據環境下該如何優雅地設計數據分層
    最近出現了好幾次同樣的對話場景: 問:你是做什麼的? 答:最近在搞數據倉庫。 問:哦,你是傳統行業的吧,我是搞大數據的。 答:……發個牢騷,搞大數據的也得建設數據倉庫吧。而且不管是傳統行業還是現在的網際網路公司,都需要對數據倉庫有一定的重視,而不是談一句自己是搞大數據的就很厲害了。
  • 數據倉庫(OLAP)與資料庫(OLTP)的區別及數倉的分層結構
    數據倉庫(OLAP)與資料庫(OLTP)的區別OLAP(數據倉庫):分析型處理,聯機分析處理。OLTP(資料庫):操作型處理,聯機事務處理。注意:數據倉庫的出現不能取代資料庫的存在。存儲的是歷史數據數據倉庫有意引入冗餘,根據需求進行分析OLTP:T事務聯機事務處理面向事務面向業務指的就是關係型資料庫(RDBMS):Mysql Oracle nosql(注意不是非關係型資料庫):redis mongodb存儲的是業務數據避免沉餘注意:數據倉庫,是在資料庫大量存在的情況下,為了進一步挖掘數據資源,為了決策需要而產生,它絕不是大型資料庫,只是對數據進行清洗處理分析,不會對數據發生改變
  • 數據產品必備技術知識:數據倉庫入門,看這這一篇就夠了
    數據倉庫是存數據的,企業的各種數據往裡面塞,主要目的是為了有效分析數據,後續會基於它產出供分析挖掘的數據,或者數據應用需要的數據,如企業的分析性報告和各類報表,為企業的決策提供支持。數據倉庫可以算是數據產品必須要了解的技術知識了, 在一年前的數據產品求職分析中,其中技能要求這一項中,數據倉庫可是佔了一席之地的。
  • Hive數據倉庫實戰
    這個規範就是我們下面要講的數據倉庫規範和模型設計。Hive 數據倉庫模型設計數據倉庫模型設計就是要制定一個規範,這個規範一般是做數據倉庫的分層設計。我們要搭建數據倉庫,把握好數據質量,對數據進行清洗、轉換。那麼更好區分那個是原始數據,那個是清洗後的數據,我們最好做一個數據分層,方便我們快速的找到想要的數據。
  • 維度建模的10大基本原則
    【IT168技術分析】  遵循這些原則進行維度建模可以保證數據粒度合理,模型靈活,能夠適應未來的信息資源,違反這些原則你將會把用戶弄糊塗,並且會遇到數據倉庫障礙。
  • 數據中臺實戰(二):基於阿里OneData的數據指標管理體系
    最後講一下數據產品中,數據看板的設計。全是實戰乾貨,看完本文你就會知道數據中臺最核心的內容。阿里OneData實施過程實戰第四步:模型設計此時主導的是我們的模型設計工程師,按照阿里的OneData建模理論的指導,模型設計工程師會採用三層建模的方式把數據更加科學的組織存儲。分為 ODS(操作數據層),DWD(明細數據層)、DWS(匯總數據層)、ADS (應用數據層),這是業務對數據分層常用的模型。模型設計工程師要清楚的知道數據來源自那裡,要怎麼存放。
  • 乾貨|你想知道的數據倉庫知識,這裡都有!
    而分析系統是事後的,它要提供關注時間段內所有的有效數據。這些數據是海量的,匯總計算起來也要慢一些,但是,只要能夠提供有效的分析結果就達到目的了。資料庫與數據倉庫的區別,實際上就是OLTP與OLAP的區別。
  • 一文讀懂數據架構的進化史
    近期看到很多企業在設計自己的數據平臺,以及選型一些數據分析工具,正好拜讀了數據倉庫之父的《數據架構:大數據、數據倉庫以及Data Vault》一書,有些許感觸,就來聊一下個人思考吧。首先從企業信息化發展階段時,數據平臺結構的程度來看。
  • 從企業架構到信息化規劃,從現狀調研到架構設計的核心邏輯
    而到了應用架構規劃階段,你就需要進一步對數據進行邏輯模型和物理模型的設計。在業務層面數據架構規劃做到識別關鍵的業務對象即可。而到了技術層面數據架構規劃必須細化到具體的資料庫表和表裡面的核心欄位定義。數據域-》數據概念模型-》數據邏輯和物理模型數據域和數據分類是數據規劃的頂層,這個時候如何確定數據域?