實時數(shù)據(jù)倉庫的最新架構(gòu)與技術(shù)趨勢

實時數(shù)據(jù)倉庫是一種存儲、管理和處理實時數(shù)據(jù)的技術(shù)架構(gòu)。它允許企業(yè)在實時或接近實時的情況下進行數(shù)據(jù)分析、報表生成和業(yè)務(wù)決策。與傳統(tǒng)的批處理數(shù)據(jù)倉庫不同,實時數(shù)據(jù)倉庫強調(diào)數(shù)據(jù)的即時性和實時性。

本文來自微信公眾號“ruby的數(shù)據(jù)漫談”,作者/ruby。

這篇文章介紹了實時數(shù)據(jù)倉庫的基本概念和技術(shù)架構(gòu),以及最新的實時數(shù)倉架構(gòu)和云原生實時數(shù)倉架構(gòu)的核心能力。實時數(shù)據(jù)倉庫強調(diào)數(shù)據(jù)的即時性和實時性,能夠接收和處理實時產(chǎn)生的數(shù)據(jù),并將其快速集成和存儲,以實現(xiàn)實時分析和查詢。實時數(shù)據(jù)倉庫的基本組件包括數(shù)據(jù)源、實時數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)實時處理和數(shù)據(jù)服務(wù)。最新的實時數(shù)倉架構(gòu)使用實時流處理引擎和HTAP數(shù)據(jù)庫完成流批處理一體的實時數(shù)據(jù)倉庫。云原生實時數(shù)倉架構(gòu)具有實時數(shù)據(jù)采集能力、分布式數(shù)據(jù)存儲能力、HTAP數(shù)據(jù)庫能力、實時變更自動捕獲能力、流批處理能力和云原生的計算資源和存儲資源的彈性伸縮能力。

01

什么是實時數(shù)據(jù)倉庫?

實時數(shù)據(jù)倉庫是一種存儲、管理和處理實時數(shù)據(jù)的技術(shù)架構(gòu)。它允許企業(yè)在實時或接近實時的情況下進行數(shù)據(jù)分析、報表生成和業(yè)務(wù)決策。與傳統(tǒng)的批處理數(shù)據(jù)倉庫不同,實時數(shù)據(jù)倉庫強調(diào)數(shù)據(jù)的即時性和實時性。它能夠接收和處理實時產(chǎn)生的數(shù)據(jù),并將其快速集成和存儲,以便實時分析和查詢。實時數(shù)據(jù)倉庫通常使用數(shù)據(jù)復(fù)制和流式處理技術(shù),以確保數(shù)據(jù)的實時傳輸和處理。之前已經(jīng)介紹過很三種類型的實時數(shù)據(jù)倉庫的技術(shù)架構(gòu),都存在一定的缺陷,具體詳見《實時數(shù)倉&流批一體技術(shù)發(fā)展趨勢》。目前最新的實時數(shù)倉架構(gòu)是有實時流處理引擎和HTAP數(shù)據(jù)庫完成的流批處理一體的實時數(shù)倉,該種技術(shù)架構(gòu)是目前實時數(shù)倉和流程處理的發(fā)展趨勢。

實時數(shù)倉架構(gòu)的基本組件有哪些了?

1.數(shù)據(jù)源:實時數(shù)據(jù)倉庫的數(shù)據(jù)源可以是各種數(shù)據(jù)系統(tǒng),如關(guān)系數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫、文件系統(tǒng)、傳感器等。這些數(shù)據(jù)源提供實時生成的數(shù)據(jù)。

2.實時數(shù)據(jù)采集:數(shù)據(jù)采集是指從數(shù)據(jù)源中實時提取數(shù)據(jù)并將其傳輸?shù)綄崟r數(shù)據(jù)倉庫的過程。這可以通過各種技術(shù)實現(xiàn),包括數(shù)據(jù)復(fù)制、流數(shù)據(jù)處理等。

3.數(shù)據(jù)存儲:實時數(shù)據(jù)倉庫需要有適當?shù)臄?shù)據(jù)存儲系統(tǒng)來存儲實時生成的數(shù)據(jù)。常見的存儲系統(tǒng)包括HTAP數(shù)據(jù)庫數(shù)據(jù)庫、列式數(shù)據(jù)庫等。

4.數(shù)據(jù)實時處理:數(shù)據(jù)處理是針對實時數(shù)據(jù)倉庫中的數(shù)據(jù)進行分析和處理的過程。一般是流式處理引擎。

5.數(shù)據(jù)服務(wù):數(shù)據(jù)服務(wù)將分析的結(jié)構(gòu)以多種分析結(jié)果的方式提供給BI使用。這可以通過儀表盤、報表、圖表、地圖等方式實現(xiàn)。

這些組件相互配合,構(gòu)成了實時數(shù)據(jù)倉庫的基本架構(gòu)。根據(jù)具體的需求和技術(shù)選擇,實時數(shù)據(jù)倉庫的各個組件可能會有所不同。

對應(yīng)于該技術(shù)架構(gòu)圖如下所示:

1.png

該技術(shù)架構(gòu)主要的優(yōu)勢主要體現(xiàn)在HTAP分布式集群和流批處理引擎flink.將整體的流式處理實時存儲和存儲在HTAP數(shù)據(jù)庫,即有數(shù)據(jù)處理實時能力,又具備數(shù)據(jù)統(tǒng)一存儲的分布式架構(gòu),另外具備數(shù)據(jù)統(tǒng)一管理的元數(shù)據(jù)管理能力和,HTAP數(shù)據(jù)庫需要的ACID事務(wù)處理能力,保證數(shù)據(jù)處理過程中的事務(wù)性和數(shù)據(jù)分析的能力。

02

云原生實時數(shù)倉架構(gòu)核心能力

基于云原生的實時數(shù)倉架構(gòu)的核心能力主要體現(xiàn)在實時數(shù)據(jù)采集能力、分布式數(shù)據(jù)存儲能力,HTAP數(shù)據(jù)庫能力、實時變更自動捕獲能力、流批處理能力,云原生的計算資源和存儲資源的彈性伸縮能力。

一、Flink CDC

1、Flink CDC可以與各種數(shù)據(jù)源進行集成,如關(guān)系型數(shù)據(jù)庫(如MySQL、PostgreSQL、Oracle等)、消息隊列(如Kafka、RabbitMQ等)以及文件系統(tǒng)等。這使得Flink CDC能夠?qū)崟r采集這些數(shù)據(jù)源中的增量更新或變化。

2、增量數(shù)據(jù)抓?。篎link CDC可以通過監(jiān)視數(shù)據(jù)庫的日志或輪詢查詢方式,捕獲數(shù)據(jù)源中的增量更新或變化。這使得Flink CDC能夠?qū)崟r獲取數(shù)據(jù)源中的新數(shù)據(jù),并按照變化進行處理和傳輸。

3、Flink CDC提供了容錯機制和一致性保證,以確保在數(shù)據(jù)采集過程中的數(shù)據(jù)可靠。

二、分布式數(shù)據(jù)存儲能力

由于實時數(shù)據(jù)倉庫需要存儲ODS、DW、APP的數(shù)據(jù),因此,分布式數(shù)據(jù)存儲通過集群管理存儲的數(shù)據(jù),按需分配存儲的數(shù)據(jù)庫的存儲空間,實現(xiàn)彈性伸縮能力。

1.數(shù)據(jù)分片:將數(shù)據(jù)分成多個片(shard),并將這些數(shù)據(jù)片分布存儲在不同的節(jié)點上。每個數(shù)據(jù)片包含部分數(shù)據(jù),通過使用分片鍵(shard key)進行數(shù)據(jù)的分配和定位。

2.數(shù)據(jù)復(fù)制:為了提高數(shù)據(jù)的可靠性和容錯性,分布式數(shù)據(jù)庫會將數(shù)據(jù)復(fù)制到不同的節(jié)點上。數(shù)據(jù)復(fù)制可以使用主備模式,其中一個節(jié)點作為主節(jié)點,其他節(jié)點作為備份節(jié)點,同步復(fù)制主節(jié)點上的數(shù)據(jù)。

3.數(shù)據(jù)一致性:在分布式環(huán)境中,數(shù)據(jù)一致性是一個關(guān)鍵的問題。分布式數(shù)據(jù)庫通過使用一致性協(xié)議(如Paxos或Raft)來確保數(shù)據(jù)在不同節(jié)點之間的一致性。

4.數(shù)據(jù)分發(fā)和負載均衡:在分布式環(huán)境中,需要將請求分發(fā)到適當?shù)墓?jié)點上進行處理,并確保各個節(jié)點上的負載均衡。分布式數(shù)據(jù)庫使用路由算法和負載均衡策略來實現(xiàn)數(shù)據(jù)請求的分發(fā)和負載均衡。

5.數(shù)據(jù)恢復(fù)和故障轉(zhuǎn)移:當節(jié)點發(fā)生故障或失效時,分布式數(shù)據(jù)庫能夠自動進行數(shù)據(jù)恢復(fù)和故障轉(zhuǎn)移,將受影響的數(shù)據(jù)重新分配到其他正常運行的節(jié)點上。

三、HTAP數(shù)據(jù)庫(Hybrid Transactional/Analytical Processing)

HTAP數(shù)據(jù)庫是即可以支持OLTP又可以支持OLAP能力的數(shù)據(jù)。需要具備以下能力:

1、ACID事務(wù)處理能力:HTAP數(shù)據(jù)庫能夠處理大量的并發(fā)事務(wù),保證數(shù)據(jù)的一致性和可靠性。

2、實時分析能力:HTAP數(shù)據(jù)庫可以實時對數(shù)據(jù)進行分析和查詢,不需要將數(shù)據(jù)從事務(wù)處理系統(tǒng)導(dǎo)入到分析系統(tǒng)中。

3、混合工作負載能力:HTAP數(shù)據(jù)庫可以同時支持事務(wù)處理和分析查詢兩種不同的工作負載,而不需要分別使用不同的數(shù)據(jù)庫系統(tǒng)。

4、數(shù)據(jù)復(fù)用能力:HTAP數(shù)據(jù)庫可以將事務(wù)處理過程中產(chǎn)生的數(shù)據(jù)直接用于分析查詢,避免了數(shù)據(jù)復(fù)制的成本和延遲。

5、數(shù)據(jù)一致性能力:HTAP數(shù)據(jù)庫可以保證事務(wù)處理和分析查詢之間的數(shù)據(jù)一致性,避免了數(shù)據(jù)沖突和臟數(shù)據(jù)問題。

四、實時變更自動捕獲能力

實時變更自動捕獲能力是指數(shù)據(jù)庫系統(tǒng)能夠自動捕獲和處理實時變更(real-time change data capture,CDC)的能力。具體來說,它可以實時跟蹤和捕獲數(shù)據(jù)庫中的數(shù)據(jù)變更,并將這些變更信息存儲到一個特定的位置,以供進一步的處理和分析。實時變更一般是指表的新增、修改、刪除的數(shù)據(jù)動作,而大部分是以日志的形勢記錄,將該日志自動獲取到,推動到固定的kafka Topic中。

五、Flink的流批處理能力

Flink提供了一個高效、容錯、分布式的流處理引擎,可以處理實時的數(shù)據(jù)流。它支持事件時間和處理時間的窗口操作、流水線優(yōu)化、低延遲的事件處理、狀態(tài)管理等特性,可以用于構(gòu)建實時數(shù)據(jù)處理應(yīng)用。Flink不僅支持流處理,還提供了強大的批處理能力。用戶可以使用Flink的DataSet API進行批處理操作,執(zhí)行離線的數(shù)據(jù)分析和批量計算任務(wù)。Flink提供了強大的狀態(tài)管理機制,可以處理大規(guī)模的狀態(tài)(如窗口狀態(tài)、鍵控狀態(tài)),同時保證狀態(tài)的一致性和容錯性。這使得Flink在流和批處理場景下能夠高效地管理和處理狀態(tài)信息。

詳細了解可以參見《Flink的高階API-Table API&SQL》、《Flink通過哪些功能支持實時開發(fā)了?》

六、云原生的計算資源和存儲資源的彈性伸縮能力

1、彈性和可擴展性:在flink cdc、kafka、分布式存儲、flink組件都可以采用云原生的構(gòu)建和部署方式。云原生部署方式可以利用云計算環(huán)境的資源彈性和可擴展性,根據(jù)需要自動伸縮應(yīng)用服務(wù)的數(shù)量和資源使用。

2、微服務(wù)架構(gòu):云原生數(shù)據(jù)服務(wù)采用微服務(wù)架構(gòu),將數(shù)據(jù)fu無拆分為一組松耦合、可獨立部署、可單獨擴展的微小服務(wù)。這樣可以提高應(yīng)用程序的可維護性、可擴展性和可部署性。

03

與其它實時數(shù)倉架構(gòu)的區(qū)別

其它實時數(shù)據(jù)倉庫的架構(gòu)一般采用的kappa技術(shù)架構(gòu),如下圖所示:

1.png

這種架構(gòu)利用了kappa的技術(shù)架構(gòu)和數(shù)據(jù)湖的能力確實實現(xiàn)了湖倉一體和流批處理一體,但是它在數(shù)據(jù)處理上還是采用了2套數(shù)據(jù)存儲流程,主要原因是kafka一般情況下只能存儲幾天的數(shù)據(jù),不能擁有分布式存儲這種大批量的數(shù)據(jù)存儲能力。另外kappa技術(shù)架構(gòu)還有以下缺陷:

1、數(shù)據(jù)的一次性處理、重處理困難:Kappa架構(gòu)中的流處理系統(tǒng)只會處理實時數(shù)據(jù),而不會處理歷史數(shù)據(jù)。這意味著如果需要對歷史數(shù)據(jù)進行分析或處理,就需要使用額外的批處理系統(tǒng)。這可能導(dǎo)致處理數(shù)據(jù)的復(fù)雜性和延遲增加。

2、數(shù)據(jù)的回溯困難:由于Kappa架構(gòu)只處理實時數(shù)據(jù),當需要回溯之前的數(shù)據(jù)時,可能遇到困難。因為流處理系統(tǒng)通常僅保留一段時間內(nèi)的數(shù)據(jù),之前的數(shù)據(jù)可能已被刪除或丟失。如果需要對過去的數(shù)據(jù)進行分析或重現(xiàn)特定時刻的狀態(tài),就需要借助其他方式來處理。

3、增加批處理,增加了系統(tǒng)的復(fù)雜度:在Kappa架構(gòu)只處理實時數(shù)據(jù),意味著在數(shù)據(jù)處理過程中難以調(diào)試、當數(shù)據(jù)處理出現(xiàn)問題的時候,難以追蹤到具體的數(shù)據(jù)和邏輯,需要增加批處理流程以實現(xiàn)在流式處理出現(xiàn)問題的時候,采用批處理來彌補錯誤,這樣會造成系統(tǒng)的復(fù)雜性。

以上是該架構(gòu)的一些缺陷,而最新的云原生的實時數(shù)倉架構(gòu)是真正的流批一體架構(gòu),不需要維護兩套數(shù)據(jù)處理流程,開發(fā)簡單,數(shù)據(jù)追蹤容易,統(tǒng)一的元數(shù)據(jù)管理。大大降低了實時開發(fā)的難度和代碼維護的難度。

注:ACID事務(wù)處理能力是指數(shù)據(jù)庫系統(tǒng)能夠滿足ACID屬性的特性,即原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability)。

1.原子性(Atomicity):事務(wù)中的操作要么全部執(zhí)行成功,要么全部失敗回滾,不存在部分執(zhí)行成功部分失敗的情況。如果一個事務(wù)中的任何一個操作失敗,數(shù)據(jù)庫會自動撤銷所有事務(wù)執(zhí)行的操作,將數(shù)據(jù)庫恢復(fù)到事務(wù)開始之前的狀態(tài),保證數(shù)據(jù)的一致性。

2.一致性(Consistency):事務(wù)在執(zhí)行之前和執(zhí)行之后,數(shù)據(jù)庫的狀態(tài)都必須保持一致。這意味著事務(wù)必須滿足所有定義的數(shù)據(jù)庫約束和規(guī)則,不會破壞數(shù)據(jù)的完整性。

3.隔離性(Isolation):每個事務(wù)的執(zhí)行都是相互隔離的,保證事務(wù)之間的相互影響最小。并發(fā)執(zhí)行的多個事務(wù)之間不能互相干擾,每個事務(wù)都認為它是在獨占地使用數(shù)據(jù)庫,避免了數(shù)據(jù)讀取的問題(如臟讀、不可重復(fù)讀和虛讀)。

4.持久性(Durability):一旦事務(wù)提交,其修改的數(shù)據(jù)將永久保存在數(shù)據(jù)庫中,即使在系統(tǒng)發(fā)生故障時也不會丟失。數(shù)據(jù)庫使用一種可靠的機制來確保數(shù)據(jù)的持久性,如寫入日志文件。

ACID事務(wù)處理能力是保證數(shù)據(jù)庫的數(shù)據(jù)一致性和可靠性的重要特性,能夠確保數(shù)據(jù)庫在并發(fā)環(huán)境下的正確運行和可靠性。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論