數(shù)據(jù)模型——數(shù)據(jù)倉庫的靈魂

編輯推薦

隨著數(shù)據(jù)量的爆炸式增長,數(shù)據(jù)倉庫或數(shù)據(jù)平臺已經(jīng)是每家企業(yè)或機構(gòu)不可缺少的工具,而數(shù)據(jù)模型正是數(shù)據(jù)倉庫的靈魂。本文詳細介紹數(shù)據(jù)模型的概念、分類和應(yīng)用。

前言

越來越多的業(yè)務(wù),越來越多的信息化系統(tǒng),讓很多公司擁有了海量數(shù)據(jù),但是分散的數(shù)據(jù)、隔離的系統(tǒng),又形成了一個個數(shù)據(jù)孤島。于是,為了利用好數(shù)據(jù),各大公司紛紛建設(shè)了數(shù)據(jù)倉庫,或者是最近升級為大數(shù)據(jù)平臺之類的,但是,不同條線不同場景的數(shù)據(jù)又要如何整合到同一個倉庫呢?

數(shù)據(jù)模型就此應(yīng)運而生,通過高度抽象的數(shù)據(jù)模型,整合各個源系統(tǒng)的數(shù)據(jù),最終形成統(tǒng)一、規(guī)范、易用的數(shù)據(jù)倉庫,進而提供包括數(shù)據(jù)集市、數(shù)據(jù)挖掘、報表展示、即席查詢等上層服務(wù)。

數(shù)據(jù)模型究竟是干什么的,該怎么構(gòu)建呢?筆者接下來為大家做一些入門的概念普及。

為什么需要數(shù)據(jù)模型

數(shù)據(jù)模型能夠促進業(yè)務(wù)與技術(shù)進行有效溝通,形成對主要業(yè)務(wù)定義和術(shù)語的統(tǒng)一認識,具有跨部門、中性的特征,可以表達和涵蓋所有的業(yè)務(wù)。

無論是操作型數(shù)據(jù)庫,還是數(shù)據(jù)倉庫都需要數(shù)據(jù)模型組織數(shù)據(jù)構(gòu)成,指導(dǎo)數(shù)據(jù)表設(shè)計。或許Linux的創(chuàng)始人Torvalds說的一句話——“爛程序員關(guān)心的是代碼,好程序員關(guān)心的是數(shù)據(jù)結(jié)構(gòu)和他們之間的關(guān)系”最能夠說明數(shù)據(jù)模型的重要性。只有數(shù)據(jù)模型將數(shù)據(jù)有序的組織和存儲起來之后,大數(shù)據(jù)才能得到高性能、低成本、高效率、高質(zhì)量的使用。

常見數(shù)據(jù)建模方法介紹

  1. ER 模型
    ER模型是數(shù)據(jù)倉庫之父Inmon推崇的、從全企業(yè)的高度設(shè)計一個3NF模型的方法,用實體加關(guān)系描述的數(shù)據(jù)模型描述企業(yè)業(yè)務(wù)架構(gòu),在范式理論上符合3NF,站在企業(yè)角度面向主題的抽象,而不是針對某個具體業(yè)務(wù)流程的實體對象關(guān)系抽象。它更多是面向數(shù)據(jù)的整合和一致性治理,正如Inmon所希望達到的“single version of the truth”。
    ER模型最基本的要素是實體、屬性和關(guān)系:
    實體:具有相同屬性的實體具有相同的特征和性質(zhì),用實體名及其屬性名集合來抽象和刻畫同類實體;
    關(guān)系:數(shù)據(jù)對象彼此之間的關(guān)系;
    屬性:實體具有的某個特性,一般多個屬性來刻畫某個實體。
  2. 維度模型
    維度模型是數(shù)據(jù)倉庫領(lǐng)域另一位大師Ralph Kimball 所倡導(dǎo)的。維度建模以分析決策的需求出發(fā)構(gòu)建模型,構(gòu)建的數(shù)據(jù)模型為分析需求服務(wù),因此它重點解決用戶如何更快速完成分析需求,同時還有較好的大規(guī)模復(fù)雜查詢的響應(yīng)性能,更直接面向業(yè)務(wù)。典型的代表是我們比較熟知的星形模型,以及在一些特殊場景下適用的雪花模型。
    維度模型最基本的兩個要素是事實表和維度表:
    事實表:一般由兩部分組成,維度和度量,通俗的理解為“某人在某個時間什么條件下做了什么事情”的事實記錄,它擁有最大的數(shù)據(jù)量,是業(yè)務(wù)流程的核心體現(xiàn)。
    維度表:對事實表的補充說明,描述和還原事實發(fā)生時的場景,比如通過用戶、商品、地址、時間等維度還原商品訂單發(fā)生時的場景。
  3. 案例分析
    首先來看看以上兩種模型的示例:
    圖1:ER模型例圖


    ER 模型

    圖1所示,每一張矩形圖是一個實體,實體之間獨立性強,高度抽象,需要通過外鍵或者關(guān)系表進行關(guān)聯(lián),整張圖靠實體和關(guān)系構(gòu)建起來。與主鍵直接相關(guān)、且不能再延伸的屬性才會在一個實體中出現(xiàn),否則會通過關(guān)系實體再延伸一個實體出來,保證滿足范式要求。
    圖2:維度模型例圖


    維度模型

    圖2所示,中間的為一張事實表,主鍵為包含不同的維度ID的聯(lián)合主鍵。整體看維度建模的設(shè)計類似星型,并且一個中心的事實表對應(yīng)多個一層的維表,某個維度的描述僅限一張表,這樣的設(shè)計,必然會是維表有冗余,一張表描述多層的維度。
    直觀上看:圖1主表有一個主鍵多個外鍵,層次較深;圖2為多個聯(lián)合主鍵,關(guān)聯(lián)不同的維度表,一張維度表解決所有該維度屬性信息。
    維度模型將ER模型的層次結(jié)構(gòu)平鋪開來了,整個數(shù)據(jù)結(jié)構(gòu)是平面化、單一層次的,數(shù)據(jù)結(jié)構(gòu)很簡單,但是維度表的冗余也會較多,靈活性比較差;優(yōu)勢則是查詢簡單快速,比如對產(chǎn)品維度的大類匯總,ER建模需要關(guān)聯(lián)產(chǎn)品再通過關(guān)系表關(guān)聯(lián)產(chǎn)品大類,而維度模型直接在產(chǎn)品維度表中就有了。
  4. 應(yīng)用場景
    ER模型和維度模型應(yīng)用場景有所不同,ER模型更偏向于基礎(chǔ)數(shù)據(jù)倉庫的建設(shè),保證高度抽象、高度一致性,要求業(yè)務(wù)穩(wěn)定;而維度模型更多應(yīng)用于數(shù)據(jù)集市,偏向于直接面對業(yè)務(wù),保證查詢效率。
    ER建模的構(gòu)建難度決定了它面臨如下挑戰(zhàn):1. 需要全面了解企業(yè)業(yè)務(wù)和數(shù)據(jù);2. 實施周期非常長;3. 對建模人員的能力要求也非常高。因此對于業(yè)務(wù)比較穩(wěn)定的傳統(tǒng)金融行業(yè),使用ER建模更多,對于業(yè)務(wù)經(jīng)常變化的電商行業(yè),由于ER建模的難度加上業(yè)務(wù)復(fù)雜和快速變化的疊加效應(yīng),則越來越多采取維度建模。
    淘寶數(shù)據(jù)平臺變遷的過程正好解釋了二者的不同。最初,淘寶業(yè)務(wù)單一、系統(tǒng)簡單,主要是簡單的報表系統(tǒng);后期數(shù)據(jù)量越來越大,系統(tǒng)越來越多,嘗試用ER建模的數(shù)據(jù)倉庫,但是在實踐中發(fā)現(xiàn)快速變化的業(yè)務(wù)之下,構(gòu)建ER模型的風(fēng)險和難度都很高,現(xiàn)在則主要采用基于維度建模的模型方法了。

數(shù)據(jù)模型構(gòu)建方法論

維度建模通常需要選擇某個業(yè)務(wù)過程,然后圍繞該過程建立模型:


建模過程

ER建模則常常需要全局考慮,要對上游業(yè)務(wù)系統(tǒng)的進行信息調(diào)研,以做到對其業(yè)務(wù)和數(shù)據(jù)的基本了解,要做到主題劃分,讓模型有清晰合理的實體關(guān)系體系,需要由驗證反饋機制,以及時修正模型漏洞,下面是對ER建模的方法論簡要介紹:


ER 建模

數(shù)據(jù)模型的價值

一個邏輯數(shù)據(jù)模型是建立商業(yè)智能的基礎(chǔ)框架,也是建立一個靈活的強有力的數(shù)據(jù)倉庫系統(tǒng)的第一步,是為決策層和數(shù)據(jù)使用者提供有價值數(shù)據(jù)分析的重要基礎(chǔ),并且能夠幫助數(shù)據(jù)標準的制定、數(shù)據(jù)治理、元數(shù)據(jù)管理、數(shù)據(jù)存儲等方面的工作。

附:經(jīng)典數(shù)據(jù)模型

下表為最經(jīng)典的數(shù)據(jù)模型——Teradata公司基于金融行業(yè)高度抽象出來的FS-LDM模型,它將金融行業(yè)高度抽象為十大主題,如下表:


FS-LDM十大主題

下圖是協(xié)議主題中金融賬戶分類相關(guān)的實體關(guān)系示例:


實體關(guān)系

注:上圖源自Teradata培訓(xùn)文檔

FS-LDM最核心的就是主題劃分和成熟的實體關(guān)系體系,有興趣的可以參考上面的介紹對自己熟悉的公司數(shù)據(jù)進行模型構(gòu)建,或許會更進一步理解數(shù)據(jù)模型的妙處。

原文:https://mp.weixin.qq.com/s/g0GG9oDnWROKLYZQgSHgEA

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 螞蟻金服體驗技術(shù)部招人啦,前端開發(fā)專家,Node.js開發(fā)專家,歡迎投遞簡歷,長期有效。郵箱: chenglin....
    兼續(xù)閱讀 75,834評論 11 103
  • 不知道明天會怎樣,但是我還是不放棄奔波,為了明天更美好,日夜兼程,很累,也堅持?。 為了奔赴下一個戰(zhàn)場,我們消耗著...
    薰衣草2閱讀 316評論 0 0
  • 這個異常在4.4系統(tǒng)的時候是沒有發(fā)生的。在5.0以上的系統(tǒng)就會發(fā)生。 并且絕大多數(shù)是因為在上拉自動加載的時候發(fā)生的...
    黃小樓vincent閱讀 2,003評論 0 0

友情鏈接更多精彩內(nèi)容