连载:阿里巴巴大数据实践—数据建模综述
前言:
-更多關(guān)于數(shù)智化轉(zhuǎn)型、數(shù)據(jù)中臺(tái)內(nèi)容請(qǐng)加入阿里云數(shù)據(jù)中臺(tái)交流群—數(shù)智俱樂(lè)部 和關(guān)注官方微信公總號(hào)(文末掃描二維碼或點(diǎn)此加入)
-阿里云數(shù)據(jù)中臺(tái)官網(wǎng) https://dp.alibaba.com/index
來(lái)源:數(shù)智化轉(zhuǎn)型俱樂(lè)部
隨著DT時(shí)代互聯(lián)網(wǎng)、智能設(shè)備及其他信息技術(shù)的發(fā)展,數(shù)據(jù)爆發(fā)式增長(zhǎng),如何將這些數(shù)據(jù)進(jìn)行有序、有結(jié)構(gòu)地分類(lèi)組織和存儲(chǔ)是我們面臨的一個(gè)挑戰(zhàn)。
如果把數(shù)據(jù)看作圖書(shū)館里的書(shū),我們希望看到它們?cè)跁?shū)架上分門(mén)別類(lèi)地放置;如果把數(shù)據(jù)看作城市的建筑,我們希望城市規(guī)劃布局合理;如果把數(shù)據(jù)看作電腦文件和文件夾,我們希望按照自己的習(xí)慣有很好的文件夾組織方式,而不是糟糕混亂的桌面,經(jīng)常為找一個(gè)文件而不知所措。
數(shù)據(jù)模型就是數(shù)據(jù)組織和存儲(chǔ)方法,它強(qiáng)調(diào)從業(yè)務(wù)、數(shù)據(jù)存取和使用角度合理存儲(chǔ)數(shù)據(jù)。Linux的創(chuàng)始人Torvalds有一段關(guān)于“什么才是優(yōu)秀程序員”的話:“爛程序員關(guān)心的是代碼,好程序員關(guān)心的是數(shù)據(jù)結(jié)構(gòu)和它們之間的關(guān)系”,其闡述了數(shù)據(jù)模型的重要性。有了適合業(yè)務(wù)和基礎(chǔ)數(shù)據(jù)存儲(chǔ)環(huán)境的模型,那么大數(shù)據(jù)就能獲得以下好處。
- 性能:良好的數(shù)據(jù)模型能幫助我們快速查詢所需要的數(shù)據(jù),減少數(shù)據(jù)的I/O吞吐。
- 成本:良好的數(shù)據(jù)模型能極大地減少不必要的數(shù)據(jù)冗余,也能實(shí)現(xiàn)計(jì)算結(jié)果復(fù)用,極大地降低大數(shù)據(jù)系統(tǒng)中的存儲(chǔ)和計(jì)算成本。
- 效率:良好的數(shù)據(jù)模型能極大地改善用戶使用數(shù)據(jù)的體驗(yàn),提高使用數(shù)據(jù)的效率。
- 質(zhì)量:良好的數(shù)據(jù)模型能改善數(shù)據(jù)統(tǒng)計(jì)口徑的不一致性,減少數(shù)據(jù)計(jì)算錯(cuò)誤的可能性。
因此,毋庸置疑,大數(shù)據(jù)系統(tǒng)需要數(shù)據(jù)模型方法來(lái)幫助更好地組織和存儲(chǔ)數(shù)據(jù),以便在性能、成本、效率和質(zhì)量之間取得最佳平衡。
1.關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)倉(cāng)庫(kù)
E .F .Codd是關(guān)系數(shù)據(jù)庫(kù)的鼻祖,他首次提出了數(shù)據(jù)庫(kù)系統(tǒng)的關(guān)系模型,開(kāi)創(chuàng)了數(shù)據(jù)庫(kù)關(guān)系方法和關(guān)系數(shù)據(jù)理論的研究。隨著一大批大型關(guān)系數(shù)據(jù)庫(kù)商業(yè)軟件(如Oracle、Informix、DB2等)的興起,現(xiàn)代企業(yè)信息系統(tǒng)幾乎都使用關(guān)系數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)、加工和處理數(shù)據(jù)。數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)也不例外,大量的數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)依托強(qiáng)大的關(guān)系數(shù)據(jù)庫(kù)能力存儲(chǔ)和處理數(shù)據(jù),其采用的數(shù)據(jù)模型方法也是基于關(guān)系數(shù)據(jù)庫(kù)理論的。
雖然近年來(lái)大數(shù)據(jù)的存儲(chǔ)和計(jì)算基礎(chǔ)設(shè)施在分布式方面有了飛速的發(fā)展,NoSQL技術(shù)也曾流行一時(shí),但是不管是Hadoop、Spark還是阿里巴巴集團(tuán)的MaxCompute系統(tǒng),仍然在大規(guī)模使用SQL進(jìn)行數(shù)據(jù)的加工和處理,仍然在用Table存儲(chǔ)數(shù)據(jù),仍然在使用關(guān)系理論描述數(shù)據(jù)之間的關(guān)系,只是在大數(shù)據(jù)領(lǐng)域,基于其數(shù)據(jù)存取的特點(diǎn)在關(guān)系數(shù)據(jù)模型的范式上有了不同的選擇而已。關(guān)于范式的詳細(xì)說(shuō)明和定義,以及其他一些關(guān)系數(shù)據(jù)庫(kù)的理論是大數(shù)據(jù)領(lǐng)域建模的基礎(chǔ),有興趣的讀者可以參考相關(guān)的經(jīng)典數(shù)據(jù)庫(kù)理論書(shū)籍,如《數(shù)據(jù)庫(kù)系統(tǒng)概念》。
2.從OLTP和OLAP系統(tǒng)的區(qū)別看模型方法論的選擇
OLTP系統(tǒng)通常面向的主要數(shù)據(jù)操作是隨機(jī)讀寫(xiě),主要采用滿足3NF的實(shí)體關(guān)系模型存儲(chǔ)數(shù)據(jù),從而在事務(wù)處理中解決數(shù)據(jù)的冗余和一致性問(wèn)題;而OLAP系統(tǒng)面向的主要數(shù)據(jù)操作是批量讀寫(xiě),事務(wù)處理中的一致性不是OLAP所關(guān)注的,其主要關(guān)注數(shù)據(jù)的整合,以及在一次性的復(fù)雜大數(shù)據(jù)查詢和處理中的性能,因此它需要采用一些不同的數(shù)據(jù)建模方法。
3.典型的數(shù)據(jù)倉(cāng)庫(kù)建模方法論
ER模型
數(shù)據(jù)倉(cāng)庫(kù)之父Bill Inmon提出的建模方法是從全企業(yè)的高度設(shè)計(jì)一個(gè)3NF模型,用實(shí)體關(guān)系(Entity Relationship,ER)模型描述企業(yè)業(yè)務(wù),在范式理論上符合3NF。數(shù)據(jù)倉(cāng)庫(kù)中的3NF與OLTP系統(tǒng)中的3NF的區(qū)別在于,它是站在企業(yè)角度面向主題的抽象,而不是針對(duì)某個(gè)具體業(yè)務(wù)流程的實(shí)體對(duì)象關(guān)系的抽象。其具有以下幾個(gè)特點(diǎn):
1)需要全面了解企業(yè)業(yè)務(wù)和數(shù)據(jù);
2)實(shí)施周期非常長(zhǎng);
3)對(duì)建模人員的能力要求非常高;
采用ER模型建設(shè)數(shù)據(jù)倉(cāng)庫(kù)模型的出發(fā)點(diǎn)是整合數(shù)據(jù),將各個(gè)系統(tǒng)中的數(shù)據(jù)以整個(gè)企業(yè)角度按主題進(jìn)行相似性組合和合并,并進(jìn)行一致性處理,為數(shù)據(jù)分析決策服務(wù),但是并不能直接用于分析決策。其建模步驟分為三個(gè)階段:
1)高層模型:一個(gè)高度抽象的模型,描述主要的主題以及主題間的關(guān)系,用于描述企業(yè)的業(yè)務(wù)總體概況。
2)中層模型:在高層模型的基礎(chǔ)上,細(xì)化主題的數(shù)據(jù)項(xiàng)。
3)物理模型(也叫底層模型):在中層模型的基礎(chǔ)上,考慮物理存儲(chǔ),同時(shí)基于性能和平臺(tái)特點(diǎn)進(jìn)行物理屬性的設(shè)計(jì),也可能做一些表的合并、分區(qū)的設(shè)計(jì)等。
ER模型在實(shí)踐中最典型的代表是Teradata公司基于金融業(yè)務(wù)發(fā)布的FS-LDM(Financial Services Logical Data Model),它通過(guò)對(duì)金融業(yè)務(wù)的高度抽象和總結(jié),將金融業(yè)務(wù)劃分為10大主題,并以設(shè)計(jì)面向金融倉(cāng)庫(kù)模型的核心為基礎(chǔ),企業(yè)基于此模型做適當(dāng)調(diào)整和擴(kuò)展就能快速落地實(shí)施。
**維度模型
**
維度模型是數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域的Ralph Kimball大師所倡導(dǎo)的,他的The Data Warehouse Toolkit-The Complete Guide to Dimensional Modeling是數(shù)據(jù)倉(cāng)庫(kù)工程領(lǐng)域最流行的數(shù)據(jù)倉(cāng)庫(kù)建模的經(jīng)典。
維度建模從分析決策的需求出發(fā)構(gòu)建模型,為分析需求服務(wù),因此它重點(diǎn)關(guān)注用戶如何更快速地完成需求分析,同時(shí)具有較好的大規(guī)模復(fù)雜查詢的響應(yīng)性能。其典型的代表是星形模型,以及在一些特殊場(chǎng)景下使用的雪花模型。其設(shè)計(jì)分為以下幾個(gè)步驟。
選擇需要進(jìn)行分析決策的業(yè)務(wù)過(guò)程。業(yè)務(wù)過(guò)程可以是單個(gè)業(yè)務(wù)事件,比如交易的支付、退款等;也可以是某個(gè)事件的狀態(tài),比如當(dāng)前的賬戶余額等;還可以是一系列相關(guān)業(yè)務(wù)事件組成的業(yè)務(wù)流程,具體需要看我們分析的是某些事件發(fā)生情況,還是當(dāng)前狀態(tài),或是事件流轉(zhuǎn)效率。
1)選擇粒度:在事件分析中,我們要預(yù)判所有分析需要細(xì)分的程度,從而決定選擇的粒度。粒度是維度的一個(gè)組合。
2)識(shí)別維表:選擇好粒度之后,就需要基于此粒度設(shè)計(jì)維表,包括維度屬性,用于分析時(shí)進(jìn)行分組和篩選。
3)選擇事實(shí):確定分析需要衡量的指標(biāo)。
Data Vault模型
Data Vault是Dan Linstedt發(fā)起創(chuàng)建的一種模型,它是ER模型的衍生,其設(shè)計(jì)的出發(fā)點(diǎn)也是為了實(shí)現(xiàn)數(shù)據(jù)的整合,但不能直接用于數(shù)據(jù)分析決策。它強(qiáng)調(diào)建立一個(gè)可審計(jì)的基礎(chǔ)數(shù)據(jù)層,也就是強(qiáng)調(diào)數(shù)據(jù)的歷史性、可追溯性和原子性,而不要求對(duì)數(shù)據(jù)進(jìn)行過(guò)度的一致性處理和整合;同時(shí)它基于主題概念將企業(yè)數(shù)據(jù)進(jìn)行結(jié)構(gòu)化組織,并引入了更進(jìn)一步的范式處理來(lái)優(yōu)化模型,以應(yīng)對(duì)源系統(tǒng)變更的擴(kuò)展性。Data Vault模型由以下幾部分組成。
1)Hub:是企業(yè)的核心業(yè)務(wù)實(shí)體,由實(shí)體key、數(shù)據(jù)倉(cāng)庫(kù)序列代理鍵、裝載時(shí)間、數(shù)據(jù)來(lái)源組成。
2)Link:代表Hub之間的關(guān)系。這里與ER模型最大的區(qū)別是將關(guān)系作為一個(gè)獨(dú)立的單元抽象,可以提升模型的擴(kuò)展性。它可以直接描述1:1、1:n和n:n的關(guān)系,而不需要做任何變更。它由Hub的代理鍵、裝載時(shí)間、數(shù)據(jù)來(lái)源組成。
3)Satellite:是Hub的詳細(xì)描述內(nèi)容,一個(gè)Hub可以有多個(gè)Satellite。它由Hub的代理鍵、裝載時(shí)間、來(lái)源類(lèi)型、詳細(xì)的Hub描述信息組成。
Data Vault模型比ER模型更容易設(shè)計(jì)和產(chǎn)出,它的ETL加工可實(shí)現(xiàn)配置化。通過(guò)Dan Linstedt的比喻更能理解Data Vault的核心思想:Hub可以想象成人的骨架,那么Link就是連接骨架的韌帶,而Satellite就是骨架上面的血肉。看如下實(shí)例(來(lái)自Data Vault Modeling Guide,作者Hans Hultgren),如圖所示。
Data Vault模型實(shí)例
Anchor模型
Anchor對(duì)Data Vault模型做了進(jìn)一步規(guī)范化處理,Lars. R?nnb?ck的初衷是設(shè)計(jì)一個(gè)高度可擴(kuò)展的模型,其核心思想是所有的擴(kuò)展只是添加而不是修改,因此將模型規(guī)范到6NF,基本變成了k-v結(jié)構(gòu)化模型。我們看一下Anchor模型的組成。
1)Anchors:類(lèi)似于Data Vault的Hub,代表業(yè)務(wù)實(shí)體,且只有主鍵。
2)Attributes:功能類(lèi)似于Data Vault的Satellite,但是它更加規(guī)范化,將其全部k-v結(jié)構(gòu)化,一個(gè)表只有一個(gè)Anchors的屬性描述。
3)Ties:就是Anchors之間的關(guān)系,單獨(dú)用表來(lái)描述,類(lèi)似于Data Vault的Link,可以提升整體模型關(guān)系的擴(kuò)展能力。
4)Knots:代表那些可能會(huì)在多個(gè)Anchors中公用的屬性的提煉,比如性別、狀態(tài)等這種枚舉類(lèi)型且被公用的屬性。
在上述四個(gè)基本對(duì)象的基礎(chǔ)上,又可以細(xì)劃分為歷史的和非歷史的,其中歷史的會(huì)以時(shí)間戳加多條記錄的方式記錄數(shù)據(jù)的變遷歷史。
Anchor模型的創(chuàng)建者以此方式來(lái)獲取極大的可擴(kuò)展性,但是也會(huì)增加非常多的查詢join操作。創(chuàng)建者的觀點(diǎn)是,數(shù)據(jù)倉(cāng)庫(kù)中的分析查詢只是基于一小部分字段進(jìn)行的,類(lèi)似于列存儲(chǔ)結(jié)構(gòu),可以大大減少數(shù)據(jù)掃描,從而對(duì)查詢性能影響較小。一些有數(shù)據(jù)表裁剪(Table Elimination)特性的數(shù)據(jù)庫(kù)如MariaDB的出現(xiàn),還會(huì)大量減少join操作。但是實(shí)際情況是不是如此,還有待商榷。下面是一個(gè)Anchor模型圖(來(lái)自Anchor Modeling-Agile Information Modeling in Evolving Data Environments,作者Lars. R?nnb?ck),如圖所示。
節(jié)選自《大數(shù)據(jù)之路:阿里巴巴大數(shù)據(jù)實(shí)踐》已受版權(quán)保護(hù),未經(jīng)授權(quán)不得轉(zhuǎn)載
連載:阿里巴巴大數(shù)據(jù)實(shí)踐—數(shù)據(jù)開(kāi)發(fā)平臺(tái)>>
連載:阿里巴巴大數(shù)據(jù)實(shí)踐—實(shí)時(shí)技術(shù)>>
連載:阿里巴巴大數(shù)據(jù)實(shí)踐—數(shù)據(jù)服務(wù)>>
數(shù)據(jù)中臺(tái)是企業(yè)數(shù)智化的新基建,阿里巴巴認(rèn)為數(shù)據(jù)中臺(tái)是集方法論、工具、組織于一體的,“快”、“準(zhǔn)”、“全”、“統(tǒng)”、“通”的智能大數(shù)據(jù)體系。目前正通過(guò)阿里云數(shù)據(jù)中臺(tái)解決方案對(duì)外輸出,包括零售、金融、互聯(lián)網(wǎng)、政務(wù)等領(lǐng)域,其中核心產(chǎn)品有:
- Dataphin,一站式、智能化的數(shù)據(jù)構(gòu)建及管理平臺(tái);
- Quick BI,隨時(shí)隨地 智能決策;
- Quick Audience,全方位洞察、全域營(yíng)銷(xiāo)、智能增長(zhǎng);
- Quick A+, 跨多端全域應(yīng)用體驗(yàn)分析及洞察的一站式數(shù)據(jù)化運(yùn)營(yíng)平臺(tái);
官方站點(diǎn):
數(shù)據(jù)中臺(tái)官網(wǎng) https://dp.alibaba.com
原文鏈接:https://developer.aliyun.com/article/771079?
版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊(cè)用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開(kāi)發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請(qǐng)查看《阿里云開(kāi)發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開(kāi)發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫(xiě)侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。總結(jié)
以上是生活随笔為你收集整理的连载:阿里巴巴大数据实践—数据建模综述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 如何基于K8s构建下一代DevOps平台
- 下一篇: 连载:阿里巴巴大数据实践—数据服务