傳統數倉架構(如Lambda/Kappa)面臨三大核心痛點:流批處理架構的分離導致開發與維護成本的增加,多副本儲存造成儲存資源的浪費,以及跨層資料口徑對齊的複雜性引發一致性風險。為應對這些挑戰,引入了物化表(Materialized Table),其基於資料的新鮮度(分鐘/天級)和查詢語句自動產生表結構(Schema),並建立持續重新整理的資料管道。此機制將流批處理邏輯統一為單一路徑,不僅消除了冗餘儲存副本,而且保障了全鏈路資料口徑的一致性,從而顯著簡化了即時數倉的營運複雜度。
物化表核心概念
物化表工作原理
物化表需明確定義兩個核心參數:資料新鮮度(FRESHNESS)和查詢語句(AS SELECT)。Flink引擎通過查詢結果自動推導Schema,並在Catalog中註冊物化表結構,同時根據新鮮度配置自動建立流式或批次工作來維護資料更新。
如圖所示,當物化表C的新鮮度設定為30分鐘時,系統會最大限度地保證該表資料相對於基表(如物化表A)的延隔時間不超過該閾值,且下遊表的新鮮度必須為上遊的整數倍(如60分鐘或90分鐘)。通過延長新鮮度參數(最大支援1天),可降低高頻更新帶來的資源消耗,例如將分鐘級更新調整為小時級批次更新。
應用情境
物化表通過流批一體的湖倉範式設計,在以下情境中具有顯著的技術與成本優勢:
歷史資料修正。
由於資料轉送延時等問題可能導致最終資料存在部分失真,因此通常需要離線作業對資料進行修正。物化表的重新整理能力允許在任意時間更新資料,同時對下遊所有關聯的物化表進行統一更新。
資料口徑對齊。
在Lambda架構中,離線和即時資料需分別儲存於不同的業務系統中,處理邏輯與建表欄位難以實現自然對齊。物化表可以確保資料僅儲存一份,避免了複雜的拼接計算。這不僅有效節省了儲存資源,還顯著減少了資料對齊口徑問題的。
動態資料大屏即時統計。
動態資料大屏在不同業務情境下對資料重新整理的時間要求存在顯著差異。物化表可以通過簡單調整資料的新鮮度,實現從天級到分鐘級的資料重新整理能力,無需單獨建立即時鏈路,從而使即時化過程變得更加便捷。
如何使用物化表
文檔 | 說明 |
瞭解如何建立物化表,以及進行歷史資料回刷、修改新鮮度、查看物化表的血緣關係。 | |
瞭解如何基於Paimon和物化表,構建流批一體的湖倉分析處理鏈路,以及通過修改表資料新鮮度,完成由批到流的切換,實現資料即時更新。 |
相關文檔
Apache Paimon是一種流批統一的資料湖儲存格式,可以快速地在雲端OSS上構建資料湖儲存服務,詳情請參見基於Paimon的Streaming Lakehouse方案。
通過Flink+Paimon+StarRocks搭建流式湖倉,詳情請參見基於Flink搭建流式湖倉OpenLake方案。