天天看點

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

點選上方藍字每天學習資料庫

在MemSQL使用中,我們發現人們對時序資料庫的場景非常感興趣。當遇到以下情況時尤其如此:(1)高效率的事務擷取,(2)低延遲查詢和(3)高并發查詢率。

在下文中,我将展示如何使用MemSQL用作一個強大的時序資料庫,并通過簡單的查詢和使用者定義的函數來說明這一點,這些函數将展示如何進行時間序列 - 頻率轉換,平滑等操作。

我還将介紹如何快速加載時序資料點,并且沒有規模限制。

用SQL操作時間序列

與大多數時序資料庫不同,MemSQL支援标準SQL,包括内部和外部聯接,子查詢,通用表表達式(CTE),視圖,用于日期和時間操作的豐富标量函數,分組,聚合和視窗函數。我們支援所有常見的SQL資料類型,包括具有微秒精度的datetime(6)類型,該類型非常适合作為時間序列的時間戳。

在金融交易系統中,一種常見的時間序列分析方法是操作股票價格。下面是一個使用标準SQL進行這種計算的簡單示例。我們使用一個包含多個股票時間序列的表格,并為每個股票生成高,低,開盤和收盤:

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

此查詢使用标準SQL 視窗函數為表中的每個符号生成高,低,打開和關閉值,假設“ticks”包含最近交易日的資料。

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

類似的查詢可用于建立“燭台圖表”,這是一種流行的金融時間序列報表樣式,如下圖所示,可顯示連續時間間隔内證券的開盤價,最高價,最低價和收盤價:

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

例如,該查詢生成一個表,該表可以在三分鐘的時間間隔内直接轉換為燭台圖表:

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

結果:

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

平滑是時間序列管理的另一個常見需求。這個查詢為股票“ABC”生成一個平滑的價格序列,平均最後三個記錄的價格:

結果:

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

使用可擴充性來增加MemSQL的時間序列功能

MemSQL支援使用者定義的标量函數(UDF),聚合函數和存儲過程(MPSQL語言)的可擴充性。MemSQL将UDF和存儲過程編譯為機器代碼,以獲得高性能。實際上,我使用了可擴充性來建立上一節中用作UDF 的time_bucket()函數(如下面的附錄所示); 這為其他特定時間序列産品中的類似功能提供了相同的功能。您可以很容易地建立一個函數或表達式來按時間間隔存儲,例如秒、分鐘、小時或天。時間序列資料的一個常見需求是執行插值。

例如,假設有一個時間序列,其中随機間隔的點平均間隔為30秒。可能有幾分鐘沒有資料點。是以,如果您将原始(不規則)時間序列資料轉換為具有一分鐘點的正常時間序列,則可能存在間隙。如果要為沒有間隙的繪圖提供輸出,則需要從間隙前後的值中插入間隙的值。在MemSQL中實作存儲過程非常簡單,方法是擷取一個查詢結果,并輸出一個行集,其中的空格插入到一個臨時表中。

然後可以使用ECHO指令将其發送回用戶端應用程式。此外,MemSQL支援使用者定義的聚合函數,這些函數可用于實作有用的時間序列操作,例如擷取序列中第一個和最後一個值的簡寫,而無需特定的視窗函數。根據一個名為FIRST()的使用者定義的聚合函數(UDAF),考慮此查詢以在每三分鐘的交易中獲得股票ABC的第一個值:

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

結果:

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

FIRST()和類似的LAST() UDAF的實作在下面的補充材料部分中給出。

時間序列壓縮和生命周期管理

MemSQL擅長處理時間序列事件的突發插入流量和節省空間很重要的曆史時間序列資訊。對于突發插入流量,您可以使用MemSQL行存儲表來儲存時間序列事件。對于較大和較長生命周期的時間序列事件集或已經老化的較老的時間序列資料集(是以不再更新它們),MemSQLcolumnstore是一種很好的格式,因為它可以非常有效地壓縮時間序列資料。此外,它儲存在磁盤上,是以主記憶體大小不限制您可以存儲的資料量。

可擴充的時間序列攝取

建構時間序列應用程式時,資料可以有許多來源,包括應用程式,檔案系統,S3,HDFS,Azure Blob商店和Kafka隊列。MemSQL可以從所有這些來源快速地擷取資料。MemSQL Pipelines專門用于快速輕松地從這些源加載資料流,無需過程編碼即可在MemSQL中建立快速的事件流。MemSQL可以以驚人的資料速率提取資料。在最近的一次測試中,我使用了一個雙節點MemSQL叢集,每個節點在Intel Xeon Platinum 28核系統上運作,每秒直接從應用程式插入2,850,500個事件,具有完整的事務完整性和持久性。可以使用直接加載或Kafka管道獲得更好的速率。如果你必須擴充更高,隻需添加更多節點 - 沒有實際限制。

當通用MemSQL适合時間序列時

我們已經看到,時間序列資料管理市場已經分化為時間序列專用産品,使用它們自己的專用語言;以及可以與使用SQL的标準報告和業務智能工具互操作的擴充SQL系統。MemSQL屬于第二類。MemSQL适用于需要快速查詢,低延遲查詢和高并發性的時間序列應用程式,沒有擴充限制,并且受益于SQL語言功能和SQL工具連接配接。

許多特定于時間序列的産品在資料管理方面都有缺陷。有些應用程式缺乏擴充功能,限制了它們可以處理的問題的大小,或者迫使應用程式開發人員在代碼中建構複雜的分片邏輯,以便在多個執行個體之間分割資料,這将耗費寶貴的人力資源,而這些人力資源可以更好地投入到應用程式業務邏輯中。其他系統的解釋查詢處理器無法跟上我們這樣的最新查詢執行實作。有些缺少SQL資料庫常見的事務處理完整性功能。MemSQL讓時間序列應用程式開發人員充滿信心地前進,他們知道自己不會遇到規模瓶頸,并且可以使用所有熟悉的工具——任何可以連接配接到SQL資料庫的工具。

總結

MemSQL是一個用于管理時間序列資料的強大平台。它支援快速友善地加載事件流的能力,并且可以無限擴充。它支援完整的SQL,可以使用SQL 92的所有标準功能,以及添加的視窗函數擴充來實作複雜的查詢。它支援許多開發人員對各種應用程式(包括時間序列)所需的事務,高速并發更新和查詢以及高可用性技術。而且,您最喜歡的SQL相容工具可以連接配接到MemSQL,這使得MemSQL成為時間序列的強大平台。

版權聲明:本文由騰訊雲資料庫産品團隊整理,頁面原始内容來自于db weekly英文官網,若轉載請注明出處。翻譯目的在于傳遞更多全球最新資料庫領域相關資訊,并不意味着騰訊雲資料庫産品團隊贊同其觀點或證明其内容的真實性。如果其他媒體、網站或其他任何形式的法律實體和個人使用,必須經過著作權人合法書面授權并自負全部法律責任。不得擅自使用騰訊雲資料庫團隊的名義進行轉載,或盜用騰訊雲資料庫團隊名義釋出資訊。

往期推薦

《了解資料庫分片(Database Sharding)》

《圖資料庫項目DGraph的前世今生》

《MySQL性能基準測試對比:5.7 VS 8.0》

《前沿觀察 | 如何選擇合适的資料庫代理》

《谷歌新出SageDB:一個自學成才的資料庫》

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

免費試用

包括雲資料庫MySQL在内的40+款熱門雲産品,實名認證的企業使用者可免費試用!1000M記憶體50G資料盤的MySQL可免費體驗30天,點選左下角“閱讀原文”立即領取~

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

↓↓點“閱讀原文”免費試用

好文和朋友一起看!

var first_sceen__time = (+new Date());if ("" == 1 && document.getElementById('js_content')) { document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); } (function(){ if (navigator.userAgent.indexOf("WindowsWechat") != -1){ var link = document.createElement('link'); var head = document.getElementsByTagName('head')[0]; link.rel = 'stylesheet'; link.type = 'text/css'; link.href = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/winwx45ba31.css"; head.appendChild(link); } })();

Eric Hanson

贊賞

長按二維碼向我轉賬

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

受蘋果公司新規定影響,微信 iOS 版的贊賞功能被關閉,可通過二維碼轉賬支援公衆号。

文章轉載自公衆号

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

騰訊技術工程

閱讀原文

閱讀

分享 在看

已同步到看一看

取消 發送

我知道了

朋友會在“發現-看一看”看到你“在看”的内容

确定

前沿觀察 | 股市這麼火,後面跑的是什麼資料庫?

已同步到看一看寫下你的想法

最多200字,目前共字 發送

已發送

朋友将在看一看看到

确定

寫下你的想法...

取消

釋出到看一看

确定

最多200字,目前共字

發送中

微信掃一掃

關注該公衆号

微信掃一掃

使用小程式

即将打開""小程式

取消 打開