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

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

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

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

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

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

所以,時序數據庫應運而生。以DolphinDB爲例,用時序數據庫做爲工業物聯網數據後臺時具備如下7大自然優點。編程

1. 一站式數據解決方案

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

a459f1c3e82dfe856e70cf9a7194d66b.png

對於系統集成商或企業來講,在一套系統上進行開發和維護,比起在多套系統上集成、開發和維護,不管是開發成本,維護成本,仍是硬件的採購成本都會低得多。服務器

2. 輕量級跨平臺部署

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

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爲例的時序數據庫擁有的一站式的解決方案、跨平臺部署能力、強大的實時數據和海量歷史數據處理能力、豐富的計算功能及擴展能力極大的下降了系統的綜合擁有成本。

相關文章
相關標籤/搜索