探索流式數(shù)據(jù)庫的動態(tài)特性
譯文譯者 | 李睿
審校 | 重樓
本文對流式數(shù)據(jù)庫進行探討,因為它是數(shù)據(jù)流處理系統(tǒng)的核心組件。如果需要更多選擇,還將提供一些商業(yè)上可用的解決方案。

流式數(shù)據(jù)庫的基礎(chǔ)知識
流處理的本質(zhì)是將數(shù)據(jù)視為連續(xù)不斷的流進行管理,不能依賴傳統(tǒng)的數(shù)據(jù)庫來存儲數(shù)據(jù)。我們將流式數(shù)據(jù)庫定義為用于存儲、處理和增強數(shù)據(jù)流的實時數(shù)據(jù)存儲庫。因此,流式數(shù)據(jù)庫的基本特征是它們管理動態(tài)數(shù)據(jù)的能力,即能夠?qū)崟r捕獲和處理事件,確保數(shù)據(jù)的即時性和有效性。
流式數(shù)據(jù)庫
與存儲靜態(tài)數(shù)據(jù)集并需要定期更新來處理它們的傳統(tǒng)數(shù)據(jù)庫不同,流式數(shù)據(jù)庫采用事件驅(qū)動模型,在生成數(shù)據(jù)時對其作出反應。這使組織能夠從實時數(shù)據(jù)中提取可操作的見解,從而實現(xiàn)及時決策和對動態(tài)趨勢的響應。
流式數(shù)據(jù)庫和傳統(tǒng)數(shù)據(jù)庫之間的一個關(guān)鍵區(qū)別在于它們對時間的處理方式。在流式數(shù)據(jù)庫中,時間是一個關(guān)鍵維度,因為數(shù)據(jù)不僅僅是靜態(tài)記錄,而且與時間屬性相關(guān)聯(lián)。
流式數(shù)據(jù)庫中的延遲
具體來說,可以定義以下內(nèi)容:
- 事件時間:是一個事件或數(shù)據(jù)點在現(xiàn)實世界中實際發(fā)生的時間。例如,如果正在處理來自測量溫度的設(shè)備的傳感器數(shù)據(jù)流,則事件時間將是傳感器記錄每次溫度測量的實際時間。
- 處理時間:是在流處理系統(tǒng)中處理事件的時間。例如,如果在接收到溫度測量值之后處理溫度測量值有延遲或滯后,則處理時間將晚于事件時間。
這種時間感知能力有助于創(chuàng)建基于時間的聚合,使企業(yè)能夠正確理解時間間隔內(nèi)的趨勢和模式,并處理無序事件。
事實上,由于網(wǎng)絡(luò)延遲、不同的處理速度或其他因素等原因,事件并不總是按照它們在現(xiàn)實世界中發(fā)生的順序到達處理系統(tǒng)。
因此,通過將事件時間合并到分析中,流式數(shù)據(jù)庫可以根據(jù)事件在現(xiàn)實世界中的實際發(fā)生情況對事件進行重新排序。這意味著,即使它們無序到達,與每個事件相關(guān)聯(lián)的時間戳可以用于將事件排列在正確的時間序列中。這確保了分析計算和聚合反映事件的時間現(xiàn)實,提供了對趨勢和模式的準確見解。
實現(xiàn)流式數(shù)據(jù)庫面臨的挑戰(zhàn)
雖然流式數(shù)據(jù)庫為實時數(shù)據(jù)處理提供了一種革命性的方法,但它們的實現(xiàn)可能具有挑戰(zhàn)性。
以下是實現(xiàn)流式數(shù)據(jù)庫面臨的挑戰(zhàn):
1.流式數(shù)據(jù)的龐大數(shù)量和速度
實時數(shù)據(jù)流以高速產(chǎn)生大量新數(shù)據(jù),特別是在物聯(lián)網(wǎng)和金融市場等應用中常見的高頻數(shù)據(jù)流。因此,流式數(shù)據(jù)庫需要在不犧牲性能的情況下有效地處理連續(xù)的數(shù)據(jù)流。
2.確保實時數(shù)據(jù)的一致性
在傳統(tǒng)的批處理中,一致性是通過定期更新來實現(xiàn)的。在流式數(shù)據(jù)庫中,實時確保分布式系統(tǒng)之間的一致性卻帶來了更大的復雜性。事件時間處理、水印和冪等運算等技術(shù)被用來解決這些挑戰(zhàn),但需要仔細實現(xiàn)。
3.安全和隱私問題
流數(shù)據(jù)通常包含敏感信息,對其進行實時處理需要強大的安全措施。加密、身份驗證和授權(quán)機制必須集成到流式數(shù)據(jù)庫架構(gòu)中,以保護數(shù)據(jù)免受未經(jīng)授權(quán)的訪問和潛在的破壞。此外,遵從數(shù)據(jù)保護法規(guī)又增加了一層復雜性。
4.工具和集成
流式數(shù)據(jù)源的多樣性和可用工具的多樣性需要深思熟慮的集成策略。與現(xiàn)有系統(tǒng)的兼容性、易于集成以及支持不同數(shù)據(jù)格式和協(xié)議的能力成為關(guān)鍵考慮因素。
5.對技術(shù)人員的需求
由于流式數(shù)據(jù)庫本質(zhì)上與實時分析有關(guān),因此必須考慮到對開發(fā)、管理和優(yōu)化這些系統(tǒng)的熟練人員的需求。該領(lǐng)域?qū)I(yè)知識的缺乏可能會延遲流式數(shù)據(jù)庫的廣泛采用,組織必須在培訓和開發(fā)方面進行投資,以彌補這一差距。
流式數(shù)據(jù)庫的架構(gòu)
流式數(shù)據(jù)庫的架構(gòu)是為了有效地處理實時數(shù)據(jù)流的復雜性而精心設(shè)計的。
該架構(gòu)的核心體現(xiàn)了分布式計算的原則,支持對流式數(shù)據(jù)動態(tài)特性的可擴展性和響應性。
流式數(shù)據(jù)庫架構(gòu)的一個基本方面是能夠容納連續(xù)的、高速的數(shù)據(jù)流。這是通過數(shù)據(jù)攝取、處理和存儲組件的組合實現(xiàn)的。

數(shù)據(jù)攝取層負責實時收集和接受來自各種來源的數(shù)據(jù)。這可能涉及到外部系統(tǒng)、消息隊列或直接API集成的連接器。
數(shù)據(jù)一旦被攝取,就會在流處理層中進行處理,在該層中對數(shù)據(jù)進行近乎實時的分析、轉(zhuǎn)換和豐富。這一層通常使用流處理引擎或框架,這些引擎或框架支持在流數(shù)據(jù)上執(zhí)行復雜的計算,從而允許推導有意義的見解。
流式數(shù)據(jù)庫中的事件
由于它們處理實時數(shù)據(jù),流式數(shù)據(jù)庫架構(gòu)的一個標志是事件驅(qū)動的范式。實際上,每個數(shù)據(jù)點都被視為一個事件,系統(tǒng)實時地對這些事件作出反應。這種時間感知能力是基于時間的聚合和處理無序事件的基礎(chǔ),有助于對數(shù)據(jù)的時間動態(tài)進行更細致的理解。
流式數(shù)據(jù)庫中的模式設(shè)計也是動態(tài)和靈活的,允許數(shù)據(jù)結(jié)構(gòu)隨時間的推移而變化。實際上,與具有嚴格模式的傳統(tǒng)數(shù)據(jù)庫不同,流式數(shù)據(jù)庫適應流數(shù)據(jù)的流動性,其中模式可能隨著新字段或?qū)傩缘囊攵淖儯哼@種靈活性允許處理不同的數(shù)據(jù)格式并滿足流應用程序不斷變化的需求。
流式數(shù)據(jù)庫示例
現(xiàn)在介紹幾個商業(yè)上可用的流式數(shù)據(jù)庫示例,以突出它們的功能和應用領(lǐng)域。
1.RisingWave

RisingWave是一個分布式SQL流式數(shù)據(jù)庫,可以實現(xiàn)簡單、高效、可靠的流數(shù)據(jù)處理。它消耗流數(shù)據(jù),在新數(shù)據(jù)進入時執(zhí)行增量計算,并動態(tài)更新結(jié)果。
由于RisingWave是一個分布式數(shù)據(jù)庫,因此它采用并行化來滿足可擴展性的需求。實際上,通過將處理任務分布到多個節(jié)點或集群,它可以有效地并發(fā)處理大量傳入數(shù)據(jù)流。這種分布式特性還確保了容錯性和彈性,因為即使在節(jié)點出現(xiàn)故障的情況下,系統(tǒng)也可以繼續(xù)無縫運行。
另外,RisingWave數(shù)據(jù)庫是一個為云計算設(shè)計的開源分布式SQL流式數(shù)據(jù)庫。特別是,它是作為一個分布式流式數(shù)據(jù)庫從頭開始設(shè)計的,而不是基于另一個系統(tǒng)的臨時實現(xiàn)。

它還允許開發(fā)人員通過級聯(lián)物化視圖來表達復雜的流處理邏輯,從而降低了構(gòu)建流處理應用程序的復雜性。此外,它允許用戶直接在系統(tǒng)內(nèi)持久保存數(shù)據(jù),而不需要將結(jié)果交付給外部數(shù)據(jù)庫進行存儲和查詢服務。

RisingWave數(shù)據(jù)庫易用性的描述如下:
- 簡單易學:它使用PostgreSQL風格的SQL,使用戶能夠像使用PostgreSQL數(shù)據(jù)庫一樣深入到流處理中。
- 易于開發(fā):由于它作為關(guān)系數(shù)據(jù)庫運行,開發(fā)人員可以將流處理邏輯分解為更小的、可管理的、堆疊的物化視圖,而不是處理大量的計算程序。
- 易于集成:通過與各種云計算系統(tǒng)和PostgreSQL生態(tài)系統(tǒng)的集成,RisingWave擁有豐富而擴展的生態(tài)系統(tǒng),可以直接集成到現(xiàn)有的基礎(chǔ)設(shè)施中。
最后,Materialize提供了強大的一致性和正確性保證,即使在并發(fā)數(shù)據(jù)更新的情況下也能確保查詢結(jié)果準確可靠。這使得它成為需要及時洞察和實時分析的應用程序的理想解決方案。
Materialize提供實時、增量處理流數(shù)據(jù)的能力,加上其易用性和強大的性能,使其成為現(xiàn)代數(shù)據(jù)驅(qū)動應用程序的強大工具。
最后,RisingWave提供了RisingWave云:這是一種托管服務,可以創(chuàng)建一個新的云托管的RisingWave集群,并在幾分鐘內(nèi)開始進行流處理。

2.Materialize

Materialize是一種高性能、基于SQL的流式數(shù)據(jù)倉庫,旨在提供實時、增量的數(shù)據(jù)處理,并強調(diào)簡單性、效率和可靠性。其架構(gòu)使用戶能夠以最小的延遲在流數(shù)據(jù)之上構(gòu)建復雜的增量數(shù)據(jù)轉(zhuǎn)換和查詢。
由于它是為實時數(shù)據(jù)處理而構(gòu)建的,Materialize利用高效的增量計算來確保低延遲的更新和查詢。通過只處理數(shù)據(jù)中的更改,而不是重新處理整個數(shù)據(jù)集,它能夠以最佳性能處理高吞吐量數(shù)據(jù)流。
Materialize旨在橫向擴展,跨多個節(jié)點或集群分布處理任務,以并發(fā)管理大量數(shù)據(jù)流。這種特性還增強了容錯性和彈性,即使面對節(jié)點故障,也允許系統(tǒng)無縫運行。
作為一個開源的流式數(shù)據(jù)倉庫,Materialize提供了透明度和靈活性。它從頭開始構(gòu)建,以支持實時、增量數(shù)據(jù)處理,而不是作為現(xiàn)有系統(tǒng)的附加組件。
它允許開發(fā)人員通過標準SQL查詢表達復雜的流處理邏輯,從而顯著地簡化了流處理應用程序的開發(fā)。實際上,開發(fā)人員可以直接在系統(tǒng)中持久化保存數(shù)據(jù),而無需將結(jié)果移動到外部數(shù)據(jù)庫進行存儲和查詢服務。

Materialize的易用性描述如下:
- 簡單易學:它使用PostgreSQL兼容的SQL,使開發(fā)人員能夠利用他們現(xiàn)有的SQL技能進行實時流處理,而且沒有陡峭的學習曲線。
- 易于開發(fā):Materialize允許用戶使用熟悉的SQL語法編寫復雜的流式查詢。該系統(tǒng)自動維護物化視圖和處理流處理底層復雜性的能力意味著開發(fā)人員可以專注于業(yè)務邏輯,而不是復雜的數(shù)據(jù)流管理,從而簡化開發(fā)階段。
- 易于集成:通過支持包括Kafka和PostgreSQL在內(nèi)的各種數(shù)據(jù)源和接收器,Materialize無縫集成到不同的生態(tài)系統(tǒng)中,使與現(xiàn)有基礎(chǔ)設(shè)施的集成變得容易。

最后,Materialize提供了強大的一致性和正確性保證,即使在并發(fā)數(shù)據(jù)更新的情況下也能確保查詢結(jié)果的準確性和可靠性。這使得它成為需要及時洞察和實時分析的應用程序的理想解決方案。
Materialize提供實時、增量處理流數(shù)據(jù)的能力,加上其易用性和強大的性能,使其成為現(xiàn)代數(shù)據(jù)驅(qū)動應用程序的強大工具。
結(jié)論
本文分析了處理數(shù)據(jù)流時對流式數(shù)據(jù)庫的需求,并將其與傳統(tǒng)數(shù)據(jù)庫進行了比較。
雖然在現(xiàn)有軟件環(huán)境中實現(xiàn)流式數(shù)據(jù)庫帶來了一些挑戰(zhàn),但RisingWave和Materialize等可用的商業(yè)解決方案可以克服這些挑戰(zhàn)。
原文標題:Exploring the Dynamics of Streaming Databases,作者:Federico Trotta



























