據IDC報告,預計到2020年全球數據總量將超過(guò)40ZB(相當于4萬(wàn)億GB),這一數據量是2013年的10倍。正在“爆炸式”增長(cháng)的數據的潛在巨大價(jià)值正在被發(fā)掘,它有可能成為商業(yè)世界的“新能源”,變革我們的生產(chǎn),影響我們生活。當我們面對如此龐大的數據之時(shí),如果我們不能有序、有結構的進(jìn)行分類(lèi)組織和存儲,那么在價(jià)值被發(fā)現前,也許數據成本災難已經(jīng)來(lái)臨。它猶如堆積如山的垃圾,給我們企業(yè)帶來(lái)的是極大的成本,而且非常難以消費和發(fā)掘價(jià)值,也許數據更可悲的命運是在價(jià)值發(fā)現之前它以死去。不得已的歷史數據清理還在進(jìn)行中嗎?

那么,企業(yè)大數據體系的數據架構應該如何建立?如何保障數據快速支撐業(yè)務(wù)并且驅動(dòng)業(yè)務(wù)發(fā)展?在2016數據庫技術(shù)大會(huì )上,數據中臺的高級技術(shù)專(zhuān)家王賽結合阿里數據的實(shí)踐成果,按照背景、方法思路以及如何落地實(shí)現、效果如何的邏輯,為大家詳細介紹阿里數據中臺的秘密武器——OneData體系。
背景》》》》》》》
在企業(yè)發(fā)展初期,數據研發(fā)模式一般緊貼業(yè)務(wù)的發(fā)展而演變的,數據體系也是基于業(yè)務(wù)單元垂直建立,不同的垂直化業(yè)務(wù),帶來(lái)不同的煙囪式的體系。但隨著(zhù)企業(yè)的發(fā)展,一方面數據規模在快速膨脹,垂直業(yè)務(wù)單元也越來(lái)越多,另一方面基于大數據的業(yè)務(wù)所需要的數據不僅僅是某個(gè)垂直單元的,使用數據類(lèi)型繁多(Variety)的數據才能具備核心競爭力??绱怪眴卧臄祿ㄔO接踵而至,混亂的數據調用和拷貝,重復建設帶來(lái)的資源浪費,數據指標定義不同而帶來(lái)的歧義、數據使用門(mén)檻越來(lái)越高……這些問(wèn)題日益凸顯,成為企業(yè)發(fā)展迫在眉睫必須要解決的問(wèn)題。
1)數據標準不統一
在建立OneData之前,阿里數據有30000多個(gè)指標,其中,即使是同樣的命名,但定義口徑卻不一致。例如,僅uv這樣一個(gè)指標,就有十幾種定義。帶來(lái)的問(wèn)題是:都是uv,我要用哪個(gè)?都是uv,為什么數據卻不一樣?
2)服務(wù)業(yè)務(wù)能力
由于數據模式是跟著(zhù)垂直業(yè)務(wù),導致一開(kāi)始只支持了淘寶、天貓、1688等少數業(yè)務(wù)團隊。而更多有個(gè)性化需求的業(yè)務(wù)團隊卻無(wú)法提供更多支持。
3)計算存儲成本
由于沒(méi)有統一的規范標準管理,造成了重復計算等資源浪費。而數據表的層次、粒度不清晰,也使得重復存儲嚴重,僅淘系的數據表就超過(guò)了25000張,集團總數據的存儲量每年以2.5倍的速度在增長(cháng),可以預見(jiàn)的未來(lái)的將會(huì )帶來(lái)巨大的數據成本負擔,我們不得不去做一些改變。
4)研發(fā)成本
每個(gè)工程師都需要從頭到尾了解研發(fā)流程的每個(gè)細節,對同樣的“坑”每個(gè)人都會(huì )重新踩一遍,對研發(fā)人員的時(shí)間和精力成本造成浪費
建立的方法和思路》》》》》》》》
基于這樣的問(wèn)題和挑戰,阿里集團規劃建設一個(gè)全集團的全域數據公共層,將公共的數據、計算沉淀于此,降低數據存儲和計算成本,提升數據互通和消費的效率,從而支撐快速數據業(yè)務(wù)應該的創(chuàng )新。公共層中重要的一環(huán)是數據模型的構建,那么我們先從行業(yè)看看一些方法體系和經(jīng)驗:
1)他山之石——行業(yè)內是如何做的?
A、實(shí)體關(guān)系(ER)模型
數據倉庫之父Immon的方法從全企業(yè)的高度設計一個(gè)3NF模型,用實(shí)體加關(guān)系描述的數據模型描述企業(yè)業(yè)務(wù)架構,在范式理論上符合3NF,它與OLTP系統中的3NF的區別,在于數據倉庫中的3NF上站在企業(yè)角度面向主題的抽象,而不是針對某個(gè)具體業(yè)務(wù)流程的實(shí)體對象關(guān)系抽象,它更多的是面向數據的整合和一致性治理,正如Immon所希望達到的:“single version of the truth”。但是要采用此方法進(jìn)行構建,也有其挑戰:
B、維度模型
維度模型是數據倉庫領(lǐng)域另一位大師Ralph Kimall所倡導,它的《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling》是數據倉庫工程領(lǐng)域最流行的數倉建模經(jīng)典。
維度建模以分析決策的需求出發(fā)構建模型,構建的數據模型為分析需求服務(wù),因此它重點(diǎn)解決用戶(hù)如何更快速完成分析需求,同時(shí)還有較好的大規模復雜查詢(xún)的響應性能。典型的代表是我們比較熟知的星形模型,以及在一些特殊場(chǎng)景下適用的雪花模型。
C、DataVault
DataVault是Dan Linstedt發(fā)起創(chuàng )建的一種模型方法論,它是在ER關(guān)系模型上的衍生,同時(shí)設計的出發(fā)點(diǎn)也是為了實(shí)現數據的整合,并非為數據決策分析直接使用。它強調建立一個(gè)可審計的基礎數據層,也就是強調數據的歷史性可追溯性和原子性,而不要求對數據進(jìn)行過(guò)度的一致性處理和整合;同時(shí)也基于主題概念將企業(yè)數據進(jìn)行結構化組織,并引入了更進(jìn)一步的范式處理來(lái)優(yōu)化模型應對源系統變更的擴展性。它主要由:Hub(關(guān)鍵核心業(yè)務(wù)實(shí)體)、Link(關(guān)系)、Satellite(實(shí)體屬性)三部分組成。

D、Anchor模型
Anchor模型是由Lars. R?nnb?ck設計的,初衷是設計一個(gè)高度可擴展的模型,核心思想:所有的擴展只是添加而不是修改,因此它將模型規范到6NF,基本變成了K-V結構模型。Anchor模型由:Anchors 、Attributes 、Ties 、Knots 組成,相關(guān)細節可以參考《Anchor Modeling-Agile Information Modeling in Evolving DataEnvironments》

2)阿里的數倉模型體系要如何構建?
阿里巴巴集團在很早就已經(jīng)把大數據做為戰略目標實(shí)施,而且其各個(gè)業(yè)務(wù)也非常依賴(lài)數據支撐運營(yíng),那么阿里究竟采取何種方法構建自己的體系?阿里的數據倉庫模型建設經(jīng)歷的多個(gè)發(fā)展周期:
第一階段:完全應用驅動(dòng)的時(shí)代,阿里巴巴第一代的數據倉庫系統構建在Oracle上,數據完全以滿(mǎn)足報表需求為目的出發(fā),將數據以與源結構相同的方式同步到Oracle后,我們叫ODS(Operational Data Store)層,數據工程師基于ODS數據進(jìn)行統計,基本沒(méi)有模型方法體系,完全基于對Oralce數據庫特性的利用進(jìn)行數據存儲和加工,部分采用了一些維度建模的緩慢變化維方式進(jìn)行歷史數據處理。那時(shí)候的數據架構只有兩次層ODS+DSS。
第二階段:隨著(zhù)阿里業(yè)務(wù)的快速發(fā)展,數據量也在飛速增長(cháng),性能已經(jīng)是一個(gè)較大問(wèn)題,因此引入了當時(shí)MPP架構體系的Greenplum,同時(shí)阿里的數據團隊也在著(zhù)手開(kāi)始進(jìn)行一定的數據架構優(yōu)化,希望通過(guò)一些模型技術(shù)改變煙囪式的開(kāi)發(fā)模型,消除一些冗余,提升數據的一致性。來(lái)做傳統行業(yè)數倉的工程師,開(kāi)始嘗試將工程領(lǐng)域比較流行的ER模型+維度模型方式應用的阿里集團,構建出一個(gè)四層的模型架構ODL(操作數據層)+BDL(基礎數據層)+IDL(接口數據層)+ADS(應用數據層)。ODL保持和源系統保持一致,BDL希望引入ER模型,加強數據的整合,構建一致的基礎數據模型,IDL基于維度模型方法構建集市層,ADL完成應用的個(gè)性化和基于展現需求的數據組裝。其中我們在構建ER模型遇到了比較大的困難和挑戰,互聯(lián)網(wǎng)業(yè)務(wù)的快速發(fā)展,人員的快速迭代變化,業(yè)務(wù)知識功底的不夠全面導致ER模型設計遲遲不能產(chǎn)出,至此,我們也得到了一個(gè)經(jīng)驗,在一個(gè)不太成熟,快速變化的業(yè)務(wù)面前,構建ER模型的風(fēng)險非常大,不太適合去構建。
第三階段:阿里集團的業(yè)務(wù)和數據還在飛速發(fā)展,這個(gè)時(shí)候迎來(lái)了以hadoop為代表的分布式存儲計算平臺的快速發(fā)展,同時(shí)阿里集團自主研發(fā)的分布式計算平臺ODPS也在緊鑼密鼓的進(jìn)行中;我們在擁抱分布式計算平臺的同時(shí),也開(kāi)始建設我們的第三代模型架構,我們需要找到一個(gè)核心問(wèn)題,找打適合阿里集團業(yè)務(wù)發(fā)展,又能充分利用分布是計算平臺能力的數據模型方式。
我們選擇了以Kimball的維度建模為核心理念基礎的模型方法論,同時(shí)對其進(jìn)行了一定的升級和擴展,構建了阿里集團的數據架構體系——OneData
OneData體系分為:數據規范定義體系、數據模型規范設計、ETL規范研發(fā)以及支撐整個(gè)體系從方法到實(shí)施的工具體系。
落地實(shí)現》》》》》》
A)數據規范定義
將此前個(gè)性化的數據指標進(jìn)行規范定義,抽象成:原子指標、時(shí)間周期、其他修飾詞等三個(gè)要素。
例如,以往業(yè)務(wù)方提出的需求是:最近7天的成交。而實(shí)際上,這個(gè)指標在規范定義中,應該結構化分解成為:
原子指標(支付訂單金額)+修飾詞-時(shí)間周期(最近7天)+修飾詞-賣(mài)家類(lèi)型(淘寶)

B)數據模型架構
將數據分為ODS(操作數據)層、CDM(公共維度模型)層、ADS(應用數據)層。
其中:
ODS層主要功能
CDM層主要功能
CDM層又細分為DWD層和DWS層,分別是明細寬表層和公共匯總數據層,采取維度模型方法基礎,更多采用一些維度退化手法,減少事實(shí)表和維度表的關(guān)聯(lián),容易維度到事實(shí)表強化明細事實(shí)表的易用性;同時(shí)在匯總數據層,加強指標的維度退化,采取更多寬表化的手段構建公共指標數據層,提升公共指標的復用性,減少重復的加工。
ADS層主要功能
其模型架構圖如下,阿里通過(guò)構建全域的公共層數據,極大的控制了數據規模的增長(cháng)趨勢,同時(shí)在整體的數據研發(fā)效率,成本節約、性能改進(jìn)方面都有不錯的結果。

C)研發(fā)流程和工具落地實(shí)現
將OneData體系貫穿于整個(gè)研發(fā)流程的每個(gè)環(huán)節中,并通過(guò)研發(fā)工具來(lái)進(jìn)行保障。

實(shí)施效果》》》》》》
聯(lián)系客服