易點天下基於 StarRocks 構建實時離線一體的數倉方案

雲端計算頻道發表於2023-02-24

  作者:易點天下資料平臺團隊

  易點天下是一家技術驅動發展的企業國際化智慧營銷服務公司,致力於為客戶提供全球營銷推廣服務,透過效果營銷、品牌塑造、垂直行業解決方案等一體化服務,幫助企業在全球範圍內高效地獲取使用者、提升品牌知名度、實現商業化變現。

  目前,易點天下 累計服務客戶超過5000家,其中包括華為、阿里巴巴、騰訊、網易、位元組跳動、百度、快手、愛奇藝、SHEIN、Lazada 等知名企業。易點天下始終秉持"科技使世界變得更平"的企業使命,積極採用大資料和人工智慧技術來落地和推動業務的發展。隨著公司業務的擴充套件,我們的 資料分析工作遇到了一些痛點:

  1. 資料處理需求日益增多:每天需要處理幾十T 、近千億的資料量。

  2.   資料分析的複雜度提高:如使用者留存、 LTV 這一類的複雜指標,往往需要多表關聯查詢和實時查詢,目前應用的元件不能滿足業務的查詢需求。

  3.   技術元件較多:公司有多個資料分析平臺,採用的技術元件也非常多,包括 ClickHouse、Kafka、Flink、Spark、Hive 等,運營維護成本較高。

  4.  當前架構基本以離線為主, 實時資料處理架構薄弱

     

    經過現狀分析後,我們開始設計資料倉儲的標準化規範,並尋找一款 集實時離線為一體的數倉統一解決方案,對數倉進行統一規劃和建設。

  #01數倉建設規範

  —

  我們從 資料分層、業務類和資料域定義、資料指標、資料模型規範、模型衡量指標五個方面進行了數倉的規範建設。

  1.  資料分層:包括資料引入層 ODS 、明細資料層 DWD 、彙總資料層 DWS 、資料應用層 ADS 及維度層 DIM 。

  2.  業務類和資料域定義:此定義主要用於規範資料倉儲處理資料的範圍,以及處理資料的業務型別。

  3.  資料指標規範:包括原子指標(如點選、訪問、消費金額等)、複合指標(如點選率、跳出率、投資回報率等)、派生指標(如7天賬戶消費金額、去年賬戶餘額總和等)。

  4.  資料模型規範:包括命名規範、儲存規範、資料規範三個方面;統一規範的資料模型能大幅提升開發維護效率,避免不必要的資料質量問題。

  5.  模型衡量指標:包括命名規範性和資料完整性、 中間層表的增長比例、應用層 ADS 跨層訪問(穿透)、 較多的 ADS 表共性邏輯未下沉、應用層跨集市依賴五個方面。

  #02技術選型

  —

  在對數倉進行了標準化規範設計後,我們需要一個 集實時離線為一體的數倉統一解決方案,透過數倉建設,來解決以下問題:

  •   資料儲存的規範性

  •   資料模型的複用性

  •   資料模型的耦合性

  •   資料的完整性

  •   資料查詢效率

  •   資料成本可控

  基於此,我們對市面上常見的資料庫產品做了選型對比:

  1 查詢效能對比

  我們主要對 ClickHouse 和 StarRocks 的查詢效能做了對比,在 SSB 單表和使用者經常碰到的低基數聚合場景下對比了 StarRocks 和 ClickHouse 的效能指標。採用一組 16core 64GB 記憶體的雲主機,在 6 億行的資料規模進行測試。

  得益於向量化執行引擎、優秀的 CBO 最佳化器、物化檢視、Runtime Filter 等各方面的最佳化,StarRocks 的查詢效能表現非常優異,下面測試為各種引擎在不同 SQL 下花費的時間,ClickHouse 的整體查詢時間是 StarRocks 的 2.26 倍。

  圖1 各種引擎在不同SQL下花費的時間

  圖2

  StarRocks 透過實現全面向量化引擎,按照列式的方式組織和處理資料,充分發揮了 CPU 處理能力

  2 使用與運維對比

  除了查詢效能,我們從使用成本、易用性、運維成本等方面,對比了幾款比較熱門的產品,最終我們計劃將基於 ClickHouse 等其他資料庫產品的查詢遷移到基於 StarRocks 來構建資料倉儲。

  #03技術架構

  —

  資料平臺目前處理的資料涉及公司多個產品,每日處理全球增量資料幾十T,近千億條記錄,跨雲跨地域的資料也給資料處理帶來不少挑戰。目前我們已經針對 BI 系統開展了基於 StarRocks 的資料倉儲的建設,隨著經驗的積累,後期會推廣到資料平臺所有專案的資料場景中。

  目前資料平臺以實時流和離線處理兩條方式同時向 StarRocks 資料倉儲中進行資料 Load 。下圖是目前資料平臺在資料分析中的主要流程架構,如圖所示,架構中我們自研了資料治理平臺(DataPlus)用於資料監控提高資料質量, 維護後設資料血緣等資料的拓撲結構,自動化建模。另外我們還自研了分散式的跨雲排程系統(EasyJob),用於系統便捷的處理多雲環境下的資料依賴和排程。

  離線資料匯入透過 EasyJob 定時呼叫 Broker Load 的方式匯入 StarRocks 。

  透過 DataPlus 系統,我們對 StarRocks 中的資料和雲端儲存資料進行了定時的一致性校驗,保證資料的一致性。

  我們一直尋找一種實時和離線一體的資料處理解決方案,實時離線資料處理完後會進入 StarRocks 進行全流程建模,基於 StarRocks 進行湖倉一體結構的搭建。最底層 ODS 基於外部資料來源建立,資料儲存在外部雲端儲存上例如 OSS,S3,ODS 等,然後透過排程系統定時觸發上層表的生成,另外,DWS、ADS的部分表模型,也可以藉助於物化檢視方式實現,提升構建和查詢效率。整體資料流動架構如下:

  StarRocks 能夠支援秒級的匯入延遲,提供準實時的服務能力。StarRocks 的儲存引擎在資料匯入時能夠保證每一次操作的 ACID。一個批次的匯入資料生效是原子性的,要麼全部匯入成功,要麼全部失敗。併發進行的各個事務相互之間互不影響,可以提供Snapshot Isolation事務隔離級別。

  StarRocks 儲存引擎不僅能夠提供高效的 Append 操作,也能高效的處理 Upsert 類操作。使用 Delete-and-insert (Merge_on_write)的實現方式,透過主鍵索引快速過濾,消除了讀取時 Sort merge 操作,同時還可以充分利用其他二級索引。在大量更新的場景下,仍然可以保證查詢的極速效能。

  #04智慧資料建模

  —

  透過後設資料、資料血緣體系的建立,未來我們可以透過讓建模規範、建模質量等規則自動化,形成線上系統的自動化建模功能,自動化建模生成標準 SQL ,最終在 StarRocks 中定時執行生效。下圖是建模過程和 DataPlus 中功能的對映。建模自動化的好處就是可以限制人為建模的不規範操作,最大程度的最佳化模型和成本。

  模型定義後,對模型生成效率的最佳化至關重要,不一樣的解決方式會影響模型的查詢生成效率,模型的複用度也會影響使用者使用體驗。我們在建模中針對下面三個模型進行了基於 StarRocks 的重點構造,大大提高了查詢效率。

  物化檢視

  在數倉建模中我們大量採用了物化檢視來加速和生成 DWS 以上資料層,StarRocks 當前支援單表同步、多表非同步以及對 SQL 的透明改寫能力,未來還會提供多表同步等更多能力,可以從建模和提速兩個方面對業務場景提供幫助。針對不同的重新整理方式,我們進行了兩組查詢對比,如圖所示,透過物化檢視能夠獲得更快的查詢效能體驗,有了物化檢視,我們可以從複雜的資料加工工作中解放出來,更加專注於數倉模型本身。

  分析模型

  統一的模型 SQL 設計,高階函式的應用,可以提高查詢效能50%以上。例如我們主要針對下面三種常見分析模型設計了標準建模 SQL ,未來將透過此標準自動建模,提升查詢效率。

  行為分析的應用 – 使用者留存分析

  對於使用者留存的分析,經常會在多個條件下獲取使用者的行為狀態,我們採用了 retention 函式來分析,大幅提升了查詢分析的效率。例如:要清楚的瞭解 event=view 並且時間在2022-11-01、2022-11-02、2022-11-03條件下的使用者情況;傳統的方式需先進行 event=view and date='**--**' 條件判斷,然後進行合併,但是 retention 函式的出現直接簡化了相應的建模過程,透過 retention 函式,可以直接獲取 event=view 以及三個日期條件下的行為,並且以陣列的形式進行展示,之後可以透過對陣列的聚合操作,進行相應的行為分析。

  行為分析的應用 – 漏斗分析

  針對使用者的轉化分析場景,例如需要分析在一定的時間視窗中,使用者在一系列連續行為下的相關行為,可以直接採用 StarRocks 中的 window_funnel 進行建模,實現高效的漏斗分析。該函式可以從事件鏈中的第一個條件開始判斷。如果資料中包含符合條件的事件,則向計數器加 1,並以此事件對應的時間作為滑動視窗的起始時間。如果未能找到符合第一個條件的資料,則返回為 0 。在滑動視窗內,如果事件鏈中的事件按順序發生,則計數器遞增;如果超出了時間視窗,則計數器不再增加。如有多條符合條件的事件鏈,則輸出最長的事件鏈。

  如上圖 SQL ,可以計算在規定時間視窗內,使用者在 view/click/purchase/pay 連續行為下的相關資料,最終返回不同的連續行為級別下對應的使用者數量。

  行為分析的應用 – 路徑分析

  針對使用者前後行為路徑分析場景,例如需要針對使用者前後行為進行對比分析的場景,可以綜合考慮採用 StarRocks 支援的ROW_NUMBER(),LEAD(),LAG()等視窗函式進行建模分析。如下是一個針對使用者前後行為分析的具體案例,可以針對使用者的 event 以及前置 event 進行展示:

  #05建設成果

  —

  公司數倉建設過程分為四個階段:

  1、 資料倉儲規範建立和技術調研選型。

  2、 效能壓測:經過測試,StarRocks 和之前我們應用的 ClickHouse 有2.2倍以上的提升。Join 查詢更是有數倍的提升,小時級匯入時間的資料量可以在1分鐘完成 Load ,保證離線查詢效率。

  3、 試點執行:經過遷移,部分業務使用效率得到大幅提升,以往比較的複雜自主 SQL 查詢、TP95 查詢都可以在5s返回。支援互動式 SQL 自助分析。

  4、 全面部署:在公司其他資料類產品中應用 StarRocks ,並完善監控等叢集的自動化運維。

  在 BI 系統中經過一段時間的使用,StarRocks 的應用已經進入第四階段,未來公司會將更多的業務切入到StarRocks,並結合 DataPlus 的智慧建模、表熱度分析等資料治理,相信效能和成本會達到更理想的狀態。同樣我們也期待 StarRocks 在新版本中可以提供更豐富的功能。

  關於 StarRocks

  StarRocks 是資料分析新正規化的開創者、新標準的領導者。面世三年來,StarRocks 一直專注打造世界先進的新一代極速全場景 MPP 資料庫,幫助企業構建極速統一的湖倉新正規化,是實現數字化轉型和降本增效的關鍵基礎設施。StarRocks 持續突破既有框架,以技術創新全面驅動使用者業務發展。當前全球超過 200 家市值 70 億元以上的頭部企業都在基於 StarRocks 構建新一代資料分析能力,包括騰訊、攜程、平安銀行、中原銀行、中信建投、招商證券、眾安保險、大潤發、百草味、順豐、京東物流、TCL、OPPO 等,並與全球雲端計算領導者亞馬遜雲、阿里雲、騰訊雲等達成戰略合作伙伴。擁抱開源,StarRocks 全球開源社群飛速成長。截至 2022 年底,已有超過 200 位貢獻者,社群使用者近萬人,吸引幾十家國內外行業頭部企業參與共建。專案在 GitHub 星數已超 3900 個,成為年度開源熱力值增速第一的專案,市場滲透率躋身中國前十名。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545808/viewspace-2936883/,如需轉載,請註明出處,否則將追究法律責任。

相關文章