国产性爱无码高清视频_台湾av毛片不卡免费_亚洲av美女在线播放啊_久久国产乱子伦免费精品

?
徐州北大青鳥

什么是流式SQL,它有什么用?

時間:2022-02-21 17:10來源:未知 作者:代碼如詩 點擊:
流式SQL是指采用用于編寫數(shù)據(jù)庫查詢的相同的聲明式SQL,而在快速變化的數(shù)據(jù)流上運行。 SQL的 聲明 性質(zhì)在解決第二點方面發(fā)揮了重要作用,因為它允許用戶專注于他們想要什么,而讓
流式SQL是指采用用于編寫數(shù)據(jù)庫查詢的相同的聲明式SQL,而在快速變化的數(shù)據(jù)流上運行。
 
SQL的 "聲明 "性質(zhì)在解決第二點方面發(fā)揮了重要作用,因為它允許用戶專注于他們想要什么,而讓底層引擎擔心如何完成。
 
在現(xiàn)實世界中,流式SQL被用來。
 
啟用新的內(nèi)部和面向客戶的洞察力、自動化和應(yīng)用程序
 
通過為關(guān)鍵指標提供單一的最新真相來源來提高商業(yè)智能數(shù)據(jù)的價值
 
通過取代代碼進行數(shù)據(jù)協(xié)調(diào)和轉(zhuǎn)換來簡化微服務(wù)
 
◆ 什么是流式SQL?
讓我們先具體說明一下我們說的流處理和SQL是什么意思。
 
流(事件流)
 
流指的是像Kafka、Kinesis或Pulsar這樣的消息中介,它們將數(shù)據(jù)作為事件或消息的連續(xù)流來處理。
 
事件流處理一切,從交易到用戶在網(wǎng)站或移動應(yīng)用程序上的行動、物聯(lián)網(wǎng)傳感器數(shù)據(jù)、服務(wù)器的指標,甚至是傳統(tǒng)數(shù)據(jù)庫上的活動,都通過 change data capture.
 
SQL
 
在流的背景下,SQL為用戶提供了一種聲明性語言,用于。
 
創(chuàng)建視圖,將流中的原始數(shù)據(jù)連接、過濾和分組為更有用的輸出(CREATE MATERIALIZED VIEW)
 
從源和視圖中選擇數(shù)據(jù)(SELECT)
 
注意:CREATE MATERIALIZED VIEW命令是流式SQL的核心概念。它來自于databases來的,在那里它被用來提前計算視圖,以防數(shù)據(jù)發(fā)生變化。在流媒體中,數(shù)據(jù)一直在變化,所以查詢在維護成物化視圖時往往更有用。
 
其他常見的SQL動詞如INSERT、UPDATE和DELETE在流式SQL中也有作用,但在這篇文章中,我們將重點討論從流中讀取、連接/過濾/轉(zhuǎn)換這些流的核心概念,并使其輸出可查詢或 寫到一個新的流。
 
◆ 流上的SQL和數(shù)據(jù)庫之間的區(qū)別
一旦你嘗試在流上使用SQL,一些關(guān)鍵的區(qū)別就會變得很明顯。
 
時間點查詢與連續(xù)查詢
 
在傳統(tǒng)數(shù)據(jù)庫上運行SQL查詢,會從一個時間點上返回一組靜態(tài)的結(jié)果。
 
以這個疑問為例:
 
SELECT SUM(amount) as total_amount FROM invoices;
 
當你運行它時,數(shù)據(jù)庫引擎會掃描在查詢時存在的所有的Invoices,并返回其金額之和。
 
使用流式SQL,你可以運行上面的確切查詢,并得到一個時間點的答案。但是你查詢的是快速變化的數(shù)據(jù)流,一旦你得到了結(jié)果,它們可能就已經(jīng)過時了。在許多情況下,一個持續(xù)更新的查詢(物化視圖)在以下幾個方面更有用,我們將在下面描述。
 
要把上面的查詢變成一個物化的視圖,你要寫。
 
CREATE MATERIALIZED VIEW invoice_summary AS
 
SELECT SUM(amount) as total_amount FROM invoices;
 
當你第一次創(chuàng)建時,SQL引擎將處理它所能訪問的整個Invoice事件歷史,直到現(xiàn)在,然后隨著新的發(fā)票事件的到來繼續(xù)更新。
 
◆ 響應(yīng)時間與滯后
傳統(tǒng)的數(shù)據(jù)庫有查詢響應(yīng)時間的概念:你運行一個查詢,在引擎計算結(jié)果的過程中會經(jīng)過一些時間,然后你得到響應(yīng)。
 
在流處理中,最初的響應(yīng)時間只是在你第一次物化一個視圖時的一個因素。但是,如果我們的輸入事件突然激增,在流結(jié)果中一定會有某種時間上的懲罰。這種懲罰就是時間滯后:輸出比輸入落后多少時間?
 
就像傳統(tǒng)數(shù)據(jù)庫的響應(yīng)時間一樣,大多數(shù)終端用戶不需要考慮流式系統(tǒng)的時滯問題,但知道它的存在有助于以避免問題的方式編寫和使用流式SQL。
 
◆ 不同的行動為底層引擎創(chuàng)造工作
在讀取方面,傳統(tǒng)的數(shù)據(jù)庫引擎一直在閑置,直到它收到一個查詢,然后它計劃和優(yōu)化它,并開始工作提供結(jié)果。一旦它回復(fù)了結(jié)果,它就會再次閑置,直到它收到另一個查詢。發(fā)送查詢是為引擎創(chuàng)造工作。
 
如果你回到上面的物化視圖,來自流的新數(shù)據(jù)為引擎創(chuàng)造了工作。在Materialize中,這種方法是通過增量計算實現(xiàn)的:更新視圖所做的工作與進來的數(shù)據(jù)成比例,而不是與查詢的復(fù)雜性成比例。我們不需要對數(shù)據(jù)進行全面的重新掃描來更新結(jié)果。
 
這種模式的轉(zhuǎn)變使得流式SQL最適合于反復(fù)詢問同一問題的查詢(如儀表盤、報告、自動化、大多數(shù)應(yīng)用程序代碼),而不是臨時性的查詢。
 
◆ 為什么流式SQL是有用的?
1.數(shù)據(jù)最初出現(xiàn)時往往是最有價值的
 
這有兩個原因,一個很明顯,一個不太明顯。
 
更快的數(shù)據(jù)=更快的決策--股票市場是這個想法發(fā)揮到極致的一個明顯例子。
 
但它也適用于SaaS企業(yè),像市場、旅游、活動等需要對費率和庫存做出快速決策的垂直行業(yè),以及零售和物流業(yè),因為快速決策可以減少低效率,等等。
 
數(shù)據(jù)離它的源頭越近,被誤解的機會就越少--數(shù)據(jù)從創(chuàng)建的地方到使用的地方,每一步都會增加出錯的可能性,即終端用戶(人或機器)認為數(shù)據(jù)代表的東西并不存在。時間在其中起到了作用,它迫使人們圍繞操作順序和工作的一致性進行協(xié)調(diào)。在這種情況下,切換到流數(shù)據(jù)并不是因為它更快,而是因為你不再需要考慮時間問題。
 
◆ 流式SQL的用例
今天,任何已經(jīng)在使用像Kafka這樣的消息代理的人都可以開始使用流式SQL,而不需要付出很大努力。在未來,隨著CDC軟件的成熟,這一標準將擴展到 "任何擁有數(shù)據(jù)庫的人"。"以下是一些使用流式SQL的例子。
 
商業(yè)智能和分析
 
當決定 "什么是賦予我們的內(nèi)部團隊從數(shù)據(jù)中做出智能決策的最佳方式 "時,流式SQL是一個需要考慮的選項,它的權(quán)衡使它對某些情況比其他情況更好。
 
在許多情況下,用流式SQL完成的主源數(shù)據(jù)的物化視圖是一個更簡單的 data pipeline.除了實時數(shù)據(jù)的好處外,企業(yè)使用這種方法還可以回避以下問題。
 
批量處理中的時間間隔和操作順序的協(xié)調(diào)
 
在下一個批次運行前無法修復(fù)或測試的錯誤所導(dǎo)致的長時間停工
 
儀表盤加載緩慢
 
緩存、反規(guī)范化造成的不一致問題
 
微服務(wù)
 
流式SQL被用來取代在微服務(wù)中做復(fù)雜數(shù)據(jù)協(xié)調(diào)和轉(zhuǎn)換的代碼。
 
像kafka這樣的事件流通常已經(jīng)是微服務(wù)架構(gòu)中的第一等公民。工程師們經(jīng)常發(fā)現(xiàn)自己在構(gòu)建和維護復(fù)雜的應(yīng)用程序,從kafka中消費。例如:從事件日志中讀取的應(yīng)用程序,以產(chǎn)生對SaaS應(yīng)用程序的API使用的洞察力和測量。
 
微服務(wù)中任何看起來像查詢的組件都可能被流式SQL所取代。
 
實時應(yīng)用
 
如果你的應(yīng)用程序的價值取決于你實時交付更新和數(shù)據(jù)的能力,流式SQL可能是建立一個昂貴或復(fù)雜的多組件堆棧的替代方案。
 
新的能力
 
面向用戶的實時分析--以前,只有像LinkedIn和Google這樣的技術(shù)巨頭才有規(guī)模和工程團隊來建立面向用戶的實時分析(如LinkedIn的 "誰瀏覽了你的個人資料 "頁面或Google Analytics的實時儀表板)。通過降低復(fù)雜性,流式SQL向更多的公司開放了神奇的實時用戶分析功能。
 
業(yè)務(wù)自動化 - 一旦你有了實時儀表盤的流式SQL,一個自然的進展就是開始在相同的數(shù)據(jù)上做出自動化的決定。(例如。如果你的電子商務(wù)網(wǎng)站從某一特定來源獲得的流量激增,就在主頁上增加一個促銷活動)。
 
◆ 總結(jié)
Materialize提供了一個流式SQL實現(xiàn),它在兩個重要方面是獨一無二的。
 
在Materialize中,你可以用與postgres兼容的SQL編寫查詢。我們認為值得花費額外的精力來構(gòu)建這個系統(tǒng),因為只有在這種級別的SQL兼容中,你才能獲得與現(xiàn)有工具集成的好處,并消除用戶對高級流處理概念的負擔。
 
查詢引擎使用增量計算(Differential Dataflow)來更有效地維護物化視圖,因為新的數(shù)據(jù)進來了。
試聽課
(責任編輯:代碼如詩)
------分隔線----------------------------
欄目列表
推薦內(nèi)容