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

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

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

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

01

什么是實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)?

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

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

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

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

3.數(shù)據(jù)存儲(chǔ):實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)需要有適當(dāng)?shù)臄?shù)據(jù)存儲(chǔ)系統(tǒng)來(lái)存儲(chǔ)實(shí)時(shí)生成的數(shù)據(jù)。常見(jiàn)的存儲(chǔ)系統(tǒng)包括HTAP數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)、列式數(shù)據(jù)庫(kù)等。

4.數(shù)據(jù)實(shí)時(shí)處理:數(shù)據(jù)處理是針對(duì)實(shí)時(shí)數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)進(jìn)行分析和處理的過(guò)程。一般是流式處理引擎。

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

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

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

1.png

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

02

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

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

一、Flink CDC

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

四、實(shí)時(shí)變更自動(dòng)捕獲能力

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

五、Flink的流批處理能力

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

詳細(xì)了解可以參見(jiàn)《Flink的高階API-Table API&SQL》、《Flink通過(guò)哪些功能支持實(shí)時(shí)開(kāi)發(fā)了?》

六、云原生的計(jì)算資源和存儲(chǔ)資源的彈性伸縮能力

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

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

03

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

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

1.png

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

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

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

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

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

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

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

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

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

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

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

THEEND

最新評(píng)論(評(píng)論僅代表用戶(hù)觀點(diǎn))

更多
暫無(wú)評(píng)論