導讀 在數字化時代,流量資料已成為企業洞察使用者行為、優化産品決策和提升營運效率的關鍵。阿裡雲 Hologres 憑借其在實時性、高性能、易用性、擴充性和安全性等方面的優勢,能夠幫助企業充分挖掘流量資料的價值,實作精細化營運和産品決策優化,提升整體營運效率和市場競争力。
本文由阿裡雲計算平台事業部-餘文兵(景聞)老師分享阿裡雲 Hologres 在流量分析場景中的應用,揭示其如何通過高性能實時數倉技術,幫助企業實作精細化營運和産品決策優化。
主要内容包括以下幾大部分:
1. 流量分析場景及痛點介紹:分析流量資料的重要性以及企業在流量分析中面臨的挑戰,包括開發效率、運維效率和業務響應速度。
2. 阿裡雲 Hologres 流量場景核心能力介紹:介紹阿裡雲 Hologres 的核心技術優勢,包括多種流量分析函數、強大的實時分析性能、靈活的存儲計算能力、高效的點查能力等。
3. 流量分析場景最佳實踐:分享基于 Hologres 的流量分析最佳實踐,包括資料收集、實時處理、資料存儲和可視化等環節,詳細讨論 Hologres 在漏鬥分析、留存分析、路徑分析和歸因模型等場景中的應用和優勢。
分享嘉賓|阿裡雲計算平台事業部-餘文兵(景聞)
編輯整理|文林
内容校對|李瑤
出品社群|DataFun
01
流量分析場景及痛點介紹
1. 流量分析場景介紹
流量的資料可以分析的次元非常多,常見的流量分析場景包括:使用者行為分析、流量轉化分析、廣告效果分析、廣告歸因分析、AB 實驗分析、算法模型分析、實時風控分析等。
最常見的資料埋點事件模型是基于使用者在産品中的各種操作行為而建構的一種資料模型,其核心在于将使用者行為抽象為 Event 實體,并通過五個關鍵要素來全面描述這些事件:Who(誰)、When(何時)、Where(何地)、What(做什麼)、How(怎樣)。
2. 流量分析場景中數倉模型
在流量分析數倉模組化中,主要存在兩種模型方法以适應不同的資料處理和查詢需求:
強 Schema 模型(寬表模式):其特點為列和類型是比較固定的,資料經過嚴格的 ETL(提取、轉換、加載)清洗過程,以比對數倉的寬表模型。适用于對資料一緻性、完整性有嚴格要求,且需要頻繁進行複雜查詢的場景。
弱 Schema 模型(弱 Schema 模式):資料以原始形态直接加載到數倉,處理過程相對簡潔,類似于 ELT(提取、加載、轉換)模式。适用于資料模式頻繁變化,或需要保留原始資料以便後續分析的場景。
3. 流量分析場景面臨的挑戰
數倉團隊配合統一埋點平台處理資料,資料開發同學一般在 Flink 中将資料打平,以寬表強 schema 的模式存儲在 Doris/ClickHouse 等數倉中,提供資料的查詢分析。在業務側面臨的主要挑戰可以歸結為三個方面
- 開發效率低
- 埋點測和 Flink 代碼和數倉開發都需要定義超長寬度列的字段,資料類型長度,限制等等。
- 運維效率低
- 上遊埋點資訊會周期性的變化,字段的增加,删除,導緻 flink 代碼和數倉頻繁調整代碼。
- 業務響應慢
- 業務的新增需求,涉及到數倉團隊,研發團隊,協同釋出代碼,業務響應周期長。
除了業務側,流量埋點分析在實時數倉平台技術本身也帶來了諸多挑戰,主要集中在數倉模型、存儲擴充能力、寫入能力、查詢能力以及高可用能力這五個方面。
- 數倉模型
- 流量埋點場景的日志字段比較多,需要弱 schema 的處理埋點到處理和存儲分析的高效靈活處理。
- 存儲擴充能力
- 流量埋點場景的日志資料量大達到上 PB 級别,單表單分區都是幾十億,上百億的規模,存算分離。
- 寫入能力
- 資料量太大,需要高吞吐的實時寫入能力和離線導入能力足夠強。
- 查詢能力
- 任意多元度 OLAP 查詢性能,任意選擇不定周期範圍的 UV 計算,漏鬥分析,留存分析,路徑分析的性能。
- 高可用能力
- 大資料量的場景,不同業務查詢之間的隔離機制,高可用能力,保證服務的穩定性能力。
02
阿裡雲 Hologres 流量分析場景核心能力
Hologres 是阿裡雲自研的一款一站式實時數倉産品,Hologres 以其高性能的實時 OLAP 分析、靈活的存儲計算能力、高效的點查能力、先進的資料處理特性、便捷的資料湖互動式分析、高效的資料同步與相容性,為使用者提供了一站式的實時數倉解決方案。其核心技術和能力包括:
- 高性能實時 OLAP 分析
支援高性能的實時寫入與更新,寫入即可查,顯著提升了資料被發現和挖掘的時效性
提供多種存儲模式,包括列存與行列共存,以及豐富的索引政策,滿足不同業務場景需求。
采用分布式存儲,并行化邏輯。
支援主鍵更新,局部更新。
通過向量化引擎、輕量協程等處理,提供了高性能的查詢。
- 配備多種線上服務
支援行列共存,支援高 QPS 的 KV 點查功能,使一份資料同時支援多元分析與 KV 點查。
适配向量檢索(如 Proxima),實作讀寫分離,保障高性能與高 QPS 查詢與 OLAP 分析的隔離。
- 支援資料湖與數倉的互動式分析
支援阿裡雲資料湖與數倉(如 MaxCompute、OSS)中的表進行秒級互動查詢,無需資料移動,實作資料快速加速。
實作了每秒數百萬行資料的高效同步,自動發現中繼資料,提升使用者生産與開發效率。
- 豐富的生态相容
依托 PG 生态,相容主流BI工具,支援在數倉上進行查詢分析、可視化等操作。
支援 PostgreSQL 的開發文法,提供标準 SQL 能力和豐富的BI工具擴充性,生态能力強。
1. Fixedplan 高性能寫入與更新
Hologres 在實時寫入能力上得到了顯著提升,特别是通過 Fixed plan 模式實作了高效的資料寫入。該模式能夠在資料寫入過程中進行深度優化,直接面向存儲引擎進行批量的資料寫入。
在128C的執行個體上,我們測試了四種不同的寫入場景,具體性能表現如下:
- 盲寫(append only 模式):每秒可達 230 萬 RPS。
- 寫入包含主鍵且采用 insert or ignore 模式:每秒可達 200 萬 RPS。
- 按主鍵進行 upsert 操作:每秒可達 80 萬 RPS。
- 寫入包含主鍵且資料已存在時,基于大資料量進行 upsert 操作:每秒可達 70 萬 RPS。
這些寫入能力展示了 Hologres 在目前流量場景下,能夠滿足高性能資料寫入的需求。
2. 多種性能優化,V2.2 版本性能測試結果提升 100%
Hologres 在 TPC-H 标準測試中取得了全球排名第一的優異成績,相比第二名領先了約 23%,這一成績充分展示了 Hologres 在該領域的卓越技術實力和競争優勢。
HologresV2.2 版本提升了查詢優化器和查詢引擎的能力,V1.1 版本使用 96CU 在 TPC-H 1T 的總查詢耗時為 223.08 秒,在 V2.2 版本中,測試結果為 111.53 秒,性能提升 100%,測試結果可參考官網文檔。
3. 計算組模式(Warehouse)實作彈性與高可用
Hologres 自 2.0 版本後,持續優化以提升使用者使用的便捷性和系統穩定性。目前,通過計算組模式,Hologres 實作了在 1.x 版本上讀寫隔離以及讀讀隔離基礎上進一步支援了寫寫隔離。使用者可以根據需求自由劃分資源,例如用于離線導入、ET 加工、Flink 實時寫入等,同時支援專門的計算組進行 OLAP 查詢和高 QPS 檢查。所有計算組底層共享存儲,支援多執行個體 region 部署,資料自動複制,提高了成本效益和故障隔離能力。并且實作了資源的實體隔離,當遇到性能瓶頸或資源不足時,可靈活進行彈性擴縮容。此外,若某 Warehouse 因複雜 SQL 等原因導緻資源滿載,影響生産環境,可迅速将查詢切換到其他計算組,確定業務穩定不受影響。
4. 流批一體 Dynamic Table
即将推出的 HologresDynamic Table 支援流批一體場景的能力,特别是在廣告歸因等流量分析領域,将極大提升實時與離線資料處理的一體化能力。Hologres Dynamic table 作為核心,能夠實作實時計算與批處理在同一 SQL 和同一資料源表上的無縫融合,進而完善流批處理場景。可以通過單一引擎處理流與批資料,減少元件依賴,提升運維效率和計算處理效率。在流量資料進行中,Dynamic table 能夠支援自動的數倉分層預聚合計算,從 DW 明細層到 DWS 輕度彙總,再到 ADS 應用層,顯著提升開發、管理和成本控制效率。
5. 多種流量分析場景函數
Hologres 在流量場景的分析能力上表現優異,尤其在漏鬥分析、留存分析、标簽畫像分析以及使用者行為标簽分析等方面支援完善。與開源産品如 ClickHouse、Doris 相比,Hologres 在漏鬥留存路徑分析、标簽畫像分析等方面具有顯著優勢,并提供了豐富的函數支援,如按彙總、按天展開、自然日等形式的留存分析。此外,Hologres 還支援 Roaring Bitmap 函數,有效助力 UV 等大規模資料的計算。同時,Hologres 還提供了強大的 BSI 函數支援,進一步提升了使用者使用的便捷性和高效性。
03
流量分析場景最佳實踐
接下來分享我們在流量分析場景的一些最佳實踐。
1. 基于 Hologres 的一個典型的實時資料處理架構
資料收集:通過埋點技術收集使用者行為資料。
消息隊列:将收集到的資料發送到消息隊列(如 Kafka 或阿裡雲的 DataHub),以便異步處理和擴充。
實時處理:利用實時流處理架構(如 Flink)消費隊列中的資料,進行實時處理。
資料存儲:将處理後的資料存儲到實時數倉産品(如 Hologres)中,支援快速查詢和資料分析。
資料服務與可視化:基于實時數倉,提供資料存儲服務,并支援資料可視化,幫助使用者更直覺地了解資料。
- 數倉模型設計-弱 Schema 模式
在基于 Hologres 的流量分析的數倉模型中,強烈推薦使用弱 Schema 模式。這允許在定義數倉模型時,将常用列獨立出來作為高頻正常檢索字段,而将使用頻率較低的列整合到 JSONB 類型中。這種靈活性有助于提高開發效率和應對資料變更。
鑒于流量資料量大,查詢時通常不會進行全量資料查詢,而是按周期(如最近 1 天、7 天、30 天等)進行。是以,建議充分利用 Hologres 的冷存能力,将查詢頻次較低的資料存儲在冷存中,以降低存儲成本。同時,冷存也能保證在查詢性能不受影響的前提下,有效管理大量資料。
由于埋點資料大多以事件為标準,是以事件名稱是一個很好的過濾條件。建議在 Hologres 中建立包含事件名稱的聚合索引,以提高查詢效率。同時,采用列存方式存儲資料,并結合動态分區管理(如 TTL 設定),以優化查詢性能和資料管理。
- JSONB 半結構化資料虛拟打寬
針對 JSONB 資料,我們實施了一個優化特征,旨在提升開發、運維及業務疊代的效率,同時解決 JSONB 管理上的不足。該特征主要包括:
JSONB 資料虛拟打寬:我們每天對 JSONB 資料進行虛拟打寬處理,生成一個視圖。這個視圖動态地列出 JSONB 中的所有字段,使得使用者在查詢時可以直接查詢這個視圖,而無需關心 JSONB 内部的具體結構。
通過虛拟打寬生成的視圖,使用者可以像查詢傳統寬表一樣查詢 JSONB 資料,幾乎無需改造現有查詢邏輯。這一特性在替換資料存儲系統(如從開源産品遷移到 Hologres)時尤為重要,因為它顯著降低了遷移成本。在遷移過程中,即便原系統使用 400 列存儲,而新系統可能隻需要 60 列作為主表存儲,其餘字段仍可通過 JSONB 和視圖靈活管理,確定了查詢的連續性和效率。
2. Hologres 在特定分析場景中的應用
- 使用者事件分析
接下來看幾個典型的場景,如在事件分析中,使用者可以根據分區選擇任意的時間周期,并指定事件名稱來進行查詢。核心關注點在于計算這些事件每天的獨立使用者數(UV)。Hologres 在這方面展現了強大的計算能力,特别是在其 2.1 版本後,通過極緻優化了 countdistinct/uniq 算子,能夠高效處理大規模資料(如幾十億條記錄)的UV計算。這種查詢通常在毫秒級内完成,即使在資料量極大時,也能在秒級左右傳回結果,展現了 Hologres 在查詢效率上的顯著優化和保障。
- 留存分析
通過留存分析,可以觀察使用者在不同時間段(如第一天、第二天、第 n 天)的登入情況,進而了解使用者的回訪率和産品的使用者粘性。這種分析對于評估産品性能和指導優化決策至關重要。為此,Hologres 提供了強大的留存分析函數,使得 SQL 開發變得簡單易行,同時保障了查詢性能的高效性。這些功能使得技術團隊能夠更加便捷地進行留存分析,進而做出更精準的産品優化和決策。
- 漏鬥分析
漏鬥分析作為資料分析中的一個重要案例,用于觀察資料在不同階段的轉化率和行為模式。例如,在電商場景中,可以分析從點選到下單、再到支付尾款的轉化率;在遊戲行業中,則可以分析從下載下傳遊戲到登入遊戲的使用者比例。Hologres 提供了全面的漏鬥分析函數,支援全局彙總和按天展開查詢,使用者可以在一個表格中檢視全量資料或按天的漏鬥情況。此外,經過 Hologres 執行引擎的優化,漏鬥分析相關的函數性能相比之前版本有了顯著提升,在遷移自開源版本時,性能提升可能達到 40% 以上。這些功能和性能優化使得 Hologres 成為了實作高效漏鬥分析的理想工具。
- 路徑分析
Hologres 目前版本支援強大的路徑分析功能,該功能在流量場景中尤為重要。路徑分析能夠詳細記錄使用者的通路路徑,包括使用者進入産品後的每一步操作,有助于深入了解使用者行為模式。通過路徑分析,可以清晰地看到每一步操作的流入和流出情況,為業務提供精細化的營運資料支援。這些資料不僅能幫助企業了解産品的通路情況,還能指導産品的疊代和優化方向。
- 歸因場景模型
在廣告和遊戲行業中,歸因模型是評估廣告效果和優化投放政策的重要參考。歸因模型通過分析廣告觸點(如點選)與轉化事件(如下單)之間的關系,來确定廣告管道的效果。下圖詳細闡述了歸因模型中的幾個關鍵步驟,包括識别觸點事件和轉化事件、設定有效轉化周期(如 15 天或 30 天)、基于使用者 ID 關聯觸點與轉化事件,并計算轉化路徑上的權重配置設定。
在歸因計算中,會面臨資料量龐大和查詢開銷大的挑戰,特别是當需要關聯兩個大型表(如觸點表和轉化表)時,會産生大量的笛卡爾積運算,消耗大量 CPU 和記憶體資源。是以,歸因計算的效率高度依賴于資料庫系統的 JOIN 能力。
Hologres 在歸因場景中具有顯著優勢,其 LOCAL JOIN 和 Runtime Filter Join 等特性能夠顯著提升查詢和 JOIN 的效率,使得在大資料量下也能保持較好的計算效果。
- 單表歸因思路
在單表歸因的實踐中,将點選資料和轉化資料統一存儲在 Hologres 數倉層面的政策。這一政策通過數倉層面的資料處理能力,實作資料的關聯和歸因路徑的識别。為了實作高效的資料關聯和歸因計算,充分利用 Hologres 的索引能力和 LOCALJOIN 能力的重要性。這些能力有助于快速比對相關資料,并在比對後進行視窗計算和排序,以确定歸因路徑。
- 多表歸因思路
在 Hologres 之上,可以用兩個表之間的關聯去做分析,還可以做多表關聯、多表歸因。由于廣告的資料量非常大,借助強大的實時處理引擎 Flink 與 Hologres 結合來做實時的歸因。
Hologres 不僅支援 OLAP 查詢,還具備高效的線上分析能力,特别是在處理高 QPS 的點查時表現優異,Flink SQL 的設計應充分利用Hologres的點查能力。
- 長周期 UV 計算
在長周期 UV 計算中,有兩種常見的處理模式。第一種模式涉及處理大規模資料集,當資料量達到千萬或億級别時,通常需要進行兩表關聯,即将事實表與次元表進行關聯,以計算特定 UV 值。在此場景下,由于資料量大且并發要求高(QPS 大于 10),對系統的性能和處理能力提出了較高要求。
第二種模式則針對日資料量較小的場景,采用單表查詢的方式,直接基于事件表進行 UV 計算。雖然在這種場景下 QPS 同樣可能較高(如十個以上、二十個以上),但由于資料量相對較小,系統可以通過優化查詢性能來滿足計算需求。
實時 roaringbitmap 實作步驟如下圖所示:
遊戲行業長周期留存計算的挑戰:需要計算長周期的留存情況,即從角色建立之日起,在接下來任意一年内的每一天的登入留存。這種計算涉及長周期任意兩天之間的 bitmap 交集,計算複雜度高,且傳統的 casewhen 表達式會導緻 SQL 代碼冗長、複雜,影響開發效率和計算效率。
Hologres 的 JSON 函數優化:利用 Hologres 的 JSON 函數來優化這一計算過程。具體方法是,首先将 ndays(天數)和名額值轉換為 JSON 格式的資料,然後在外層使用 Hologres 的 JSONB 處理函數進行展開和計算。
建議遊戲行業的開發人員關注并嘗試這種優化方法,以提升資料處理效率和開發效率。
在寬表處理過程中,常常會遇到因資料關聯導緻的資料量膨脹問題,這不僅增加了計算難度,還嚴重影響了查詢效率。為了優化這一挑戰,我們可以采取将細粒度資料(如商品或品牌資訊)以數組形式嵌入到寬表中的政策,進而避免不必要的資料膨脹。這種方法不僅保持了資料的完整性,還顯著減少了資料備援。此外,利用 Hologres 提供的複雜資料類型(如數組)和高效的 ARRAYBitmap 索引功能,我們可以對數組進行快速的交、并、差等運算,極大地提升了查詢性能,據估計性能提升可能高達 80% 以上。這一優化政策為處理寬表時遇到的資料膨脹和查詢瓶頸問題提供了切實可行的解決方案,展示了 Hologres 在大資料處理領域的強大實力和靈活性。
如果大家對實時數倉 Hologres 産品感興趣,可以在阿裡雲官網搜尋體驗和免費試用。
以上就是本次分享的内容,謝謝大家。