易點天下基于 StarRocks 構(gòu)建實時離線一體的數(shù)倉方案
原創(chuàng) 易點天下數(shù)據(jù)平臺團隊 | 2023-02-24 12:30
【數(shù)據(jù)猿導(dǎo)讀】 易點天下始終秉持"科技使世界變得更平"的企業(yè)使命,積極采用大數(shù)據(jù)和人工智能技術(shù)來落地和推動業(yè)務(wù)的發(fā)展。經(jīng)過現(xiàn)狀分析后,我們開始設(shè)計數(shù)據(jù)倉庫的標(biāo)準(zhǔn)化規(guī)范,并尋找一款集實時離線為一體的數(shù)倉統(tǒng)一解決方案,對數(shù)倉進行統(tǒng)一規(guī)劃和建設(shè)。

作者:易點天下數(shù)據(jù)平臺團隊
易點天下是一家技術(shù)驅(qū)動發(fā)展的企業(yè)國際化智能營銷服務(wù)公司,致力于為客戶提供全球營銷推廣服務(wù),通過效果營銷、品牌塑造、垂直行業(yè)解決方案等一體化服務(wù),幫助企業(yè)在全球范圍內(nèi)高效地獲取用戶、提升品牌知名度、實現(xiàn)商業(yè)化變現(xiàn)。
目前,易點天下累計服務(wù)客戶超過5000家,其中包括華為、阿里巴巴、騰訊、網(wǎng)易、字節(jié)跳動、百度、快手、愛奇藝、SHEIN、Lazada 等知名企業(yè)。
易點天下始終秉持"科技使世界變得更平"的企業(yè)使命,積極采用大數(shù)據(jù)和人工智能技術(shù)來落地和推動業(yè)務(wù)的發(fā)展。
隨著公司業(yè)務(wù)的擴展,我們的數(shù)據(jù)分析工作遇到了一些痛點:
1. 數(shù)據(jù)處理需求日益增多:每天需要處理幾十T 、近千億的數(shù)據(jù)量。
2. 數(shù)據(jù)分析的復(fù)雜度提高:如用戶留存、 LTV 這一類的復(fù)雜指標(biāo),往往需要多表關(guān)聯(lián)查詢和實時查詢,目前應(yīng)用的組件不能滿足業(yè)務(wù)的查詢需求。
3. 技術(shù)組件較多:公司有多個數(shù)據(jù)分析平臺,采用的技術(shù)組件也非常多,包括 ClickHouse、Kafka、Flink、Spark、Hive 等,運營維護成本較高。
4. 當(dāng)前架構(gòu)基本以離線為主,實時數(shù)據(jù)處理架構(gòu)薄弱。
經(jīng)過現(xiàn)狀分析后,我們開始設(shè)計數(shù)據(jù)倉庫的標(biāo)準(zhǔn)化規(guī)范,并尋找一款集實時離線為一體的數(shù)倉統(tǒng)一解決方案,對數(shù)倉進行統(tǒng)一規(guī)劃和建設(shè)。
#01
數(shù)倉建設(shè)規(guī)范
—
我們從數(shù)據(jù)分層、業(yè)務(wù)類和數(shù)據(jù)域定義、數(shù)據(jù)指標(biāo)、數(shù)據(jù)模型規(guī)范、模型衡量指標(biāo)五個方面進行了數(shù)倉的規(guī)范建設(shè)。
1. 數(shù)據(jù)分層:包括數(shù)據(jù)引入層 ODS 、明細(xì)數(shù)據(jù)層 DWD 、匯總數(shù)據(jù)層 DWS 、數(shù)據(jù)應(yīng)用層 ADS 及維度層 DIM 。
2. 業(yè)務(wù)類和數(shù)據(jù)域定義:此定義主要用于規(guī)范數(shù)據(jù)倉庫處理數(shù)據(jù)的范圍,以及處理數(shù)據(jù)的業(yè)務(wù)類型。
3. 數(shù)據(jù)指標(biāo)規(guī)范:包括原子指標(biāo)(如點擊、訪問、消費金額等)、復(fù)合指標(biāo)(如點擊率、跳出率、投資回報率等)、派生指標(biāo)(如7天賬戶消費金額、去年賬戶余額總和等)。
4. 數(shù)據(jù)模型規(guī)范:包括命名規(guī)范、存儲規(guī)范、數(shù)據(jù)規(guī)范三個方面;統(tǒng)一規(guī)范的數(shù)據(jù)模型能大幅提升開發(fā)維護效率,避免不必要的數(shù)據(jù)質(zhì)量問題。
5. 模型衡量指標(biāo):包括命名規(guī)范性和數(shù)據(jù)完整性、 中間層表的增長比例、應(yīng)用層 ADS 跨層訪問(穿透)、 較多的 ADS 表共性邏輯未下沉、應(yīng)用層跨集市依賴五個方面。
#02
技術(shù)選型
—
在對數(shù)倉進行了標(biāo)準(zhǔn)化規(guī)范設(shè)計后,我們需要一個集實時離線為一體的數(shù)倉統(tǒng)一解決方案,通過數(shù)倉建設(shè),來解決以下問題:
- 數(shù)據(jù)存儲的規(guī)范性
- 數(shù)據(jù)模型的復(fù)用性
- 數(shù)據(jù)模型的耦合性
- 數(shù)據(jù)的完整性
- 數(shù)據(jù)查詢效率
- 數(shù)據(jù)成本可控
基于此,我們對市面上常見的數(shù)據(jù)庫產(chǎn)品做了選型對比:
1.查詢性能對比
我們主要對 ClickHouse 和 StarRocks 的查詢性能做了對比,在 SSB 單表和用戶經(jīng)常碰到的低基數(shù)聚合場景下對比了 StarRocks 和 ClickHouse 的性能指標(biāo)。采用一組 16core 64GB 內(nèi)存的云主機,在 6 億行的數(shù)據(jù)規(guī)模進行測試。
得益于向量化執(zhí)行引擎、優(yōu)秀的 CBO 優(yōu)化器、物化視圖、Runtime Filter 等各方面的優(yōu)化,StarRocks 的查詢性能表現(xiàn)非常優(yōu)異,下面測試為各種引擎在不同 SQL 下花費的時間,ClickHouse 的整體查詢時間是 StarRocks 的 2.26 倍。
圖1 各種引擎在不同SQL下花費的時間
圖2
StarRocks 通過實現(xiàn)全面向量化引擎,按照列式的方式組織和處理數(shù)據(jù),充分發(fā)揮了 CPU 處理能力
2.使用與運維對比
除了查詢性能,我們從使用成本、易用性、運維成本等方面,對比了幾款比較熱門的產(chǎn)品,最終我們計劃將基于 ClickHouse 等其他數(shù)據(jù)庫產(chǎn)品的查詢遷移到基于 StarRocks 來構(gòu)建數(shù)據(jù)倉庫。
#03
技術(shù)架構(gòu)
—
數(shù)據(jù)平臺目前處理的數(shù)據(jù)涉及公司多個產(chǎn)品,每日處理全球增量數(shù)據(jù)幾十T,近千億條記錄,跨云跨地域的數(shù)據(jù)也給數(shù)據(jù)處理帶來不少挑戰(zhàn)。
目前我們已經(jīng)針對 BI 系統(tǒng)開展了基于 StarRocks 的數(shù)據(jù)倉庫的建設(shè),隨著經(jīng)驗的積累,后期會推廣到數(shù)據(jù)平臺所有項目的數(shù)據(jù)場景中。
目前數(shù)據(jù)平臺以實時流和離線處理兩條方式同時向 StarRocks 數(shù)據(jù)倉庫中進行數(shù)據(jù) Load 。下圖是目前數(shù)據(jù)平臺在數(shù)據(jù)分析中的主要流程架構(gòu),如圖所示,架構(gòu)中我們自研了數(shù)據(jù)治理平臺(DataPlus)用于數(shù)據(jù)監(jiān)控提高數(shù)據(jù)質(zhì)量, 維護元數(shù)據(jù)血緣等數(shù)據(jù)的拓?fù)浣Y(jié)構(gòu),自動化建模。另外我們還自研了分布式的跨云調(diào)度系統(tǒng)(EasyJob),用于系統(tǒng)便捷的處理多云環(huán)境下的數(shù)據(jù)依賴和調(diào)度。
離線數(shù)據(jù)導(dǎo)入通過 EasyJob 定時調(diào)用 Broker Load 的方式導(dǎo)入 StarRocks 。
通過 DataPlus 系統(tǒng),我們對 StarRocks 中的數(shù)據(jù)和云存儲數(shù)據(jù)進行了定時的一致性校驗,保證數(shù)據(jù)的一致性。
我們一直尋找一種實時和離線一體的數(shù)據(jù)處理解決方案,實時離線數(shù)據(jù)處理完后會進入 StarRocks 進行全流程建模,基于 StarRocks 進行湖倉一體結(jié)構(gòu)的搭建。
最底層 ODS 基于外部數(shù)據(jù)源建立,數(shù)據(jù)存儲在外部云存儲上例如 OSS,S3,ODS 等,然后通過調(diào)度系統(tǒng)定時觸發(fā)上層表的生成,另外,DWS、ADS的部分表模型,也可以借助于物化視圖方式實現(xiàn),提升構(gòu)建和查詢效率。
整體數(shù)據(jù)流動架構(gòu)如下:
StarRocks 能夠支持秒級的導(dǎo)入延遲,提供準(zhǔn)實時的服務(wù)能力。StarRocks 的存儲引擎在數(shù)據(jù)導(dǎo)入時能夠保證每一次操作的 ACID。一個批次的導(dǎo)入數(shù)據(jù)生效是原子性的,要么全部導(dǎo)入成功,要么全部失敗。并發(fā)進行的各個事務(wù)相互之間互不影響,可以提供Snapshot Isolation事務(wù)隔離級別。
StarRocks 存儲引擎不僅能夠提供高效的 Append 操作,也能高效的處理 Upsert 類操作。使用 Delete-and-insert (Merge_on_write)的實現(xiàn)方式,通過主鍵索引快速過濾,消除了讀取時 Sort merge 操作,同時還可以充分利用其他二級索引。在大量更新的場景下,仍然可以保證查詢的極速性能。
#04
智能數(shù)據(jù)建模
—
通過元數(shù)據(jù)、數(shù)據(jù)血緣體系的建立,未來我們可以通過讓建模規(guī)范、建模質(zhì)量等規(guī)則自動化,形成線上系統(tǒng)的自動化建模功能,自動化建模生成標(biāo)準(zhǔn) SQL ,最終在 StarRocks 中定時執(zhí)行生效。下圖是建模過程和 DataPlus 中功能的映射。建模自動化的好處就是可以限制人為建模的不規(guī)范操作,最大程度的優(yōu)化模型和成本。
模型定義后,對模型生成效率的優(yōu)化至關(guān)重要,不一樣的解決方式會影響模型的查詢生成效率,模型的復(fù)用度也會影響用戶使用體驗。
我們在建模中針對下面三個模型進行了基于 StarRocks 的重點構(gòu)造,大大提高了查詢效率。
物化視圖
在數(shù)倉建模中我們大量采用了物化視圖來加速和生成 DWS 以上數(shù)據(jù)層,StarRocks 當(dāng)前支持單表同步、多表異步以及對 SQL 的透明改寫能力,未來還會提供多表同步等更多能力,可以從建模和提速兩個方面對業(yè)務(wù)場景提供幫助。
針對不同的刷新方式,我們進行了兩組查詢對比,如圖所示,通過物化視圖能夠獲得更快的查詢性能體驗,有了物化視圖,我們可以從復(fù)雜的數(shù)據(jù)加工工作中解放出來,更加專注于數(shù)倉模型本身。
分析模型
統(tǒng)一的模型 SQL 設(shè)計,高階函數(shù)的應(yīng)用,可以提高查詢性能50%以上。例如我們主要針對下面三種常見分析模型設(shè)計了標(biāo)準(zhǔn)建模 SQL ,未來將通過此標(biāo)準(zhǔn)自動建模,提升查詢效率。
- 行為分析的應(yīng)用 – 用戶留存分析
對于用戶留存的分析,經(jīng)常會在多個條件下獲取用戶的行為狀態(tài),我們采用了 retention 函數(shù)來分析,大幅提升了查詢分析的效率。
例如:要清楚的了解 event=view 并且時間在2022-11-01、2022-11-02、2022-11-03條件下的用戶情況;傳統(tǒng)的方式需先進行 event=view and date='**--**' 條件判斷,然后進行合并,但是 retention 函數(shù)的出現(xiàn)直接簡化了相應(yīng)的建模過程,通過 retention 函數(shù),可以直接獲取 event=view 以及三個日期條件下的行為,并且以數(shù)組的形式進行展示,之后可以通過對數(shù)組的聚合操作,進行相應(yīng)的行為分析。
- 行為分析的應(yīng)用 – 漏斗分析
針對用戶的轉(zhuǎn)化分析場景,例如需要分析在一定的時間窗口中,用戶在一系列連續(xù)行為下的相關(guān)行為,可以直接采用 StarRocks 中的 window_funnel 進行建模,實現(xiàn)高效的漏斗分析。該函數(shù)可以從事件鏈中的第一個條件開始判斷。如果數(shù)據(jù)中包含符合條件的事件,則向計數(shù)器加 1,并以此事件對應(yīng)的時間作為滑動窗口的起始時間。如果未能找到符合第一個條件的數(shù)據(jù),則返回為 0 。在滑動窗口內(nèi),如果事件鏈中的事件按順序發(fā)生,則計數(shù)器遞增;如果超出了時間窗口,則計數(shù)器不再增加。如有多條符合條件的事件鏈,則輸出最長的事件鏈。
如上圖 SQL ,可以計算在規(guī)定時間窗口內(nèi),用戶在 view/click/purchase/pay 連續(xù)行為下的相關(guān)數(shù)據(jù),最終返回不同的連續(xù)行為級別下對應(yīng)的用戶數(shù)量。
- 行為分析的應(yīng)用 – 路徑分析
針對用戶前后行為路徑分析場景,例如需要針對用戶前后行為進行對比分析的場景,可以綜合考慮采用 StarRocks 支持的ROW_NUMBER(),LEAD(),LAG()等窗口函數(shù)進行建模分析。如下是一個針對用戶前后行為分析的具體案例,可以針對用戶的 event 以及前置 event 進行展示:
#05
建設(shè)成果
—
公司數(shù)倉建設(shè)過程分為四個階段:
1.數(shù)據(jù)倉庫規(guī)范建立和技術(shù)調(diào)研選型。
2.性能壓測:經(jīng)過測試,StarRocks 和之前我們應(yīng)用的 ClickHouse 有2.2倍以上的提升。Join 查詢更是有數(shù)倍的提升,小時級導(dǎo)入時間的數(shù)據(jù)量可以在1分鐘完成 Load ,保證離線查詢效率。
3.試點運行:經(jīng)過遷移,部分業(yè)務(wù)使用效率得到大幅提升,以往比較的復(fù)雜自主 SQL 查詢、TP95 查詢都可以在5s返回。支持交互式 SQL 自助分析。
4.全面部署:在公司其他數(shù)據(jù)類產(chǎn)品中應(yīng)用 StarRocks ,并完善監(jiān)控等集群的自動化運維。
在 BI 系統(tǒng)中經(jīng)過一段時間的使用,StarRocks 的應(yīng)用已經(jīng)進入第四階段,未來公司會將更多的業(yè)務(wù)切入到StarRocks,并結(jié)合 DataPlus 的智能建模、表熱度分析等數(shù)據(jù)治理,相信性能和成本會達(dá)到更理想的狀態(tài)。同樣我們也期待 StarRocks 在新版本中可以提供更豐富的功能。
關(guān)于 StarRocks
StarRocks 是數(shù)據(jù)分析新范式的開創(chuàng)者、新標(biāo)準(zhǔn)的領(lǐng)導(dǎo)者。面世三年來,StarRocks 一直專注打造世界頂級的新一代極速全場景 MPP 數(shù)據(jù)庫,幫助企業(yè)構(gòu)建極速統(tǒng)一的湖倉新范式,是實現(xiàn)數(shù)字化轉(zhuǎn)型和降本增效的關(guān)鍵基礎(chǔ)設(shè)施。
StarRocks 持續(xù)突破既有框架,以技術(shù)創(chuàng)新全面驅(qū)動用戶業(yè)務(wù)發(fā)展。當(dāng)前全球超過 200 家市值 70 億元以上的頭部企業(yè)都在基于 StarRocks 構(gòu)建新一代數(shù)據(jù)分析能力,包括騰訊、攜程、平安銀行、中原銀行、中信建投、招商證券、眾安保險、大潤發(fā)、百草味、順豐、京東物流、TCL、OPPO 等,并與全球云計算領(lǐng)導(dǎo)者亞馬遜云、阿里云、騰訊云等達(dá)成戰(zhàn)略合作伙伴。
擁抱開源,StarRocks 全球開源社區(qū)飛速成長。截至 2022 年底,已有超過 200 位貢獻者,社群用戶近萬人,吸引幾十家國內(nèi)外行業(yè)頭部企業(yè)參與共建。項目在 GitHub 星數(shù)已超 3900 個,成為年度開源熱力值增速第一的項目,市場滲透率躋身中國前十名。
來源:易點天下