用時序數據庫作爲工業物聯網數據後臺的7大優勢

工業物聯網的數據特點和痛點

工業物聯網的數據採集有着頻率高、設備多、維度高的特點,數據量非常大,對系統的吞吐量有很高的要求。同時工業物聯網往往需要系統能夠實時處理數據,對系統預警,監控,甚至反控。不少系統還需要提供圖形化終端供操作工人實時監控設備的運行,這給整個系統帶來了更大的壓力。對於採集到的海量歷史數據,通常還需要進行離線的建模和分析。因此,工業物聯網的數據平臺有着非常苛刻的要求,既要有非常高的吞吐量,又要有較低的延時;既要能夠實時處理流數據,又要能夠處理海量的歷史數據;既要滿足簡單的點查詢的要求,又要滿足批量數據複雜分析的要求。

傳統的事務型數據庫,比如SQL Server、Oracle和MySQL,無法滿足高吞吐量的數據寫入和海量數據的分析。即使數據量較小,能滿足數據寫入的要求,也不能同時響應實時計算的請求。

Hadoop生態提供了消息引擎、實時數據寫入、流數據計算、離線數據倉庫、離線數據計算等多個部件。這些大數據系統組合起來,可以解決工業物聯網的數據平臺問題。但這樣的方案過於龐大和臃腫,實施和運維的成本很高。

數據是工業物聯網的血液。但是國內絕大部分的MES系統,以及所謂的智慧工廠,對生產過程中產生的海量的工藝數據,保存不會超過三個月,更不用說進一步對積累的數據研究利用了。數據的實時採集、計算和反控則對工業物聯網背後的數據平臺的實時計算能力提出了很高的要求。傳統的關係型數據庫,大部分開源的NoSQL,以及新一代的NewSQL離工業物聯網數據平臺的這兩個苛求要求還有較遠的距離。

因此,時序數據庫應運而生。以DolphinDB爲例,用時序數據庫作爲工業物聯網數據後臺時具有以下7大天然優勢。

1. 一站式數據解決方案

工業物聯網不僅要採集機器產生的工藝數據,還要進行實時計算和預警,並把結果展示給操作員或直接反饋給機器。同時需要將這些原始的工藝數據保存到數據庫,供在線或離線查詢。積累大量歷史數據後,又可以進行更爲複雜的大數據挖掘。而這一切都可以在DolphinDB一個系統內完成。下圖展示了 DolphinDB database 的數據處理流程。

a459f1c3e82dfe856e70cf9a7194d66b.png

對於系統集成商或企業來說,在一套系統上進行開發和維護,比起在多套系統上集成、開發和維護,無論是開發成本,維護成本,還是硬件的採購成本都會低得多。

2. 輕量級跨平臺部署

工業物聯網平臺通常非常複雜。既有廉價的工控機(低配的PC或嵌入式系統),也有服務器或服務器集羣。既有邊緣計算,也有本地平臺部署和雲端平臺部署。涉及的操作系統既有Linux,也有Windows。市場上不少開源或商用的時序數據庫,以及相關的大數據生態,部件衆多複雜,體積龐大,對軟硬件的要求較高。使用一套系統進行跨平臺部署,難度很大。

DolphinDB是一個非常輕量級的系統,用GNU C++開發,系統大小僅20餘兆,無任何依賴,可以部署在上述任何平臺上。這大大節約了系統集成商的開發和維護成本。

3. 安全可控

工業物聯網平臺的數據及系統的安全可控對一個企業,乃至對國家都至關重要。DolphinDB是一個從零開始,完全自主研發的分佈式時序數據庫。從底層的分佈式文件系統和存儲引擎,到數據庫和核心類庫,到分佈式計算引擎,到腳本語言,到各種編程語言的開發接口,甚至外圍的開發集成環境GUI、集羣管理工具都是百分百自主研發的,無任何外部依賴,安全可控。

DolphinDB除了支持x86和arm的指令體系外,也在適配MIPS指令體系,以支持龍芯等國產CPU。這樣在工業物聯網平臺上,可以實現軟硬件同時自主可控。

4. 海量歷史數據存儲和處理

工業物聯網數據採集的維度高,頻率高,設備數量多,數據量特別大,且都是高時間精度數據。目前製造業使用的MES系統大部分採用關係型數據庫,往往只能保存極短時間內的工藝數據,無法保留全量高精度數據。數據庫系統的限制,導致企業無法發揮歷史數據的價值。

DolphinDB database 採用列式存儲,支持數據壓縮(壓縮率在20%左右),最高支持納秒精度的時間序列數據處理,單表支持百萬級別分區。可以通過增加節點的方式水平擴展DolphinDB集羣的存儲能力和計算能力。DolphinDB集羣支持多副本分佈式存儲和分佈式事務,當一個副本的數據錯誤或丟失時,啓用另一個副本恢復,保證數據的高可用和強一致。企業可以利用長年積累的歷史數據進行深度數據挖掘和數據分析,如設備的預測性維護,工藝流程的改進,產品質量的提升,製造計劃的優化等等。

簡單的說,在同樣的硬件設備上,關係型數據庫(Oracle,SQL Server)可以支持億級的時序數據,DolphinDB可以支持萬億級的時序數據。

5. 實時流計算

物聯網實時採集的數據,可以交給DolphinDB的流計算引擎清洗、實時統計、即時入庫,並通過可視化的方式實時展示。DolphinDB天然具備流表對偶性,發佈一條消息相當於往流數據表中增加一條數據,可以直接使用SQL注入和查詢分析流數據,極爲方便。DolphinDB的流計算引擎是基於發佈-訂閱-消費的模式。通過流數據表發佈數據,其他數據節點或第三方應用通過DolphinDB腳本或 API來訂閱消費流數據,把計算結果實時反饋給機器或操作員。流計算教程可以參考DolphinDB流數據教程DolphinDB流數據聚合引擎教程

6. 豐富的計算功能

DolphinDB的計算功能可以說是市場上的時序數據庫中最豐富的。DolphinDB內置了腳本語言,可直接在數據庫中進行復雜的計算和交互分析,避免了數據遷移。大部分計算功能和函數都經過優化,性能遠遠超過其他數據庫中的相同功能。下面列舉了DolphinDB中常用的計算功能。

6.1 範圍查詢

DolphinDB使用數據對(pair)的形式表示範圍。例如,查詢某個表某個時間範圍內的數據:

select * from table where date between beginDate:endDate

6.2 多維查詢

DolphinDB可以針對不同列進行聚合,實現高維或低維的範圍查詢功能。例如,對field1,field2 列進行過濾並分組聚合:

select sum(prc) from table where field1 in (1..100) and field2 = ‘A’ group by field1, field2

6.3 抽樣查詢

DolphinDB提供了以分區爲單位的抽樣查詢機制,可以按照指定的比例或者數量對分區進行抽樣,只需要在where後調用sample函數。例如,按設備ID進行範圍分區,抽取10%分區中的數據和10個分區中的數據

//抽樣10%分區select * from trades where sample(equipmentId, 0.1)
//抽樣10個分區select * from trades where sample(equipmentId, 10)

6.4 精度查詢

DolphinDB的時間精度達到納秒,支持海量高精度歷史數據存儲,也支持把高精度大數據集聚合轉換成低精度小數據集存儲。同時,DolphinDB支持多種時間精度分組抽樣。例如,選擇某兩個日期之間的數據,按分鐘進行分組計算。

select avg(tint) from t1 where date(timestamp) between 2018.01.01:2018.10.11 group by minute(timestamp)

DolphinDB也支持自定義精度分組。例如,每5秒一個分組:

select avg(tint) from t1 where date(timestamp) between 2018.01.01:2018.10.11 group by bar(timestamp,5000)

6.5 插值查詢

在工業領域經常會發生採集的數據缺失。DolphinDB在查詢計算時提供了4種插值方式補全數據,向前/向後取非空值填充(bfill/ffill),線性填充(lfill)和指定值填充(nullFill)。用戶也可以通過腳本或C++插件擴充新的插值函數。

6.6 聚合查詢

DolphinDB的函數庫非常豐富,支持以下聚合函數:atImax, atImin, avg, beta, contextCount, contextSum, contextSum2, count, corr, covar, derivative, difference, first, imax, last, lastNot, max, maxPositiveStreak, mean, med, min, mode, percentile, rank, stat, std,sum, sum2,var, wavg, wsum, zscore。

6.7 面板數據分組查詢

處理面板數據時,有時候希望爲每個分組的每一行數據生成一個值。DolphinDB提供了context by和滑動統計函數。

DolphinDB支持以下滑動統計函數:deltas, mavg, mbeta, mcorr, mcount, mcovar, mimax, mimin, mmax, mmed, mmin, mpercentile, mrank, mstd, msum, mvar, ratios。

例如,計算每臺設備過去10個採集點的移動平均溫度:

select equipmentId, mavg(temperature,10) as mavg_temperature context by equipmentId

DolphinDB對部分滑動統計函數進行了優化,每次計算時,充分利用上一個窗口的計算結果,最大程度地降低了重複計算。

6.8 對比查詢

DolphinDB的pivot by可用於數據透視,特別是同一時間不同列的指標對比。例如,想要對比同一時間段不同設備的平均溫度,可以使用以下代碼:

equipmentId = `A`B`B`B`C`C`A`A`A$symbol; 				temperature= 49.6 29.46 29.52 30.02 174.97 175.23 50.76 50.32 51.29;							timestamp = [09:34:07,09:35:42,09:36:51,09:36:59,09:35:47,09:36:26,09:34:16,09:35:26,09:36:12];	t = table(timestamp, equipmentId, temperature)select avg(temperature) from t pivot by timestamp.minute() as minute, equipmentId

返回的結果爲:

minute	A	B	C09:34m	50.18		09:35m	50.32	29.46	174.9709:36m	51.29	29.77	175.23

6.9 關聯查詢

DolphinDB支持的關聯查詢種類非常多,包括等值連接、完全連接、交叉連接、左連接、asof join和窗口連接。其中asof join和窗口連接(window join)是專門爲時間序列數據設計的連接方式,能夠滿足更多場景的需求。

當兩個表中的時間字段不完全對應時,可以使用asof join,如果左表中的時間爲t,它會自動選擇右表中不超過t的最近時間。窗口連接是asof join的擴展,如果窗口爲w1:w2,它會在右表中選擇(t+w1)到(t+w2)之間的數據,並對這些數據使用聚合函數。例如:

select equipmentId,t1.temperature,t2.humidity from aj(t1,t2,`timestamp)select * from wj(t1,t2,-5:0,<avg(temperature)>,`equipmentId`timestamp)

6.10 機器學習和分佈式計算

DolphinDB提供了map-reduce,iterative map-reduce等分佈式計算框架。用戶只需要指定數據源、map函數、reduce函數和final函數,無需編譯、部署,可以直接在線使用。爲方便用戶,DolphinDB內置了常用的擬合和分類算法,可在本地數據源和分佈式數據源上使用,這些算法包括線性迴歸、廣義線性模型(GLM)、隨機森林(Random Forest)、邏輯迴歸等。後續將會推出更多機器學習算法。

 

除了已有的功能外,DolphinDB提供了幾種途徑擴展系統功能。DolphinDB內置強大的類SQL和Python的腳本語言。用戶可以用腳本語言自定義函數來擴展系統功能。DolphinDB支持使用C++開發插件來擴展系統功能。除此以外,DolphinDB提供了C++、C#、Java、Python、R、JS、Excel等語言和系統的API,方便與其它系統集成。

7. 綜合使用成本低

工業企業的利潤率不高,如果數據平臺成本(軟硬件的採購成本,系統集成費用,維護費用,應用開發成本等)過高,會嚴重限制工業物聯網的發展。以DolphinDB爲例的時序數據庫擁有的一站式的解決方案、跨平臺部署能力、強大的實時數據和海量歷史數據處理能力、豐富的計算功能及擴展能力極大的降低了系統的綜合擁有成本。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章