實時數(shù)倉概述
本文為您介紹關(guān)于業(yè)務(wù)處理從傳統(tǒng)數(shù)倉到實時數(shù)倉的技術(shù)框架轉(zhuǎn)變,以及實時數(shù)倉的核心優(yōu)勢等,為您在數(shù)倉的選擇方面提供良好的參考。
背景信息
隨著信息技術(shù)的發(fā)展和互聯(lián)網(wǎng)的普及,企業(yè)越來越看重業(yè)務(wù)的時效性。特別是在數(shù)據(jù)分析領(lǐng)域,企業(yè)對數(shù)據(jù)的時效性要求也越來越高。在數(shù)倉領(lǐng)域,大量的業(yè)務(wù)開始從傳統(tǒng)批量處理的離線模式,轉(zhuǎn)向基于增量流式的實時處理模式。所以實時數(shù)倉的建設(shè),成為當(dāng)前很多數(shù)據(jù)分析業(yè)務(wù)的一項重要任務(wù)。
實時數(shù)倉搭建的主要痛點如下:
傳統(tǒng)離線模式下,實時數(shù)倉存在兩套架構(gòu),代碼難以復(fù)用,開發(fā)和運維成本高。
在數(shù)倉內(nèi)批量處理數(shù)據(jù),調(diào)度方式復(fù)雜,通常需搭配調(diào)度系統(tǒng)來實現(xiàn)調(diào)度。此外由于批處理模式往往需要對全量數(shù)據(jù)做處理,因此實現(xiàn)數(shù)據(jù)實時性的性價比較低。
單純流計算場景對復(fù)雜的業(yè)務(wù)實現(xiàn)支持有限。例如,與較大的離線維度表關(guān)聯(lián)、表的多層嵌套、歷史數(shù)據(jù)的回溯等。
由于大部分業(yè)務(wù)實現(xiàn)需要多系統(tǒng)關(guān)聯(lián)并搭建環(huán)境提取數(shù)據(jù)等,往往導(dǎo)致后期運維復(fù)雜。當(dāng)出現(xiàn)問題時,不僅需要排查的組件多,而且需要對多種新知識進行學(xué)習(xí)和深度理解,才能找到根本原因。這樣導(dǎo)致排查問題成本較高。
云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版基于實時物化視圖搭建流批一體的一站式實時數(shù)倉解決方案,可以很好消除以上痛點,實現(xiàn)一份數(shù)據(jù)、一次寫入、一套系統(tǒng),即可在數(shù)倉內(nèi)完成實時數(shù)據(jù)源從導(dǎo)入到實時分析全流程。
技術(shù)架構(gòu)說明
實時數(shù)倉的搭建通常包含數(shù)據(jù)實時寫入、實時處理、實時分析三個步驟。在數(shù)據(jù)量較小、業(yè)務(wù)較簡單的情況下,例如統(tǒng)計累計訂單總數(shù),該流程比較簡單,采用流處理引擎即可實現(xiàn)。但當(dāng)存在數(shù)據(jù)規(guī)模較大、數(shù)據(jù)格式不規(guī)范、計算邏輯復(fù)雜、下游對中間表的依賴度高等情況時,需要參考數(shù)據(jù)倉庫分層架構(gòu)設(shè)計即ODS、DWD、DWS、ADS。云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版基于實時物化視圖可以完美地融合離線數(shù)倉的分層架構(gòu),實現(xiàn)實時數(shù)倉,滿足數(shù)據(jù)的時效性要求。
通用的業(yè)務(wù)流程為:首先,將多源數(shù)據(jù)(實時、離線)并行實時且高性能地寫入實時數(shù)倉。其次,在倉內(nèi)使用實時物化視圖對數(shù)據(jù)進行增量實時處理和加工,完成字段清洗轉(zhuǎn)換、JOIN
加維、多維度GROUP BY
聚合、多鏈路UNION ALL
匯總等數(shù)據(jù)處理,按照實際需求生成基于實時物化視圖的ETL實時處理數(shù)據(jù)結(jié)果集。最后,支持在實時物化視圖上進行數(shù)據(jù)分析,例如實時AD-HOC查詢,報表展示,實時看板,實時大盤等業(yè)務(wù)分析。
實時寫入。支持豐富的數(shù)據(jù)格式和完備的事務(wù)處理,高性能、低延遲。寫入立即可見。
實時處理?;趯崟r物化視圖,實時數(shù)倉增量流式地對數(shù)據(jù)進行實時ETL處理。相較于普通(非實時)物化視圖,實時物化視圖無需手動調(diào)用刷新命令,即可實現(xiàn)數(shù)據(jù)更新時自動增量地刷新物化視圖。當(dāng)基礎(chǔ)表的數(shù)據(jù)發(fā)生變化時,由基礎(chǔ)表生成的實時物化視圖將進行自動增量更新。此外,在實時物化視圖基礎(chǔ)上再構(gòu)建實時物化視圖,相關(guān)級聯(lián)的實時物化視圖也會隨著基礎(chǔ)表數(shù)據(jù)變化而自動更新。基于此特性可以方便地構(gòu)建分析數(shù)據(jù)的實時ETL處理鏈路。
實時分析。基于SIMD指令集的向量化執(zhí)行引擎、CBO的查詢優(yōu)化器、列式的存儲引擎,實現(xiàn)高效實時數(shù)據(jù)分析。
核心優(yōu)勢
架構(gòu)簡潔且成本優(yōu)勢明顯
云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版支持完整的數(shù)據(jù)實時寫入、實時處理和實時分析,只需維護一套數(shù)倉系統(tǒng)即可一站式的構(gòu)建實時數(shù)倉全流程。此外,云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版一站式實時數(shù)倉的開發(fā)和數(shù)據(jù)流轉(zhuǎn)都在倉內(nèi)完成,無需多套系統(tǒng)間流轉(zhuǎn)。系統(tǒng)購買和搭建成本低,且依賴的組件少,穩(wěn)定性好,運維簡單。優(yōu)勢如下:
成本低。僅存儲一份數(shù)據(jù),數(shù)據(jù)一次寫入,部署一套系統(tǒng),整體資源成本最優(yōu)。
開發(fā)流程簡單。通常一套SQL開發(fā)即可,無需多系統(tǒng)適配關(guān)聯(lián)等。
性能高。簡潔的鏈路流轉(zhuǎn)及增量的數(shù)據(jù)處理模式,占用資源少,且數(shù)據(jù)延遲低。
便于運維。只需維護一套系統(tǒng)。數(shù)據(jù)異常排查和訂正容易完成。
免調(diào)度ETL鏈實時數(shù)據(jù)處理
通過構(gòu)建基于實時物化視圖的ETL處理鏈,可以在數(shù)倉中處理鏈路的依賴關(guān)系。只需將數(shù)據(jù)一次寫入到數(shù)倉中的基礎(chǔ)表,相關(guān)的實時物化視圖會自動處理數(shù)據(jù)的依賴關(guān)系,實現(xiàn)增量數(shù)據(jù)的實時更新。使用云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版數(shù)倉中的實時物化視圖鏈,無需額外運維其他的調(diào)度系統(tǒng),即可實現(xiàn)ETL的實時數(shù)據(jù)處理,節(jié)省實時數(shù)倉的搭建和維護成本。
支持復(fù)雜SQL的實時處理任務(wù)
實時數(shù)倉搭建過程中的一大難點就是將原有的批量處理的復(fù)雜任務(wù),轉(zhuǎn)化為實時處理任務(wù)。通常批量處理任務(wù)可以用復(fù)雜的SQL語句輕松實現(xiàn),包括多重嵌套或多表JOIN
等復(fù)雜SQL,而流式處理對SQL的語句的使用限制較多。
云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版的實時物化視圖技術(shù)實現(xiàn)是基于傳統(tǒng)數(shù)倉的,所以對復(fù)雜SQL的支持方面有一定的優(yōu)勢。基于實時物化視圖的數(shù)倉可以輕松支持數(shù)十張表的復(fù)雜關(guān)聯(lián),且沒有計算窗口限制。相比流計算引擎,復(fù)雜批量處理任務(wù)轉(zhuǎn)化為實時處理任務(wù)的改造成本更小。甚至在實際應(yīng)用中,相當(dāng)一部分原有批量處理任務(wù)可以直接通過實時物化視圖轉(zhuǎn)為實時化任務(wù)處理。
無數(shù)據(jù)窗口限制
實時物化視圖技術(shù)原理上是基于數(shù)據(jù)庫引擎的,數(shù)據(jù)庫引擎通常都是面向磁盤存儲設(shè)計的。相比于基于內(nèi)存設(shè)計的流計算引擎,實時物化視圖可以更好地實現(xiàn)大表的實時JOIN
,尤其是數(shù)據(jù)量超大的表進行復(fù)雜的實時JOIN
。此外,實時物化視圖支持任意歷史數(shù)據(jù)的回溯,不受窗口限制。對于歷史數(shù)據(jù)的訂正和回溯,使用實時物化視圖十分便捷。只需對原始數(shù)據(jù)做更新即可自動反映到實時鏈路中。在實際場景中,云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版的實時物化視圖支持數(shù)十張表JOIN
,實現(xiàn)秒級延時的無窗口限制的實時增量更新。
輕松支持流批一體
基于實時物化視圖構(gòu)建的實時處理鏈路,僅需一份SQL腳本,即可同時支持流式和批量數(shù)據(jù)處理。在實時物化視圖首次創(chuàng)建時,是基于批量處理的方式執(zhí)行SQL,完成全量結(jié)果集的計算,之后在實時寫入的過程中增量地流式維護SQL的結(jié)果集。此外,實時物化視圖支持針對只有部分數(shù)據(jù)需要實時更新,其余數(shù)據(jù)只需定時更新的場景。可以設(shè)置定時更新的表不參與實時更新,在需要的時候,通過Refresh的方式,批量刷新定時更新的結(jié)果集。下圖為流批一體的流程圖。
兼容Zero-ETL功能
云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版兼容無感集成(Zero-ETL)功能。只需購買云原生數(shù)據(jù)倉庫 AnalyticDB PostgreSQL 版數(shù)倉,即可實現(xiàn)數(shù)據(jù)實時并行入倉,實時ETL處理,及實時AD-HOC查詢和數(shù)據(jù)分析等。