探索流式數(shù)據(jù)庫(kù)的動(dòng)態(tài)特性
譯文譯者 | 李睿
審校 | 重樓
本文對(duì)流式數(shù)據(jù)庫(kù)進(jìn)行探討,因?yàn)樗菙?shù)據(jù)流處理系統(tǒng)的核心組件。如果需要更多選擇,還將提供一些商業(yè)上可用的解決方案。
流式數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)
流處理的本質(zhì)是將數(shù)據(jù)視為連續(xù)不斷的流進(jìn)行管理,不能依賴傳統(tǒng)的數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù)。我們將流式數(shù)據(jù)庫(kù)定義為用于存儲(chǔ)、處理和增強(qiáng)數(shù)據(jù)流的實(shí)時(shí)數(shù)據(jù)存儲(chǔ)庫(kù)。因此,流式數(shù)據(jù)庫(kù)的基本特征是它們管理動(dòng)態(tài)數(shù)據(jù)的能力,即能夠?qū)崟r(shí)捕獲和處理事件,確保數(shù)據(jù)的即時(shí)性和有效性。
流式數(shù)據(jù)庫(kù)
與存儲(chǔ)靜態(tài)數(shù)據(jù)集并需要定期更新來(lái)處理它們的傳統(tǒng)數(shù)據(jù)庫(kù)不同,流式數(shù)據(jù)庫(kù)采用事件驅(qū)動(dòng)模型,在生成數(shù)據(jù)時(shí)對(duì)其作出反應(yīng)。這使組織能夠從實(shí)時(shí)數(shù)據(jù)中提取可操作的見(jiàn)解,從而實(shí)現(xiàn)及時(shí)決策和對(duì)動(dòng)態(tài)趨勢(shì)的響應(yīng)。
流式數(shù)據(jù)庫(kù)和傳統(tǒng)數(shù)據(jù)庫(kù)之間的一個(gè)關(guān)鍵區(qū)別在于它們對(duì)時(shí)間的處理方式。在流式數(shù)據(jù)庫(kù)中,時(shí)間是一個(gè)關(guān)鍵維度,因?yàn)閿?shù)據(jù)不僅僅是靜態(tài)記錄,而且與時(shí)間屬性相關(guān)聯(lián)。
流式數(shù)據(jù)庫(kù)中的延遲
具體來(lái)說(shuō),可以定義以下內(nèi)容:
- 事件時(shí)間:是一個(gè)事件或數(shù)據(jù)點(diǎn)在現(xiàn)實(shí)世界中實(shí)際發(fā)生的時(shí)間。例如,如果正在處理來(lái)自測(cè)量溫度的設(shè)備的傳感器數(shù)據(jù)流,則事件時(shí)間將是傳感器記錄每次溫度測(cè)量的實(shí)際時(shí)間。
- 處理時(shí)間:是在流處理系統(tǒng)中處理事件的時(shí)間。例如,如果在接收到溫度測(cè)量值之后處理溫度測(cè)量值有延遲或滯后,則處理時(shí)間將晚于事件時(shí)間。
這種時(shí)間感知能力有助于創(chuàng)建基于時(shí)間的聚合,使企業(yè)能夠正確理解時(shí)間間隔內(nèi)的趨勢(shì)和模式,并處理無(wú)序事件。
事實(shí)上,由于網(wǎng)絡(luò)延遲、不同的處理速度或其他因素等原因,事件并不總是按照它們?cè)诂F(xiàn)實(shí)世界中發(fā)生的順序到達(dá)處理系統(tǒng)。
因此,通過(guò)將事件時(shí)間合并到分析中,流式數(shù)據(jù)庫(kù)可以根據(jù)事件在現(xiàn)實(shí)世界中的實(shí)際發(fā)生情況對(duì)事件進(jìn)行重新排序。這意味著,即使它們無(wú)序到達(dá),與每個(gè)事件相關(guān)聯(lián)的時(shí)間戳可以用于將事件排列在正確的時(shí)間序列中。這確保了分析計(jì)算和聚合反映事件的時(shí)間現(xiàn)實(shí),提供了對(duì)趨勢(shì)和模式的準(zhǔn)確見(jiàn)解。
實(shí)現(xiàn)流式數(shù)據(jù)庫(kù)面臨的挑戰(zhàn)
雖然流式數(shù)據(jù)庫(kù)為實(shí)時(shí)數(shù)據(jù)處理提供了一種革命性的方法,但它們的實(shí)現(xiàn)可能具有挑戰(zhàn)性。
以下是實(shí)現(xiàn)流式數(shù)據(jù)庫(kù)面臨的挑戰(zhàn):
1.流式數(shù)據(jù)的龐大數(shù)量和速度
實(shí)時(shí)數(shù)據(jù)流以高速產(chǎn)生大量新數(shù)據(jù),特別是在物聯(lián)網(wǎng)和金融市場(chǎng)等應(yīng)用中常見(jiàn)的高頻數(shù)據(jù)流。因此,流式數(shù)據(jù)庫(kù)需要在不犧牲性能的情況下有效地處理連續(xù)的數(shù)據(jù)流。
2.確保實(shí)時(shí)數(shù)據(jù)的一致性
在傳統(tǒng)的批處理中,一致性是通過(guò)定期更新來(lái)實(shí)現(xiàn)的。在流式數(shù)據(jù)庫(kù)中,實(shí)時(shí)確保分布式系統(tǒng)之間的一致性卻帶來(lái)了更大的復(fù)雜性。事件時(shí)間處理、水印和冪等運(yùn)算等技術(shù)被用來(lái)解決這些挑戰(zhàn),但需要仔細(xì)實(shí)現(xiàn)。
3.安全和隱私問(wèn)題
流數(shù)據(jù)通常包含敏感信息,對(duì)其進(jìn)行實(shí)時(shí)處理需要強(qiáng)大的安全措施。加密、身份驗(yàn)證和授權(quán)機(jī)制必須集成到流式數(shù)據(jù)庫(kù)架構(gòu)中,以保護(hù)數(shù)據(jù)免受未經(jīng)授權(quán)的訪問(wèn)和潛在的破壞。此外,遵從數(shù)據(jù)保護(hù)法規(guī)又增加了一層復(fù)雜性。
4.工具和集成
流式數(shù)據(jù)源的多樣性和可用工具的多樣性需要深思熟慮的集成策略。與現(xiàn)有系統(tǒng)的兼容性、易于集成以及支持不同數(shù)據(jù)格式和協(xié)議的能力成為關(guān)鍵考慮因素。
5.對(duì)技術(shù)人員的需求
由于流式數(shù)據(jù)庫(kù)本質(zhì)上與實(shí)時(shí)分析有關(guān),因此必須考慮到對(duì)開發(fā)、管理和優(yōu)化這些系統(tǒng)的熟練人員的需求。該領(lǐng)域?qū)I(yè)知識(shí)的缺乏可能會(huì)延遲流式數(shù)據(jù)庫(kù)的廣泛采用,組織必須在培訓(xùn)和開發(fā)方面進(jìn)行投資,以彌補(bǔ)這一差距。
流式數(shù)據(jù)庫(kù)的架構(gòu)
流式數(shù)據(jù)庫(kù)的架構(gòu)是為了有效地處理實(shí)時(shí)數(shù)據(jù)流的復(fù)雜性而精心設(shè)計(jì)的。
該架構(gòu)的核心體現(xiàn)了分布式計(jì)算的原則,支持對(duì)流式數(shù)據(jù)動(dòng)態(tài)特性的可擴(kuò)展性和響應(yīng)性。
流式數(shù)據(jù)庫(kù)架構(gòu)的一個(gè)基本方面是能夠容納連續(xù)的、高速的數(shù)據(jù)流。這是通過(guò)數(shù)據(jù)攝取、處理和存儲(chǔ)組件的組合實(shí)現(xiàn)的。
數(shù)據(jù)攝取層負(fù)責(zé)實(shí)時(shí)收集和接受來(lái)自各種來(lái)源的數(shù)據(jù)。這可能涉及到外部系統(tǒng)、消息隊(duì)列或直接API集成的連接器。
數(shù)據(jù)一旦被攝取,就會(huì)在流處理層中進(jìn)行處理,在該層中對(duì)數(shù)據(jù)進(jìn)行近乎實(shí)時(shí)的分析、轉(zhuǎn)換和豐富。這一層通常使用流處理引擎或框架,這些引擎或框架支持在流數(shù)據(jù)上執(zhí)行復(fù)雜的計(jì)算,從而允許推導(dǎo)有意義的見(jiàn)解。
流式數(shù)據(jù)庫(kù)中的事件
由于它們處理實(shí)時(shí)數(shù)據(jù),流式數(shù)據(jù)庫(kù)架構(gòu)的一個(gè)標(biāo)志是事件驅(qū)動(dòng)的范式。實(shí)際上,每個(gè)數(shù)據(jù)點(diǎn)都被視為一個(gè)事件,系統(tǒng)實(shí)時(shí)地對(duì)這些事件作出反應(yīng)。這種時(shí)間感知能力是基于時(shí)間的聚合和處理無(wú)序事件的基礎(chǔ),有助于對(duì)數(shù)據(jù)的時(shí)間動(dòng)態(tài)進(jìn)行更細(xì)致的理解。
流式數(shù)據(jù)庫(kù)中的模式設(shè)計(jì)也是動(dòng)態(tài)和靈活的,允許數(shù)據(jù)結(jié)構(gòu)隨時(shí)間的推移而變化。實(shí)際上,與具有嚴(yán)格模式的傳統(tǒng)數(shù)據(jù)庫(kù)不同,流式數(shù)據(jù)庫(kù)適應(yīng)流數(shù)據(jù)的流動(dòng)性,其中模式可能隨著新字段或?qū)傩缘囊攵淖儯哼@種靈活性允許處理不同的數(shù)據(jù)格式并滿足流應(yīng)用程序不斷變化的需求。
流式數(shù)據(jù)庫(kù)示例
現(xiàn)在介紹幾個(gè)商業(yè)上可用的流式數(shù)據(jù)庫(kù)示例,以突出它們的功能和應(yīng)用領(lǐng)域。
1.RisingWave
RisingWave是一個(gè)分布式SQL流式數(shù)據(jù)庫(kù),可以實(shí)現(xiàn)簡(jiǎn)單、高效、可靠的流數(shù)據(jù)處理。它消耗流數(shù)據(jù),在新數(shù)據(jù)進(jìn)入時(shí)執(zhí)行增量計(jì)算,并動(dòng)態(tài)更新結(jié)果。
由于RisingWave是一個(gè)分布式數(shù)據(jù)庫(kù),因此它采用并行化來(lái)滿足可擴(kuò)展性的需求。實(shí)際上,通過(guò)將處理任務(wù)分布到多個(gè)節(jié)點(diǎn)或集群,它可以有效地并發(fā)處理大量傳入數(shù)據(jù)流。這種分布式特性還確保了容錯(cuò)性和彈性,因?yàn)榧词乖诠?jié)點(diǎn)出現(xiàn)故障的情況下,系統(tǒng)也可以繼續(xù)無(wú)縫運(yùn)行。
另外,RisingWave數(shù)據(jù)庫(kù)是一個(gè)為云計(jì)算設(shè)計(jì)的開源分布式SQL流式數(shù)據(jù)庫(kù)。特別是,它是作為一個(gè)分布式流式數(shù)據(jù)庫(kù)從頭開始設(shè)計(jì)的,而不是基于另一個(gè)系統(tǒng)的臨時(shí)實(shí)現(xiàn)。
它還允許開發(fā)人員通過(guò)級(jí)聯(lián)物化視圖來(lái)表達(dá)復(fù)雜的流處理邏輯,從而降低了構(gòu)建流處理應(yīng)用程序的復(fù)雜性。此外,它允許用戶直接在系統(tǒng)內(nèi)持久保存數(shù)據(jù),而不需要將結(jié)果交付給外部數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)和查詢服務(wù)。
RisingWave數(shù)據(jù)庫(kù)易用性的描述如下:
- 簡(jiǎn)單易學(xué):它使用PostgreSQL風(fēng)格的SQL,使用戶能夠像使用PostgreSQL數(shù)據(jù)庫(kù)一樣深入到流處理中。
- 易于開發(fā):由于它作為關(guān)系數(shù)據(jù)庫(kù)運(yùn)行,開發(fā)人員可以將流處理邏輯分解為更小的、可管理的、堆疊的物化視圖,而不是處理大量的計(jì)算程序。
- 易于集成:通過(guò)與各種云計(jì)算系統(tǒng)和PostgreSQL生態(tài)系統(tǒng)的集成,RisingWave擁有豐富而擴(kuò)展的生態(tài)系統(tǒng),可以直接集成到現(xiàn)有的基礎(chǔ)設(shè)施中。
最后,Materialize提供了強(qiáng)大的一致性和正確性保證,即使在并發(fā)數(shù)據(jù)更新的情況下也能確保查詢結(jié)果準(zhǔn)確可靠。這使得它成為需要及時(shí)洞察和實(shí)時(shí)分析的應(yīng)用程序的理想解決方案。
Materialize提供實(shí)時(shí)、增量處理流數(shù)據(jù)的能力,加上其易用性和強(qiáng)大的性能,使其成為現(xiàn)代數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序的強(qiáng)大工具。
最后,RisingWave提供了RisingWave云:這是一種托管服務(wù),可以創(chuàng)建一個(gè)新的云托管的RisingWave集群,并在幾分鐘內(nèi)開始進(jìn)行流處理。
2.Materialize
Materialize是一種高性能、基于SQL的流式數(shù)據(jù)倉(cāng)庫(kù),旨在提供實(shí)時(shí)、增量的數(shù)據(jù)處理,并強(qiáng)調(diào)簡(jiǎn)單性、效率和可靠性。其架構(gòu)使用戶能夠以最小的延遲在流數(shù)據(jù)之上構(gòu)建復(fù)雜的增量數(shù)據(jù)轉(zhuǎn)換和查詢。
由于它是為實(shí)時(shí)數(shù)據(jù)處理而構(gòu)建的,Materialize利用高效的增量計(jì)算來(lái)確保低延遲的更新和查詢。通過(guò)只處理數(shù)據(jù)中的更改,而不是重新處理整個(gè)數(shù)據(jù)集,它能夠以最佳性能處理高吞吐量數(shù)據(jù)流。
Materialize旨在橫向擴(kuò)展,跨多個(gè)節(jié)點(diǎn)或集群分布處理任務(wù),以并發(fā)管理大量數(shù)據(jù)流。這種特性還增強(qiáng)了容錯(cuò)性和彈性,即使面對(duì)節(jié)點(diǎn)故障,也允許系統(tǒng)無(wú)縫運(yùn)行。
作為一個(gè)開源的流式數(shù)據(jù)倉(cāng)庫(kù),Materialize提供了透明度和靈活性。它從頭開始構(gòu)建,以支持實(shí)時(shí)、增量數(shù)據(jù)處理,而不是作為現(xiàn)有系統(tǒng)的附加組件。
它允許開發(fā)人員通過(guò)標(biāo)準(zhǔn)SQL查詢表達(dá)復(fù)雜的流處理邏輯,從而顯著地簡(jiǎn)化了流處理應(yīng)用程序的開發(fā)。實(shí)際上,開發(fā)人員可以直接在系統(tǒng)中持久化保存數(shù)據(jù),而無(wú)需將結(jié)果移動(dòng)到外部數(shù)據(jù)庫(kù)進(jìn)行存儲(chǔ)和查詢服務(wù)。
Materialize的易用性描述如下:
- 簡(jiǎn)單易學(xué):它使用PostgreSQL兼容的SQL,使開發(fā)人員能夠利用他們現(xiàn)有的SQL技能進(jìn)行實(shí)時(shí)流處理,而且沒(méi)有陡峭的學(xué)習(xí)曲線。
- 易于開發(fā):Materialize允許用戶使用熟悉的SQL語(yǔ)法編寫復(fù)雜的流式查詢。該系統(tǒng)自動(dòng)維護(hù)物化視圖和處理流處理底層復(fù)雜性的能力意味著開發(fā)人員可以專注于業(yè)務(wù)邏輯,而不是復(fù)雜的數(shù)據(jù)流管理,從而簡(jiǎn)化開發(fā)階段。
- 易于集成:通過(guò)支持包括Kafka和PostgreSQL在內(nèi)的各種數(shù)據(jù)源和接收器,Materialize無(wú)縫集成到不同的生態(tài)系統(tǒng)中,使與現(xiàn)有基礎(chǔ)設(shè)施的集成變得容易。
最后,Materialize提供了強(qiáng)大的一致性和正確性保證,即使在并發(fā)數(shù)據(jù)更新的情況下也能確保查詢結(jié)果的準(zhǔn)確性和可靠性。這使得它成為需要及時(shí)洞察和實(shí)時(shí)分析的應(yīng)用程序的理想解決方案。
Materialize提供實(shí)時(shí)、增量處理流數(shù)據(jù)的能力,加上其易用性和強(qiáng)大的性能,使其成為現(xiàn)代數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序的強(qiáng)大工具。
結(jié)論
本文分析了處理數(shù)據(jù)流時(shí)對(duì)流式數(shù)據(jù)庫(kù)的需求,并將其與傳統(tǒng)數(shù)據(jù)庫(kù)進(jìn)行了比較。
雖然在現(xiàn)有軟件環(huán)境中實(shí)現(xiàn)流式數(shù)據(jù)庫(kù)帶來(lái)了一些挑戰(zhàn),但RisingWave和Materialize等可用的商業(yè)解決方案可以克服這些挑戰(zhàn)。
原文標(biāo)題:Exploring the Dynamics of Streaming Databases,作者:Federico Trotta