從數(shù)倉到數(shù)據(jù)中臺(tái),談技術(shù)選型最優(yōu)解
本文根據(jù)顏博老師在〖Deeplus直播第218期〗線上分享演講內(nèi)容整理而成。
顏博
馬蜂窩數(shù)倉研發(fā)總監(jiān)
現(xiàn)任馬蜂窩數(shù)據(jù)倉庫團(tuán)隊(duì)負(fù)責(zé)人,曾供職于京東、IBM、亞信等公司。
數(shù)據(jù)行業(yè)老兵一名,歷經(jīng)傳統(tǒng)數(shù)據(jù)倉庫、大數(shù)據(jù)平臺(tái)到數(shù)據(jù)中臺(tái)的發(fā)展。
大家好,今天分享的議題主要包括幾大內(nèi)容:
帶大家回顧一下大數(shù)據(jù)在國內(nèi)的發(fā)展,從傳統(tǒng)數(shù)倉到當(dāng)前數(shù)據(jù)中臺(tái)的演進(jìn)過程;
我個(gè)人認(rèn)為數(shù)據(jù)中臺(tái)的核心組成,以及一些技術(shù)選型參考;
數(shù)據(jù)研發(fā)是數(shù)據(jù)中臺(tái)很重要的一環(huán),會(huì)分享一些我們?cè)跀?shù)據(jù)研發(fā)方面的實(shí)踐,主要是數(shù)據(jù)倉庫架構(gòu)與研發(fā)方面。
一、大數(shù)據(jù)演進(jìn),從數(shù)據(jù)倉庫到數(shù)據(jù)中臺(tái)
21世紀(jì)的第一個(gè)10年,企業(yè)級(jí)數(shù)據(jù)倉庫(EDW)從萌芽到蓬勃發(fā)展,“IOT”( IBM、Oracle、Teradata)占領(lǐng)了大部分市場(chǎng),提供數(shù)據(jù)倉庫建設(shè)從硬件、軟件到實(shí)施的整體方案。
這個(gè)時(shí)代的數(shù)據(jù)倉庫實(shí)施不僅需要購買大(中、小)型機(jī),配套商用的關(guān)系型數(shù)據(jù)庫(Oracle、DB2、SQL Server)以及一些ETL/OLAP套件,實(shí)施成本相對(duì)高昂,數(shù)據(jù)倉庫建設(shè)主要集中在金融、電信、大型零售與制造等行業(yè)。
數(shù)據(jù)倉庫的應(yīng)用主要通過為企業(yè)提供報(bào)表、分析等數(shù)據(jù),輔助企業(yè)的經(jīng)營決策。像電信行業(yè)的經(jīng)營分析系統(tǒng)、銀行的風(fēng)控管理等,都是這個(gè)期間比較典型的應(yīng)用。
2010-2015年,大數(shù)據(jù)平臺(tái)階段,移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展帶動(dòng)Bigdata(大數(shù)據(jù))的發(fā)展。其中Hadoop生態(tài)技術(shù)開始逐步在國內(nèi)大范圍使用,企業(yè)只要基于Hadoop分布式的計(jì)算框架,使用相對(duì)廉價(jià)的PC服務(wù)器就能搭建起大數(shù)據(jù)集群。
數(shù)據(jù)湖的概念也是這個(gè)階段誕生(主要是為降低傳統(tǒng)數(shù)倉較為復(fù)雜的中間建模過程,通過接入業(yè)務(wù)系統(tǒng)的原始數(shù)據(jù),包括結(jié)構(gòu)化、非結(jié)構(gòu)數(shù)據(jù),借助hadoop生態(tài)強(qiáng)大計(jì)算引擎,將數(shù)據(jù)直接服務(wù)于應(yīng)用)。這個(gè)階段不只是金融、電信這些行業(yè),國內(nèi)主流互聯(lián)網(wǎng)企業(yè)也紛紛搭建起大數(shù)據(jù)平臺(tái)。
大數(shù)據(jù)應(yīng)用更為豐富,不僅限于決策分析,基于APP/門戶站點(diǎn)的搜索推薦、以及通過A/B Test來對(duì)產(chǎn)品進(jìn)行升級(jí)迭代等是這個(gè)階段常規(guī)的應(yīng)用點(diǎn),用戶畫像在這個(gè)階段也得到重視,主要應(yīng)用于企業(yè)的營銷、運(yùn)營等場(chǎng)景。
就是我們現(xiàn)在所處的階段,數(shù)據(jù)中臺(tái)以及云上大數(shù)據(jù)階段,通過前10多年不斷的技術(shù)積累,大數(shù)據(jù)在方法和組織的變革上也有了新的沉淀,主要體現(xiàn)在幾個(gè)方面:
1)數(shù)據(jù)統(tǒng)一化
其核心思想是數(shù)據(jù)流轉(zhuǎn)的所有環(huán)節(jié)進(jìn)行統(tǒng)一化,如從采集到存儲(chǔ)到加工等過程,在這些過程中通過建立統(tǒng)一的公共數(shù)據(jù)模型體系、統(tǒng)一的指標(biāo)與標(biāo)簽體系,提高數(shù)據(jù)的標(biāo)準(zhǔn)性、易用性,讓數(shù)據(jù)本身更好地連通,提升使用效率。
2)工具組件化
數(shù)據(jù)在采集、計(jì)算、存儲(chǔ)、應(yīng)用過程中涉及多業(yè)務(wù)線條,多場(chǎng)景,將這些場(chǎng)景與工具(采集工具、管道工具、計(jì)算&調(diào)度工具、數(shù)據(jù)服務(wù)工具,數(shù)據(jù)管理工具、可視化工具等)進(jìn)行沉淀,研發(fā)出通用、高效的組件化工具,避免重復(fù)開發(fā),降低研發(fā)成本。
3)應(yīng)用服務(wù)化
之前大數(shù)據(jù)應(yīng)用的數(shù)據(jù)調(diào)用比較混雜,有些直接訪問數(shù)倉數(shù)據(jù)表,有些調(diào)用臨時(shí)接口等。通過數(shù)據(jù)中臺(tái)應(yīng)用服務(wù)化建設(shè),提供標(biāo)準(zhǔn)的應(yīng)用服務(wù),以數(shù)據(jù)可視化產(chǎn)品、數(shù)據(jù)API工具等服務(wù),支撐應(yīng)用的靈活調(diào)用。
4)組織清晰化
數(shù)據(jù)中臺(tái)團(tuán)隊(duì)專注于數(shù)據(jù)內(nèi)容&數(shù)據(jù)平臺(tái)開發(fā),提供各種基于數(shù)據(jù)的能力模塊,而其他部門人員如業(yè)務(wù)產(chǎn)品、運(yùn)營、分析等角色,只需要借助工具/產(chǎn)品有效地使用數(shù)據(jù),發(fā)揮其價(jià)值,無需關(guān)注數(shù)據(jù)加工的過程,做到各盡其職,充分發(fā)揮各自專長,同樣也能達(dá)到降本提效目的。大數(shù)據(jù)團(tuán)隊(duì)內(nèi)部本身組織和職責(zé)也傾于清晰化,比如按照職責(zé)分為平臺(tái)(工具)研發(fā)、數(shù)據(jù)研發(fā)、數(shù)據(jù)產(chǎn)品、數(shù)據(jù)分析等不同組織。
數(shù)據(jù)應(yīng)用到各個(gè)角落,除了之前可以支撐的決策分析以外,大數(shù)據(jù)與線上事務(wù)系統(tǒng)(OLTP)的聯(lián)動(dòng)場(chǎng)景非常多,比如我們?cè)陔娚唐脚_(tái)查詢個(gè)人所有歷史訂單,再比如一些刷單、反作弊的實(shí)時(shí)攔截,以及一些實(shí)時(shí)推薦等,這些都是通過將數(shù)據(jù)的運(yùn)算交給數(shù)據(jù)中臺(tái)部門處理,前臺(tái)部門直接通過API進(jìn)行結(jié)果調(diào)用。數(shù)據(jù)中臺(tái)的集中化建設(shè)也更好地支撐起創(chuàng)新業(yè)務(wù),比如通過大數(shù)據(jù)+分析建立起商業(yè)化數(shù)據(jù)變現(xiàn)產(chǎn)品,進(jìn)行數(shù)據(jù)售賣,把數(shù)據(jù)變成新的業(yè)務(wù)。
大家知道共享復(fù)用是中臺(tái)建設(shè)中很關(guān)鍵的一個(gè)詞,這也是為什么我們很多數(shù)據(jù)中臺(tái)下面會(huì)包括共享數(shù)據(jù)組,公共數(shù)據(jù)組等。實(shí)際上共享復(fù)用并不是大數(shù)據(jù)發(fā)展的一個(gè)新詞,在早期數(shù)據(jù)倉庫(建立公共數(shù)據(jù)模型)、大數(shù)據(jù)平臺(tái)(研發(fā)一些組件化工具)的建設(shè)中,也是滿足共享復(fù)用的。
如上提到,數(shù)據(jù)中臺(tái)本身是組織,方法的升級(jí)與變革,更多是利用技術(shù)的進(jìn)步更好地支持這些升級(jí)變革,如果你當(dāng)前的建設(shè)還是數(shù)據(jù)平臺(tái)+數(shù)倉(數(shù)據(jù)湖等)但是已經(jīng)具備這些方法和特性,我個(gè)人認(rèn)為也是合理的。
數(shù)據(jù)中臺(tái)的建設(shè)也需要相應(yīng)的成本與門檻,例如集群搭建、工具建設(shè)等。云計(jì)算的發(fā)展可以快速提供數(shù)據(jù)中臺(tái)建設(shè)的能力,例如企業(yè)無需自己搭建機(jī)房,使用云計(jì)算的彈性計(jì)算存儲(chǔ)能力以及豐富的工具,可以支撐數(shù)據(jù)中臺(tái)的快速搭建。
關(guān)于數(shù)據(jù)中臺(tái)的合理性也一直頗有爭議,大型(集團(tuán)型)公司有相互獨(dú)立的子公司,數(shù)據(jù)之間不需要太多連接與共享,分別構(gòu)建自己子數(shù)據(jù)中臺(tái)也是合理的架構(gòu),集團(tuán)層面可以利用數(shù)據(jù)子中臺(tái)進(jìn)行數(shù)據(jù)上報(bào)解決集團(tuán)層面數(shù)據(jù)大盤、統(tǒng)計(jì)、分析、財(cái)務(wù)等訴求。再比如一些小型公司是否需要在一開始就按照數(shù)據(jù)中臺(tái)的架構(gòu)進(jìn)行建設(shè),也是存有一些爭議。
數(shù)據(jù)中臺(tái)是2015年阿里提出來的雙中臺(tái)的概念其中的一個(gè)重要組成,阿里作為先驅(qū)者,提供了數(shù)據(jù)中臺(tái)架構(gòu)、以及非常多的建設(shè)思路供大家參考。從目前的建設(shè)效果來看,很多公司在數(shù)據(jù)中臺(tái)建設(shè)中有不錯(cuò)的成效(尤其是大中型公司),數(shù)據(jù)中臺(tái)整體思路得到了驗(yàn)證。但是數(shù)據(jù)中臺(tái)本身還算一個(gè)新鮮事務(wù),這個(gè)新鮮事務(wù)目前還沒有標(biāo)準(zhǔn)答案,只有參考答案。
二、數(shù)據(jù)中臺(tái)架構(gòu)與技術(shù)選型
我認(rèn)為的數(shù)據(jù)中臺(tái)核心架構(gòu)包括四大組成部分,具體是:
底座是數(shù)據(jù)基礎(chǔ)平臺(tái),包括數(shù)據(jù)采集平臺(tái)&計(jì)算平臺(tái)&存儲(chǔ)平臺(tái),這些可以自建也可以使用云計(jì)算服務(wù);
中間部分兩大塊是中臺(tái)的公共數(shù)據(jù)區(qū),公共數(shù)據(jù)區(qū)包括數(shù)據(jù)倉庫(數(shù)據(jù)湖) ,主要負(fù)責(zé)公共數(shù)據(jù)模型研發(fā),還包括統(tǒng)一指標(biāo)(標(biāo)簽)平臺(tái),負(fù)責(zé)把模型組織成可以對(duì)外服務(wù)的數(shù)據(jù),例如數(shù)據(jù)指標(biāo)、數(shù)據(jù)標(biāo)簽;
上層是數(shù)據(jù)應(yīng)用服務(wù)層,主要將公共數(shù)據(jù)區(qū)的數(shù)據(jù)對(duì)外包裝并提供服務(wù),包括數(shù)據(jù)接口平臺(tái)、多維查詢平臺(tái),數(shù)據(jù)可視化平臺(tái)、數(shù)據(jù)分析平臺(tái)等。
另外,數(shù)據(jù)研發(fā)平臺(tái)和數(shù)據(jù)管理平臺(tái)貫穿始終,其中:
1)數(shù)據(jù)開發(fā)平臺(tái)包括數(shù)據(jù)開發(fā)的各類工具組合,例如:數(shù)據(jù)管道工具(比如數(shù)據(jù)接入、數(shù)據(jù)導(dǎo)出)、模型設(shè)計(jì)工具、腳本開發(fā)工具、數(shù)據(jù)調(diào)度工具等。
2)數(shù)據(jù)管理平臺(tái)包括統(tǒng)一元數(shù)據(jù)管理、數(shù)據(jù)質(zhì)量管理、數(shù)據(jù)生命周期管理。針對(duì)數(shù)據(jù)全鏈路的數(shù)據(jù)管理,保證數(shù)據(jù)中臺(tái)可以監(jiān)控?cái)?shù)據(jù)鏈路中的數(shù)據(jù)流向、數(shù)據(jù)使用效果、數(shù)據(jù)生命周期,以衡量數(shù)據(jù)的價(jià)值與成本。
以上是數(shù)據(jù)中臺(tái)的核心部分,數(shù)據(jù)中臺(tái)的組成也可以更加豐富,比如包括:數(shù)據(jù)資產(chǎn)平臺(tái)、算法平臺(tái)等等。
在數(shù)據(jù)中臺(tái)的建設(shè)中一定不要忽視的是與業(yè)務(wù)的銜接,因?yàn)閿?shù)據(jù)來源于業(yè)務(wù)并最終應(yīng)用于業(yè)務(wù),在數(shù)據(jù)中臺(tái)的建設(shè)中需要有一系列的流程制度明確與業(yè)務(wù)的充分銜接,以保障數(shù)據(jù)源&數(shù)據(jù)產(chǎn)出的質(zhì)量。
在搭建數(shù)據(jù)中臺(tái)方面,基于開源技術(shù)的選型,尤其是Hadoop生態(tài)圈有非常多的選擇,從數(shù)據(jù)整體流向來看各大層級(jí)的選型。
數(shù)據(jù)抽取層:sqoop和flume是兩大主流工具,其中sqoop作為結(jié)構(gòu)化數(shù)據(jù)(關(guān)系型數(shù)據(jù)庫)離線抽取,flume作為非結(jié)構(gòu)化日志接入;
數(shù)據(jù)存儲(chǔ)層:Hadoop文件系統(tǒng)Hdfs大家都比較了解,而kafka作為流式數(shù)據(jù)總線應(yīng)用也非常廣泛;
計(jì)算與調(diào)度層,包括:
離線計(jì)算:離線計(jì)算主要是hive,spark,也有部分選用tez
實(shí)時(shí)計(jì)算:前些年storm,spark比較流行,最近幾年大家紛紛往Flink轉(zhuǎn)型
數(shù)據(jù)調(diào)度:除了像Airflow Azkaban Oozie等,易觀開源的Dolphin-scheduler也非?;钴S
數(shù)據(jù)引擎層:也就是我們常說的OLAP層,我們看到這一層里的選擇非常多,就不一一列舉了,(業(yè)務(wù)需求帶動(dòng)技術(shù)進(jìn)步的典型,選擇豐富主要是可以適配不同的數(shù)據(jù)應(yīng)用場(chǎng)景)。從概念上講分為ROLAP、MOLAP以及兩者混搭。MOLAP提前做一些預(yù)計(jì)算,以生成Cube的方式,達(dá)到空間換取查詢效率;而ROLAP是即查即用,效率完全取決于查詢引擎的性能,我個(gè)人認(rèn)為從將來看,ROLAP的趨勢(shì)會(huì)更加明顯,因?yàn)闆]有中間的數(shù)據(jù)鏈路。但目前看來,沒有一個(gè)統(tǒng)一的引擎足以支撐各類數(shù)據(jù)場(chǎng)景(這或許是將來的機(jī)會(huì)~);
數(shù)據(jù)可視化層:比較主流的有Metabase、Superset、Redash,也可以選擇阿里、百度的一些開源控件。
在開源技術(shù)的選擇里,我們看到各層里都有越來越多國內(nèi)開源的工具(也充分體現(xiàn)了我們?cè)诖髷?shù)據(jù)技術(shù)領(lǐng)域的進(jìn)步)。除了以上列舉的這些,整個(gè)Hadoop生態(tài)圈的技術(shù)選擇非常多,可以結(jié)合自己的實(shí)際場(chǎng)景選擇自己的架構(gòu),在選型層面可以參照的一些原則,比如:
是否有鮮活的成功案例,優(yōu)先找自己類似業(yè)務(wù)場(chǎng)景;
接口的開放性,與其他組件的兼容性;
社區(qū)活躍性度&發(fā)展趨勢(shì)。
當(dāng)然,數(shù)據(jù)中臺(tái)的選型不只是開源技術(shù),開源本身也不是完美的,例如維護(hù)開發(fā)成本較高,升級(jí)迭代不好把控,通過開源技術(shù)去建立數(shù)據(jù)中臺(tái)還是有一定研發(fā)門檻。
所以也有很多商業(yè)化的套件、以及基于云的數(shù)據(jù)組件可以選擇,包括數(shù)據(jù)采集、處理、分析、數(shù)據(jù)可視化全過程,國內(nèi)外有很多廠商都提供了豐富的選擇。尤其在大數(shù)據(jù)可視化這塊,國內(nèi)有許多非常專業(yè)的商業(yè)套件。
三、數(shù)據(jù)研發(fā)實(shí)踐
下面是一個(gè)簡單的數(shù)據(jù)處理架構(gòu)演進(jìn)過程:
最早數(shù)據(jù)倉庫的計(jì)算只支持批處理,通常是按天定時(shí)處理數(shù)據(jù),在后期逐步進(jìn)化到準(zhǔn)實(shí)時(shí),本質(zhì)上還是批處理,只是處理頻度上得有提升,到小時(shí)級(jí),或者15分鐘這種。
隨著技術(shù)不斷進(jìn)步,后期演化出一條新的流處理鏈路,這個(gè)鏈路和之前的批處理分別處理,然后在服務(wù)層面利用大數(shù)據(jù)的計(jì)算能力進(jìn)行合并,向外提供離線+實(shí)時(shí)數(shù)據(jù)服務(wù),這也是著名的lambda架構(gòu)。
最近幾年隨著Flink等技術(shù)的發(fā)展,有一個(gè)趨勢(shì)是流批一體化,在接入層統(tǒng)一采用流式接入,計(jì)算層采用統(tǒng)一套框架支持實(shí)時(shí)計(jì)算+離線計(jì)算,批處理僅僅作為流處理的一個(gè)特殊場(chǎng)景進(jìn)行支持。整體上可以做到流處理、批處理的自由切換。
流計(jì)算和批處理在需求場(chǎng)景上有一些本質(zhì)區(qū)別,前者主要用于支持線上業(yè)務(wù)場(chǎng)景(比如互聯(lián)網(wǎng)的推薦、搜索、風(fēng)控等),而批處理更多是支持離線統(tǒng)計(jì)分析。
日出而作,日落而息,大家針對(duì)大數(shù)據(jù)的統(tǒng)計(jì)分析習(xí)慣不會(huì)發(fā)生根本性變化,最簡單的T+1批處理方式也還是數(shù)據(jù)應(yīng)用必不可少的環(huán)節(jié)。在使用同一套架構(gòu)上,由于數(shù)據(jù)源變化&維度變化的多樣性,批處理往往面臨一些復(fù)雜場(chǎng)景,這是采用同一套框架上的一些難點(diǎn),充分支持好批處理也是將來流批一體框架的發(fā)展方向。
1)數(shù)倉分層
與傳統(tǒng)ETL不同的,我們采用的是ELT的數(shù)據(jù)架構(gòu),較為適合在互聯(lián)網(wǎng),總體分為業(yè)務(wù)數(shù)據(jù)層、公共數(shù)據(jù)層、應(yīng)用數(shù)據(jù)層三大層次。
① 業(yè)務(wù)數(shù)據(jù)層(ODS層)
原始數(shù)據(jù)經(jīng)過緩沖層(STG)的加載,會(huì)進(jìn)入數(shù)倉的業(yè)務(wù)數(shù)據(jù)層,這一層采用范式建模,基本保持與數(shù)據(jù)源完全一致的結(jié)構(gòu),對(duì)于變化的數(shù)據(jù),使用數(shù)據(jù)拉鏈加工與存儲(chǔ)。
這一層選用范式建模,是指保持源系統(tǒng)(例如關(guān)系數(shù)據(jù)庫)的范式結(jié)構(gòu),好處主要是:
一次性接入數(shù)據(jù)源結(jié)構(gòu),針對(duì)需求的變動(dòng)不用頻繁去與數(shù)據(jù)源對(duì)接;
便于業(yè)務(wù)研發(fā)更好地理解數(shù)據(jù),同時(shí)是也是公司的原始數(shù)據(jù)資產(chǎn)。
針對(duì)變化數(shù)據(jù)采用數(shù)據(jù)拉鏈的好處:
保留歷史數(shù)據(jù)的同時(shí),盡可能少占用存儲(chǔ)空間,長期來看,拉鏈存儲(chǔ)比起每天全量保留歷史節(jié)約大概90%空間;
快速、高效地獲取歷史任意一天業(yè)務(wù)系統(tǒng)的快照數(shù)據(jù)。
② 公共數(shù)據(jù)層(包括公共明細(xì)層DWD,公共匯總層DWS)
公共數(shù)據(jù)層是數(shù)據(jù)倉庫的核心層,是整個(gè)數(shù)倉中使用率最高的,這一層主要采用的維度建模思路進(jìn)行設(shè)計(jì),類型包括事務(wù)事實(shí)、周期快照、累積快照。同時(shí)為了方便下游對(duì)數(shù)據(jù)的使用,我們會(huì)設(shè)計(jì)一系列的寬表模型,將不同業(yè)務(wù)過程中的事實(shí)進(jìn)行統(tǒng)一整合,包括縱向整合&橫向整合;對(duì)于商品、用戶主數(shù)據(jù)類可能分散在不同的源系統(tǒng)中采用縱向整合;橫向整合主要包括交易、內(nèi)容等行為數(shù)據(jù)不同業(yè)務(wù)過程的整合,比如:用戶(用戶信息、注冊(cè)信息)購買(下單、支付、結(jié)算、覆約、完成)商品(商品信息,商家信息,等),我們會(huì)把訂單流轉(zhuǎn)業(yè)務(wù)過程整合放到一張明細(xì)表里,同時(shí)會(huì)研發(fā)一些基于用戶、或者商品視角的輕度匯總寬表。
寬表非常便于理解和易用,下游應(yīng)用調(diào)用也方便。我們之前也做過一些統(tǒng)計(jì),在調(diào)用分布來看,寬表的使用占到70%以上。
雖然寬表的使用在數(shù)倉建模中非常普遍,但是也有一些缺陷:
數(shù)據(jù)冗余較多,在存儲(chǔ)、計(jì)算、調(diào)用較為占資源,建議盡量還是按場(chǎng)景去使用;
寬表整合的信息較多,數(shù)據(jù)權(quán)限不好控制。建議可以根據(jù)需求,在有限范圍內(nèi)開放整體寬表權(quán)限,或者通過視圖或者子表的方式建立不同權(quán)限的數(shù)據(jù)范圍,適應(yīng)不同組織的需求;
寬表通常依賴比較多,會(huì)影響數(shù)據(jù)的產(chǎn)出的時(shí)效。
③ 應(yīng)用數(shù)據(jù)層(DWA層)
顧名思義,就是偏向應(yīng)用的數(shù)據(jù)加工,也可以叫集市層,這一層的設(shè)計(jì)可以相對(duì)靈活,貼近應(yīng)用即可,總體設(shè)計(jì)思想仍然可以按維度建模思想為主。
2)主題分類
數(shù)倉架構(gòu)的數(shù)據(jù)分類兩個(gè)視角,包括主題視角與業(yè)務(wù)視角。
① 數(shù)據(jù)主題視角
最重要的一個(gè)視角,也就是咱們經(jīng)常提到的數(shù)倉主題,主題是將企業(yè)的業(yè)務(wù)進(jìn)行宏觀數(shù)據(jù)抽象,是數(shù)據(jù)倉庫里數(shù)據(jù)的主要組織形式,劃分方法如下:
參照波特價(jià)值鏈,分析企業(yè)本身經(jīng)營的業(yè)務(wù)(基本活動(dòng)、支持型活動(dòng)),分別對(duì)應(yīng)哪些數(shù)據(jù);
參照業(yè)界通用模型,例如像IBM、TD等針對(duì)大型行業(yè)(如電信、金融、零售)有一些數(shù)據(jù)主題的通用劃分方法;
對(duì)企業(yè)的內(nèi)部數(shù)據(jù)(線上數(shù)據(jù)模塊、數(shù)據(jù)字典)進(jìn)行摸底,確認(rèn)對(duì)應(yīng)到哪些主題。
劃分結(jié)果會(huì)按照三個(gè)層級(jí):主題域--》主題--》子主題。
第一級(jí)是主題域,針對(duì)相對(duì)穩(wěn)定的主題進(jìn)行合并,歸攏到主題域,利于數(shù)據(jù)的理解與建立全局的數(shù)據(jù)資產(chǎn)目錄;
第二級(jí)是主題;
第三級(jí)是子主題,主要針對(duì)有些主題下分類較多,比如供應(yīng)鏈主題下會(huì)包含采購、倉儲(chǔ)、配送等子主題。
數(shù)據(jù)主題劃分建議完全互斥,不建議重復(fù)。
② 數(shù)據(jù)業(yè)務(wù)視角
數(shù)據(jù)業(yè)務(wù)域是根據(jù)企業(yè)經(jīng)營的具體業(yè)務(wù),結(jié)合企業(yè)的組織架構(gòu)進(jìn)行劃分,層次和分類可以相對(duì)靈活,子分類可以允許重復(fù),因?yàn)閮蓷l不同的業(yè)務(wù)域可能經(jīng)營相同的業(yè)務(wù),例如電商、內(nèi)容下都有會(huì)員這個(gè)業(yè)務(wù)。
上圖是一個(gè)比較典型的內(nèi)容+電商的數(shù)據(jù)主題與業(yè)務(wù)分類。
以上一橫一縱兩個(gè)視角,將數(shù)據(jù)進(jìn)行更好的歸類,在數(shù)據(jù)模型設(shè)計(jì)中會(huì)打上相應(yīng)分類標(biāo)簽,從而讓數(shù)據(jù)研發(fā)&數(shù)據(jù)使用人員統(tǒng)一認(rèn)知。以上兩種分類方式主要應(yīng)用于核心的公共數(shù)據(jù)層。
業(yè)務(wù)數(shù)據(jù)層、應(yīng)用數(shù)據(jù)層并不需要遵循以上分類規(guī)則,比如業(yè)務(wù)數(shù)據(jù)層(ODS層)是按照數(shù)據(jù)源進(jìn)行分類,應(yīng)用數(shù)據(jù)層(DWA)是根據(jù)具體的應(yīng)用進(jìn)行分類。
除了合理的架構(gòu)之外,數(shù)據(jù)研發(fā)的流程也很重要,總體流程如下:
包括需求分析/數(shù)據(jù)調(diào)研、數(shù)據(jù)模型設(shè)計(jì)、數(shù)據(jù)開發(fā)&測(cè)試、上線發(fā)布等流程。
在之前數(shù)據(jù)中臺(tái)的核心架構(gòu)提到不閉門造車,數(shù)據(jù)研發(fā)需要與業(yè)務(wù)部門充分銜接,比如在數(shù)據(jù)調(diào)研中要與業(yè)務(wù)研發(fā)同學(xué)進(jìn)行線上數(shù)據(jù)&結(jié)構(gòu)訪談;在數(shù)據(jù)開發(fā)中,與分析&業(yè)務(wù)同學(xué)共同確認(rèn)標(biāo)準(zhǔn)口徑;在數(shù)據(jù)研發(fā)完成后對(duì)數(shù)據(jù)使用方進(jìn)行數(shù)據(jù)發(fā)布與培訓(xùn)。
以上流程中,除了需求調(diào)研,其他部分我們都進(jìn)行了線上化,包括數(shù)據(jù)的模型設(shè)計(jì),早期我們會(huì)手寫mapping文檔,后期我們逐步把mapping文檔進(jìn)行了線上化,整體的數(shù)據(jù)模型設(shè)計(jì)通過模型設(shè)計(jì)工具完成,包括從概念模型、邏輯模型到物理模型的設(shè)計(jì)。模型設(shè)計(jì)完成后,可以一鍵生成數(shù)據(jù)知識(shí)文檔。
數(shù)據(jù)研發(fā)完成,還需要關(guān)注數(shù)據(jù)生命周期,一方面數(shù)據(jù)量的飛速增長不僅僅需要占用大量存儲(chǔ),比如像自建機(jī)房,會(huì)涉及擴(kuò)充機(jī)柜、機(jī)房,往往會(huì)面臨一些瓶頸;另外一方面,大量的數(shù)據(jù)會(huì)降低數(shù)據(jù)的計(jì)算效率,所以從數(shù)據(jù)的生成開始,我們就需要考慮生命周期,并且結(jié)合數(shù)據(jù)的使用情況制定數(shù)據(jù)歸檔、數(shù)據(jù)銷毀等管理策略。
針對(duì)數(shù)據(jù)已經(jīng)占用了大量存儲(chǔ)資源,可以采取一系列措施進(jìn)行成本控制,例如:
降存量:通過數(shù)據(jù)壓縮技術(shù)、降副本等方式,以及在數(shù)據(jù)模型更合理的設(shè)計(jì),將存量數(shù)據(jù)存儲(chǔ)降低;
控增量:根據(jù)數(shù)據(jù)重要性,可恢復(fù)性等考量角度,確認(rèn)數(shù)據(jù)的保留周期,并根據(jù)周期自動(dòng)歸檔或刪除;
攤成本:可以通過一些算法,比如數(shù)據(jù)調(diào)用分布、需求來源等,把成本分?jǐn)偟较鄳?yīng)業(yè)務(wù)部門,讓相關(guān)業(yè)務(wù)部門關(guān)注到成本。
數(shù)據(jù)安全也是數(shù)據(jù)生命周期管理重的一個(gè)重要課題,比如針對(duì)用戶敏感信息,需要在接入時(shí)考慮如何加密。一種做法是通過一個(gè)獨(dú)立的物理集群對(duì)敏感數(shù)據(jù)進(jìn)行隔離與強(qiáng)管控;數(shù)據(jù)使用中,也需要將數(shù)據(jù)劃分不同的安全或敏感等級(jí)(例如有些財(cái)務(wù)數(shù)據(jù)的非常敏感,需要謹(jǐn)慎對(duì)外開放),根據(jù)不同的等級(jí)設(shè)定不同的訪問審批機(jī)制。另外,在數(shù)據(jù)歸檔、銷毀也需要制定好配套的安全管理措施,避免安全風(fēng)險(xiǎn)。
數(shù)據(jù)質(zhì)量管理主要包括3個(gè)角度:準(zhǔn)確性、及時(shí)性、一致性。
管理的環(huán)節(jié)包括:事前、事中、事后、以及事故管理。
針對(duì)數(shù)據(jù)運(yùn)維的告警發(fā)送,傳統(tǒng)的方式主要是短信、郵件、電話;隨著移動(dòng)辦公工具功能逐步的強(qiáng)大,可以將運(yùn)維告警以數(shù)據(jù)接口的方式與這些工具進(jìn)行對(duì)接,將告警發(fā)送到企業(yè)內(nèi)部的即時(shí)通訊工具。
數(shù)據(jù)研發(fā)最終還是需要賦能到業(yè)務(wù)&應(yīng)用,一個(gè)合理的數(shù)據(jù)應(yīng)用架構(gòu)是非常關(guān)鍵的,這張圖是一個(gè)應(yīng)用架構(gòu)的簡圖參考:
從數(shù)據(jù)的流向上分:
數(shù)據(jù)倉庫(或者數(shù)據(jù)湖):負(fù)責(zé)原始數(shù)據(jù)的計(jì)算,主要將數(shù)據(jù)落地到HDFS;
數(shù)據(jù)引擎層:數(shù)據(jù)加工完成之后,會(huì)將數(shù)據(jù)推送到不同的引擎中,這一層之前提到選擇非常多,可以根據(jù)自己的場(chǎng)景選擇一個(gè)混搭組合,比如我們目前選擇的有Presto,Kylin,Druid,Mysql;
數(shù)據(jù)服務(wù)層:通過統(tǒng)一化的SQL調(diào)用服務(wù),屏蔽底層不同的數(shù)據(jù)引擎,為上層統(tǒng)一查詢提供標(biāo)準(zhǔn)接口;
指標(biāo)平臺(tái):指標(biāo)平臺(tái)是一個(gè)非常關(guān)鍵的產(chǎn)品,定位于銜接數(shù)據(jù)研發(fā)與數(shù)據(jù)應(yīng)用,包括指標(biāo)的標(biāo)準(zhǔn)定義、邏輯、計(jì)算方式、分類等各項(xiàng)內(nèi)容。指標(biāo)分類上我們分為標(biāo)準(zhǔn)指標(biāo)(指標(biāo)口徑經(jīng)過審核過)、以及非標(biāo)準(zhǔn)指標(biāo);
多維查詢:這是我們的一個(gè)即席查詢工具,查詢的數(shù)據(jù)主要來源指標(biāo)平臺(tái),可以選定不同的指標(biāo)維度組合進(jìn)行結(jié)果呈現(xiàn),用戶可以一次性查詢得到結(jié)果,也可以將查詢結(jié)果配置成可視化的報(bào)表進(jìn)行固化。
中間是統(tǒng)一元數(shù)據(jù)管理:對(duì)整個(gè)架構(gòu)中可以對(duì)外提供服務(wù)的元數(shù)據(jù)進(jìn)行統(tǒng)一管理(包括數(shù)倉的元數(shù)據(jù)、查詢引擎的元數(shù)據(jù)、指標(biāo)元數(shù)據(jù)等),以及監(jiān)控這些元數(shù)據(jù)的調(diào)用情況。
最右側(cè)是權(quán)限管理:權(quán)限管理關(guān)乎到數(shù)據(jù)安全,在設(shè)計(jì)上需要考慮周全,比如針對(duì)表級(jí)、指標(biāo)級(jí)、維度級(jí)別都可以進(jìn)行控制;同時(shí)產(chǎn)品層面也需要靈活配置權(quán)限審批級(jí)別與人員。
在面向用戶使用層面,我們主要開放的是多維查詢&可視化,用戶通過多維去查詢各類指標(biāo)&維度數(shù)據(jù),得到數(shù)據(jù)結(jié)果列表,再選擇可視化配置面板,完成各類圖表、表格的自主配置,并發(fā)布到個(gè)人看板或者業(yè)務(wù)大盤目錄里。也可以將配置的數(shù)據(jù)看板進(jìn)行靈活組合,定制成一個(gè)小型的數(shù)據(jù)產(chǎn)品。
在數(shù)據(jù)研發(fā)中,也要考量數(shù)據(jù)的ROI,下面是一個(gè)簡單的ROI模型:
根據(jù)活躍度(調(diào)用次數(shù)等)、覆蓋度(通過血緣關(guān)系找出依賴數(shù)量),以及貢獻(xiàn)度(依賴數(shù)據(jù)的重要等級(jí))來確認(rèn)數(shù)據(jù)的價(jià)值。同時(shí)會(huì)評(píng)估數(shù)據(jù)的成本指數(shù)(例如計(jì)算成本、存儲(chǔ)成本等)。
通過以上兩者相除,綜合得到數(shù)據(jù)的ROI,針對(duì)ROI可以將數(shù)據(jù)分為不同等級(jí),并相應(yīng)進(jìn)行數(shù)據(jù)治理。比如針對(duì)價(jià)值低,成本高的數(shù)據(jù),可以考慮下線等。
數(shù)據(jù)研發(fā)趨勢(shì)&關(guān)注點(diǎn)
提效:目前借助工具的研發(fā)可以把絕大部分?jǐn)?shù)據(jù)研發(fā)工作線上化,將來借助AI等能力,實(shí)現(xiàn)數(shù)據(jù)處理中包括開發(fā)、運(yùn)維的自動(dòng)化,提升處理效率;
靈活:流批一體化,包括流處理與批處理自由切換,之前已經(jīng)提到過,個(gè)人認(rèn)為也是一個(gè)發(fā)展的趨勢(shì);
降本:數(shù)據(jù)研發(fā)鏈路的成本控制,在數(shù)據(jù)建設(shè)的早期通常不太引起關(guān)注,隨著數(shù)據(jù)量不斷的積累,往往存儲(chǔ)、計(jì)算成本成為瓶頸。針對(duì)數(shù)據(jù)建設(shè)成本需提前考慮;
算力:我們看到Google,IBM和阿里都在研究量子計(jì)算,將來的數(shù)據(jù)中間層(比如數(shù)倉的公共模型)是否可以考慮虛擬化(比如只保留規(guī)則&數(shù)據(jù)結(jié)構(gòu)),具體數(shù)據(jù)內(nèi)容在應(yīng)用發(fā)起時(shí),即調(diào)即用,更多時(shí)候可以不需要占用存儲(chǔ)資源。算力的不斷提升,有可能會(huì)顛覆一些傳統(tǒng)數(shù)據(jù)建設(shè)的思路。
Q&A
Q1:請(qǐng)問貴公司如何壓縮數(shù)據(jù)?又如何刪除副本呢?
A:我們主要使用parquet +snappy壓縮;另外,如果發(fā)現(xiàn)壓縮率較低,可以通過排序來調(diào)整數(shù)據(jù)分布,降副本可以了解下EC糾刪碼技術(shù)。
Q2:對(duì)于批處理效率低的問題該怎么處理?
A:具體可以看什么原因?qū)е?,如果是整體效率低,可以看資源利用是否集中,如果集中,可以考慮任務(wù)分等級(jí)錯(cuò)峰進(jìn)行隊(duì)列隔離等;如果是個(gè)別任務(wù)問題,那就要考慮邏輯和加工鏈路是否有問題,比如說可以全量改增量處理,邏輯參數(shù)優(yōu)化;如果傾斜導(dǎo)致可以針對(duì)具體傾斜原因采取不同的優(yōu)化方式。
Q3:請(qǐng)問基于Hadoop生態(tài)組件構(gòu)建DW存在哪些不足?與MPP比較?
A:如果之前一直是按照傳統(tǒng)商業(yè)套件進(jìn)行建設(shè),可能在數(shù)據(jù)不能直接update這個(gè)點(diǎn)上不習(xí)慣。另外大部分技術(shù)都是經(jīng)歷反復(fù)演進(jìn)才達(dá)到穩(wěn)定的,所以最好能選用成熟組件。與MPP比較,MPP橫向擴(kuò)充到一定規(guī)??赡軙?huì)有瓶頸,而Hadoop集群可以靈活擴(kuò)充節(jié)點(diǎn)來增加算力,比如現(xiàn)在國內(nèi)單集群幾千臺(tái)、上萬臺(tái)的場(chǎng)景都有。
Q4:數(shù)據(jù)中臺(tái)建設(shè)團(tuán)隊(duì)的KPI怎么評(píng)定?
A:需求響應(yīng)效率、前臺(tái)數(shù)據(jù)調(diào)用效率、數(shù)據(jù)覆蓋度、數(shù)據(jù)準(zhǔn)確性、及時(shí)性、用戶滿意度、成本控制效果等。
Q5:您對(duì)HATP在行業(yè)應(yīng)用趨勢(shì)和方向如何看?
A:HATP我個(gè)人沒有研究;如果HATP能解跨不同環(huán)境之間的數(shù)據(jù)連通性,應(yīng)該可以替代一些當(dāng)前大數(shù)據(jù)的應(yīng)用場(chǎng)景。
Q6: 對(duì)于搭建數(shù)據(jù)中臺(tái)的生態(tài)工具,有什么建議嗎?
A:文中有一些常規(guī)的選型(主要調(diào)研了當(dāng)前一些主流工具),基本上都是經(jīng)過了驗(yàn)證過,更多還是找適合自己場(chǎng)景的工具。
Q7:請(qǐng)問現(xiàn)在對(duì)提效方面有什么好的開源的線上工具嗎?
A:建模、開發(fā)中的一些提效小工具成本不高可以考慮自研,但是復(fù)雜一些例如任務(wù)調(diào)度完全可以找到成熟的開源工具。
Q8:范式建模層,是否會(huì)形成統(tǒng)一數(shù)據(jù)模型,即one model?
A:不會(huì),范式主要應(yīng)用在業(yè)務(wù)數(shù)據(jù)層,原則上我們不對(duì)外提供這一層的服務(wù),主要用于加工DW層。
Q9:業(yè)務(wù)數(shù)據(jù)層,如果設(shè)計(jì)成拉鏈表,抽取數(shù)據(jù)是肯定是做更新插入操作,增量和存量數(shù)據(jù)做比對(duì),很耗性能,特別是存量數(shù)據(jù)是海量的情況下,請(qǐng)問下如何處理此類問題?
A:大表拉鏈效率慢優(yōu)化可以考慮減少計(jì)算數(shù)據(jù)量,例如把穩(wěn)態(tài)數(shù)據(jù)進(jìn)行歸檔,不參與計(jì)算?;蛘呖梢試L試通過冷熱數(shù)據(jù)分離,再視圖合并。
Q10:請(qǐng)問mapping是建模管理的?是否用用ERWIN或者PD工具吧?
A:以前我們是通過excel模版建模并生成mapping文檔,現(xiàn)在只是把這個(gè)模版搬到線上,這個(gè)小工具可以連通到建表,并且發(fā)布到數(shù)據(jù)知識(shí)系統(tǒng)。我們沒有使用ERWIN或者PD,模型之間的關(guān)系會(huì)輔助用一些思維導(dǎo)圖軟件。
Q11:為什么要基于Hive建數(shù)倉?它不支持索引、更新、事務(wù)。
A:Hive 搭建數(shù)倉當(dāng)前來看處理效率、穩(wěn)定性都是經(jīng)過驗(yàn)證過的。更新可以通過高效的insert over write來解決。
Q12:數(shù)據(jù)湖是什么技術(shù)?跟數(shù)倉的關(guān)系是啥?
A:跟數(shù)倉是兩個(gè)獨(dú)立的概念,通過直接接入源系統(tǒng)的原始數(shù)據(jù)(包括結(jié)構(gòu)化、非結(jié)構(gòu)化),利用大數(shù)據(jù)強(qiáng)大的計(jì)算能力,直接將數(shù)據(jù)服務(wù)于應(yīng)用。主要為縮短傳統(tǒng)數(shù)倉的中間建模與處理(ETL)過程,目前有看到一些云+數(shù)據(jù)湖的方案。
Q13:業(yè)務(wù)元數(shù)據(jù)、技術(shù)元數(shù)據(jù)在中臺(tái)中如何統(tǒng)一對(duì)應(yīng)管理?
A:通過統(tǒng)一元數(shù)據(jù)管理工具例如指標(biāo)元數(shù)據(jù)管理工具、數(shù)據(jù)表元數(shù)據(jù)管理工具,可以將業(yè)務(wù)元數(shù)據(jù)對(duì)應(yīng)到技術(shù)元數(shù)據(jù),建議可以在工具中設(shè)置一些強(qiáng)規(guī)范,來保證統(tǒng)一對(duì)應(yīng)。
Q14:使用kylin做olap很不靈活,貴公司是使用kylin嗎?您認(rèn)為kylin主要是用于什么場(chǎng)景?
A:是的,大部分場(chǎng)景使用的是kylin,kylin主要使用用業(yè)務(wù)形態(tài)相對(duì)穩(wěn)定、計(jì)算的維度指標(biāo)矩陣相對(duì)固定、原始數(shù)據(jù)量較大且有去重類指標(biāo)計(jì)算的情況。通過一些模型設(shè)計(jì)和技術(shù)手段可以相對(duì)降低kylin靈活性差的問題,比如:模型設(shè)計(jì)的抽象化、底層使用視圖、使用Hybrids進(jìn)行橋接等。
Q15:貴司數(shù)據(jù)治理工具用的哪個(gè)?
A:目前沒有專門的工具,從一開始保持?jǐn)?shù)據(jù)的規(guī)范化建設(shè)、合理的架構(gòu),可以降低治理的工作;如果要治理可以考慮通過全鏈條元數(shù)據(jù)管理過程配合數(shù)據(jù)治理。
Q16:所講的體系如何保障數(shù)據(jù)業(yè)務(wù)化的、端到端的實(shí)時(shí)應(yīng)用?
A:我們目前的場(chǎng)景還不多,可以了解其他互聯(lián)網(wǎng)場(chǎng)景豐富一些方案。如果是支撐端到端的實(shí)時(shí)應(yīng)用,要保證穩(wěn)定性需要在服務(wù)層有多種調(diào)用方案,例如針對(duì)同一個(gè)應(yīng)用,可以有常規(guī)API調(diào)用以及降級(jí)API。
Q17:關(guān)于指標(biāo)體庫如何設(shè)計(jì)?以及ad-hoc查詢場(chǎng)景的支持。
A:我們預(yù)計(jì)在5、6月會(huì)組織一次《數(shù)據(jù)模型設(shè)計(jì)實(shí)踐》以及《指標(biāo)體系與ad-doc》的直播分享,會(huì)有專門負(fù)責(zé)這塊數(shù)據(jù)架構(gòu)的小伙伴來給大家介紹。
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:
長按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!