Lenovo x DorisDB:簡(jiǎn)化數(shù)據(jù)處理鏈路,極大提升BI分析效率
Lenovo聯(lián)晟智達(dá)隸屬于全球PC領(lǐng)導(dǎo)廠商聯(lián)想集團(tuán),致力于打造科技驅(qū)動(dòng)、柔性敏捷、服務(wù)體驗(yàn)一流的智慧物流生態(tài)平臺(tái),面向產(chǎn)業(yè)端企業(yè)提供綜合物流解決方案,成為服務(wù)于中國(guó)及全球客戶的智能供應(yīng)鏈科技企業(yè)。聯(lián)晟智達(dá)大數(shù)據(jù)團(tuán)隊(duì)逐步引入了多種OLAP分析引擎來更好的滿足需求。DorisDB從眾多的OLAP分析引擎中脫穎而出,它采用了全面向量化的計(jì)算技術(shù),是性能非常強(qiáng)悍的新一代MPP數(shù)據(jù)庫(kù)。通過引入DorisDB,構(gòu)建了全新的統(tǒng)一數(shù)據(jù)服務(wù)平臺(tái),大大降低了數(shù)據(jù)鏈路開發(fā)復(fù)雜性,極大提升了BI分析效率。
“作者:韓文博聯(lián)想銷售物流大數(shù)據(jù)平臺(tái)負(fù)責(zé)人,專注于數(shù)倉(cāng)建設(shè)、數(shù)據(jù)分析等領(lǐng)域研究。”
一、OLAP引擎在Lenovo聯(lián)晟智達(dá)的演進(jìn)史
第一階段
在2018年之前,聯(lián)晟智達(dá)的數(shù)據(jù)總量還不是特別大,這個(gè)階段使用的是傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)(SQL Server),數(shù)據(jù)倉(cāng)庫(kù)體系還尚未建立,很多數(shù)據(jù)需求的實(shí)現(xiàn)都是以SQL腳本的開發(fā)方式來滿足。
但隨著業(yè)務(wù)復(fù)雜度不斷提升,以及數(shù)據(jù)量的快速增長(zhǎng),這種模式很快遇到了瓶頸。最主要體現(xiàn)在查詢響應(yīng)時(shí)效變得越來越慢。例如:之前運(yùn)行一個(gè)任務(wù)需要10分鐘或20分鐘,現(xiàn)在需要一個(gè)小時(shí)或更長(zhǎng)時(shí)間,查詢效率嚴(yán)重下降。另外數(shù)據(jù)存儲(chǔ)容量也存在瓶頸,無(wú)法滿足隨業(yè)務(wù)而快速增長(zhǎng)的數(shù)據(jù)量存儲(chǔ)需求。
第二階段
2019年隨著數(shù)據(jù)倉(cāng)庫(kù)在Hadoop/Hive體系上搭建和完善,ETL任務(wù)全部轉(zhuǎn)移至Hadoop集群,這個(gè)階段使用數(shù)十臺(tái)Presto完成OLAP分析。Presto天然和Hive共享元數(shù)據(jù)信息,且共同使用物理數(shù)據(jù)存儲(chǔ),大量的對(duì)數(shù)倉(cāng)表的靈活查詢使用Presto完成。前端BI層面使用Tableau直接連接Presto,實(shí)現(xiàn)數(shù)據(jù)分析與挖掘。
第三階段
2021年聯(lián)晟大數(shù)據(jù)團(tuán)隊(duì)進(jìn)行了離線數(shù)倉(cāng)的整體設(shè)計(jì)和搭建,既需要做低延時(shí)的BI報(bào)表,又要滿足Adhoc復(fù)雜查詢,同時(shí)對(duì)高效明細(xì)查詢也有很高的要求。這個(gè)階段我們根據(jù)場(chǎng)景引入了OLAP圈炙手可熱的DorisDB產(chǎn)品,它既能做Presto的Adhoc多表關(guān)聯(lián)查詢及復(fù)雜嵌套子查詢,又能提供比ClickHouse更好的單表明細(xì)查詢和多維物化視圖上卷加速,滿足極速BI分析需求。
二、數(shù)據(jù)分析體系架構(gòu)
1.OLAP體系現(xiàn)狀
整個(gè)數(shù)據(jù)分析體系,由數(shù)據(jù)采集、數(shù)據(jù)存儲(chǔ)與計(jì)算、數(shù)據(jù)查詢與分析和數(shù)據(jù)應(yīng)用組成。
原始架構(gòu)圖:

數(shù)據(jù)采集
1)通過Sqoop讀取RDBMS導(dǎo)入Hive。
2)用Flume來同步日志文件到Hive。
3)通過爬蟲技術(shù)將網(wǎng)上數(shù)據(jù)爬取下來,存儲(chǔ)到RDBMS,再由Sqoop讀取RDBMS,導(dǎo)入到Hive。
數(shù)據(jù)存儲(chǔ)與計(jì)算
離線數(shù)據(jù)處理:利用Hive高可擴(kuò)展的批處理能力承擔(dān)所有的離線數(shù)倉(cāng)的ETL和數(shù)據(jù)模型加工的工作。
數(shù)據(jù)查詢與分析
數(shù)據(jù)共享層主要提供對(duì)外服務(wù)的底層數(shù)據(jù)存儲(chǔ)和查詢共享界面。離線ETL后的數(shù)據(jù)寫入RDBMS或MPP數(shù)據(jù)庫(kù)中,面向下游多種服務(wù),為Tableau BI、多維固定報(bào)表、Adhoc即席查詢等不同場(chǎng)景提供OLAP查詢分析能力。應(yīng)用側(cè)完美服務(wù)于BI報(bào)表平臺(tái)、即席查詢分析平臺(tái)及數(shù)據(jù)可視化平臺(tái)(Control Tower)
數(shù)據(jù)應(yīng)用層
數(shù)據(jù)應(yīng)用層主要為面向管理和運(yùn)營(yíng)人員的報(bào)表,查詢要求低時(shí)延響應(yīng),需求也是迭代層出不窮。面向數(shù)據(jù)分析師的即席查詢,更是要求OLAP引擎能支持復(fù)雜SQL處理、從海量數(shù)據(jù)中快速遴選數(shù)據(jù)的能力。
三、各OLAP分析工具選型比較
1.ClickHouse
優(yōu)點(diǎn)
1)很強(qiáng)的單表查詢性能,適合基于大寬表的OLAP多維分析查詢。
2)包含豐富的MergeTree Family,支持預(yù)聚合。
3)非常適合大規(guī)模日志明細(xì)數(shù)據(jù)寫入分析。
缺點(diǎn)
1)不支持真正的刪除與更新。
2)Join方式不是很友好。
3)并發(fā)能力比較低。
4)MergeTree合并不完全。
2.DorisDB
優(yōu)點(diǎn)
1)單表查詢和多表查詢性能都很強(qiáng),可以同時(shí)較好支持寬表查詢場(chǎng)景和復(fù)雜多表查詢。
2)支持高并發(fā)查詢。
3)支持實(shí)時(shí)數(shù)據(jù)微批ETL處理。
4)流式和批量數(shù)據(jù)寫入都能都比較強(qiáng)。
5)兼容MySQL協(xié)議和標(biāo)準(zhǔn)SQL。
缺點(diǎn)
1)大規(guī)模ETL能力不足。
2)資源隔離還不完善。
四、DorisDB在SEC數(shù)據(jù)中心的應(yīng)用實(shí)踐
渠道倉(cāng)配管理(SEC)的核心數(shù)據(jù)來自兩大塊:一個(gè)是消費(fèi)業(yè)務(wù);第二個(gè)是SMB中小企業(yè)務(wù)(Think、揚(yáng)天)?;谶@些數(shù)據(jù),根據(jù)不同的業(yè)務(wù)場(chǎng)景需求,匯總出相關(guān)業(yè)務(wù)統(tǒng)計(jì)指標(biāo),對(duì)外提供查詢分析服務(wù)。
1.原有解決方案
在引入DorisDB之前,用到大量Hive任務(wù)進(jìn)行業(yè)務(wù)邏輯清洗加工,清洗加工后的數(shù)據(jù)部分保留在Hive,部分?jǐn)?shù)據(jù)寫入MySQL/SQL Server,以達(dá)到數(shù)據(jù)的落地。前端BI通過Presto計(jì)算引擎連接Hive、MysSQL、SQL Server等,實(shí)現(xiàn)報(bào)表分析及數(shù)據(jù)可視化。
2.技術(shù)痛點(diǎn)
原有架構(gòu)主要有以下兩個(gè)問題:
1)數(shù)據(jù)邏輯沒有很好做歸攏合并,維護(hù)工作量大,新需求無(wú)法快速響應(yīng)。
2)Presto的在SQL較多的Tableau復(fù)雜報(bào)表上響應(yīng)較慢,不能滿足業(yè)務(wù)即時(shí)看數(shù)需求。
因此我們希望對(duì)原有體系進(jìn)行優(yōu)化,核心思路是利用一個(gè)OLAP引擎進(jìn)行這一層的統(tǒng)一,對(duì)OLAP引擎的要求是比較高的:
1)能支撐大吞吐量的數(shù)據(jù)寫入要求。
2)可以支持多維度組合的靈活查詢,響應(yīng)時(shí)效在100ms以下。
3)比較好的支持多表關(guān)聯(lián)。
4)單表查詢數(shù)據(jù)量在10億以上,響應(yīng)時(shí)效在100ms以下。
經(jīng)過大量調(diào)研,DorisDB比較契合數(shù)據(jù)中心的整體要求。DorisDB本身高效的查詢能力,可以為數(shù)據(jù)中心數(shù)據(jù)報(bào)告提供一體化服務(wù)。新架構(gòu)具備以下優(yōu)點(diǎn):
1)結(jié)構(gòu)清晰,RDBMS專注于數(shù)據(jù)的清洗,業(yè)務(wù)邏輯計(jì)算從Hive遷到DorisDB內(nèi)實(shí)現(xiàn),DorisDB就是數(shù)據(jù)業(yè)務(wù)邏輯的終點(diǎn)。
2)可以維護(hù)統(tǒng)一的數(shù)據(jù)口徑,一份數(shù)據(jù)輸入,多個(gè)APP接口輸出。
3)MPP分布式架構(gòu),得以更好的支持分布式聚合和關(guān)聯(lián)查詢。
4)和Tableau有較好的兼容性,可以滿足核心BI分析需求。
3.基于DorisDB的解決方案
升級(jí)后架構(gòu)圖:

數(shù)據(jù)表設(shè)計(jì)
1)數(shù)據(jù)模型設(shè)計(jì)
DorisDB本身提供三種數(shù)據(jù)模型:明細(xì)模型/聚合模型/更新模型。對(duì)SEC業(yè)務(wù)來說,目前以明細(xì)模型為主,后續(xù)如果有其他場(chǎng)景,再考慮應(yīng)用其他模型。
2)數(shù)據(jù)分區(qū)/分桶
DorisDB提供的數(shù)據(jù)分區(qū)和分桶功能,可以很好的提升歷史庫(kù)存及周轉(zhuǎn)場(chǎng)景下明細(xì)查詢的性能。例如,歷史庫(kù)存查詢常見的一種查詢場(chǎng)景,是查詢過去某一時(shí)間段內(nèi)的庫(kù)存周轉(zhuǎn)情況,我們可以在DorisDB中根據(jù)出庫(kù)時(shí)間進(jìn)行分區(qū),過濾掉不必要的分區(qū)數(shù)據(jù),減少整個(gè)查詢的數(shù)據(jù)量進(jìn)行快速定位,盡量減少了查詢語(yǔ)句所覆蓋的數(shù)據(jù)范圍,分區(qū)、分桶、前綴索引等能力,可以大大提高點(diǎn)查并發(fā)能力。這些特性對(duì)業(yè)務(wù)迎接增長(zhǎng),面對(duì)未來可能出現(xiàn)的高并發(fā)場(chǎng)景也具有非常大的意義。查詢某一個(gè)物料條碼(SN)的歷史軌跡數(shù)據(jù),能夠快速的檢索出該條碼的所有歷史出入庫(kù)軌跡信息,幫助我們高效的完成供應(yīng)鏈全生命周期回溯。
物化視圖
我們利用DorisDB物化視圖能夠?qū)崟r(shí)、按需構(gòu)建,靈活增加刪除以及透明化使用的特性,建立了基于庫(kù)存物料SN粒度、基于產(chǎn)品類型特征粒度、基于庫(kù)房粒度、基于分銷商粒度的物化視圖?;谶@些物化視圖,可以極大加速查詢。
數(shù)據(jù)導(dǎo)入
數(shù)據(jù)導(dǎo)入DorisDB這里用到了兩種方案:
1)在DorisDB提供的Broker Load基礎(chǔ)上將離線數(shù)倉(cāng)Hive的表導(dǎo)入到DorisDB中。
2)通過DataX工具,將SQL Server、MySQL上的數(shù)據(jù)導(dǎo)入到DorisDB。
4.DorisDB使用效果
靈活建模提升開發(fā)效率
結(jié)合使用寬表模型和星型模型,寬表和物化視圖可以保證報(bào)表性能和并發(fā)能力,而星型模型可以讓AP如TP里那樣建模,直接進(jìn)行關(guān)聯(lián)查詢,不必所有場(chǎng)景都依賴寬表準(zhǔn)備,在數(shù)據(jù)一致性和開發(fā)效率上得到很好提升。另外,有不少表是在MySQL里的,我們通過DorisDB外表的方式暴露查詢,省去了數(shù)據(jù)導(dǎo)入的過程,大大降低了業(yè)務(wù)方的開發(fā)和遷移周期。DorisDB的分布式Join能力非常強(qiáng),結(jié)合View的能力構(gòu)建統(tǒng)一的視圖層,面下不同BI報(bào)表進(jìn)行查詢,提升了指標(biāo)口徑的一致性,降低了重復(fù)開發(fā)。
BI體驗(yàn)極好
前期部分BI可視化是基于SQL Server、MySQL構(gòu)建的。部分看板不斷優(yōu)化和豐富需求后,加上多維度靈活條件篩選,每次加載很慢,有些Tableau報(bào)表很長(zhǎng)時(shí)間才能加載出來,業(yè)務(wù)無(wú)法接受。引入DorisDB之后,我們用DataX將SQL Server數(shù)據(jù)導(dǎo)入DorisDB,這里使用了DorisDB-Writer插件,底層封裝的Stream-Load接口,向量化導(dǎo)入效率非常高。MySQL可以通過外表insert into select流式導(dǎo)入,也可以直接外表查詢,非常便捷。Tableau圖表秒出,體驗(yàn)有了質(zhì)的飛躍。
運(yùn)維成本較低
數(shù)據(jù)中心是非常核心的一個(gè)線上服務(wù),因此對(duì)高可用及靈活擴(kuò)容能力有非常高的要求。DorisDB支持?jǐn)?shù)據(jù)多副本,F(xiàn)E、BE僅僅2種角色組成的簡(jiǎn)潔架構(gòu),在單個(gè)節(jié)點(diǎn)故障的時(shí)候可以保證整個(gè)集群的高可用。另外,DorisDB在大數(shù)據(jù)規(guī)模下可以進(jìn)行在線彈性擴(kuò)展,在擴(kuò)容時(shí)無(wú)Down Time,不會(huì)影響到在線業(yè)務(wù),這個(gè)能力也是我們非常需要的。
總結(jié)
Lenovo聯(lián)晟智達(dá)從今年(2021年)4月份開始調(diào)研DorisDB,POC測(cè)試階段用了1/4的資源,就完美替代了數(shù)十個(gè)節(jié)點(diǎn)的Presto集群,當(dāng)前DorisDB已經(jīng)上線穩(wěn)定運(yùn)行。引入DorisDB后,實(shí)現(xiàn)了數(shù)據(jù)服務(wù)統(tǒng)一化,大大簡(jiǎn)化了離線數(shù)據(jù)處理鏈路,同時(shí)也能保障查詢時(shí)延要求,之后將用來提升更多業(yè)務(wù)場(chǎng)景的數(shù)據(jù)服務(wù)和查詢能力。最后,感謝鼎石科技的大力支持,也期望DorisDB作為性能強(qiáng)悍的新一代MPP數(shù)據(jù)庫(kù)引領(lǐng)者越來越好!