前言
時序數據治理是數據治理領域核心、打通IT與OT域數據鏈路,是工業物聯網基石、大數據價值創造的關鍵、企業管理提升的發動機、是數字化轉型的重要支撐。
工業企業在生產經營過程中,會運用物聯網技術,采集大量的數據并進行實時處理,這些數據都是時序的,而且具有顯著的特點,比如帶有時間戳、結構化、沒有更新、數據源唯一等。
時序數據處理應用于智慧城市、物聯網、車聯網、工業互聯網領域的過程數據采集、過程控制,并與過程管理建立一個數據鏈路,屬于工業數據治理的新興領域。
本文主要講解時序數據的定義、典型特點、時序數據的應用場景、數采難點及時序數據工具等內容。
一時序數據的定義及作用
時序數據是指時間序列數據。是按時間順序記錄的數據列,在同一數據列中的各個數據必須是同口徑的,要求具有可比性。時序數據可以是時期數,也可以時點數。
時序數據管理主要通過對時序數據的采集、處理和分析幫助企業實時監控企業的生產與經營過程。
時序數據在應用上特點也很明顯,比如數據往往只保留一定時長,需要做降頻采樣、插值、實時計算、聚合等操作,關心的是一段時間的趨勢,而不是某一特定時間的值等。
工業企業為了監測設備、生產線以及整個系統的運行狀態,在各個關鍵點都配有傳感器、采集各種數據。這些數據是周期或準周期產生的,有的采集頻率高,有的采集頻率低,這些采集的數據一般會發送至服務器,進行匯總并實時處理,對系統的運行做出實時監測或預警。
時序數據常常被長期保存下來,用以做離線數據分析,例如在工業企業應用場景如下:
1)分析故障,看主要的設備故障是什么;
2)分析產能,看如何優化配置來提升生產效率;
3)分析能耗,看如何降低生產成本;
4)分析潛在的安全隱患,以降低故障時長。
《數據治理:工業企業數字化轉型之道》數據治理體系車輪圖
二時序數據的十二大典型特點
與各種信息管理系統的數據相比,工業領域的時序數據具有鮮明的特點。
(1)數據是時序的,一定帶有時間戳:聯網的設備按照設定的周期,或受外部事件的觸發,源源不斷地產生數據,每個數據點是在哪個時間點產生的,這個時間對于數據的計算和分析十分重要,必須要記錄。
(2)數據是結構化的:網絡爬蟲的數據、微博、微信的海量數據都是非結構化的,可以是文字、圖片、視頻等。但物聯網設備產生的數據往往是結構化的,而且是數值型的,比如智能電表采集的電流、電壓就可以用4字節的標準的浮點數來表示。
(3)數據極少有更新操作:聯網設備產生的數據是機器日志數據,一般不容許而且也沒有修改的必要。很少有場景,需要對采集的原始數據進行修改。但對于一個典型的信息化或互聯網應用,記錄是一定可以修改或刪除的。
(4)數據源是唯一的:一個物聯網設備采集的數據與另外一個設備采集的數據是完全獨立的。一臺設備的數據一定是這臺設備產生的,不可能是人工或其他設備產生的,也就是說一臺設備的數據只有一個生產者,數據源是唯一的。
(5)相對互聯網應用,寫多讀少:對于互聯網應用,一條數據記錄,往往是一次寫,很多次讀。比如一條微博或一篇微信公眾號文章,一次寫,但有可能會有上百萬人讀。但物聯網設備產生的數據不一樣,對于產生的數據,一般是計算、分析程序自動讀,而且計算、分析次數不多,只有分析事故等場景,人才會主動看原始數據。
(6)用戶關注的是一段時間的趨勢:對于一條銀行記錄,或者一條微博、微信,對于它的用戶而言,每一條都很重要。但對于物聯網數據,每個數據點與數據點的變化并不大,一般是漸變的,大家關心的更多是一段時間,比如過去5分鐘,過去1小時數據變化的趨勢,一般對某一特定時間點的數據值并不關注。
(7)數據是有保留期限的:采集的數據一般都有基于時長的保留策略,比如僅僅保留一天、一周、一個月、一年甚至更長時間,為節省存儲空間,系統最好能自動刪除。
(8)數據的查詢分析往往是基于時間段和某一組設備的:對于物聯網數據,在做計算和分析時,一定是指定時間范圍的,不會只針對一個時間點或者整個歷史進行。而且往往需要根據分析的維度,對物聯網設備的一個子集采集的數據進行分析,比如某個地理區域的設備,某個型號、某個批次的設備,某個廠商的設備。等等。
(9)除存儲查詢外,往往需要實時分析計算操作:對于大部分互聯網大數據應用,更多的是離線分析,即使有實時分析,但實時分析的要求并不高。比如用戶畫像,可以在積累一定的用戶行為數據后進行。但是對于物聯網應用,對數據的實時計算要求往往很高,因為需要根據計算結果進行實時報警,以避免事故的發生。
(10)流量平穩、可預測:給定物聯網數量、數據采集頻次,就可以較為準確地估算出所需要的帶寬和流量、每天新生成的數據大小。
(11)數據處理的特殊性:與典型的互聯網相比,還有不一樣的數據處理需求。比如要檢查某個具體時間的設備采集的某個量,但傳感器實際采集的時間不是這個時間點,這時往往需要做插值處理。還有很多場景需要基于采集量進行復雜的數學函數計算。
(12)數據量巨大:以智能電表為例,一臺智能電表每隔15分鐘采集一次數據,每天自動生成96條記錄,全國就有接近5億臺智能電表,每天生成近500億條記錄。一臺聯網的汽車每隔10到15秒就采集一次數據發送到云端,一臺汽車一天就很容易產生1000條記錄。如果中國2億輛車全部聯網,那么每天將產生2000億條記錄。5年之內,物聯網設備產生的數據將占世界數據總量的90%以上。
三通用大數據處理工具在時序數據場景的三大挑戰
從工具維度看,時序數據處理工具與傳統時序數據庫的差異很大。后者局限于車間級的可編程邏輯控制器,而非企業級。企業級的時序數據處理,首先是基于數據架構和數據模型的。
數據架構決定哪些時序數據需要采集,如何處理,用于哪些業務場景,用于時序數據采集的規劃與設計開發;數據模型用于解析時序數據的數據結構。
在物聯網、車聯網、工業互聯網興起之后,大家都想用通用的大數據平臺來處理其中的數據。現在市場上流行的物聯網、車聯網等大數據平臺幾乎無一例外都是這類架構,但這套通用處理工具的效果如何?可以說有很多不足,主要表現在以下幾個方面:
數字化工廠產生的時序數據量是巨大的,處理它有相當的技術挑戰。以數控機床加工生產為例,由于工業行業的要求,需要將包括報警在內的各種工況數據存儲起來。假設企業每個廠區具有2000個監測點,5秒一個采集周期,全國一共200個廠區。這樣粗略估算起來每年將產生驚人的幾十萬億個數據點。假設每個點0.5KB,數據總量將達PB級別(如果每臺服務器的硬盤容量是10TB,那么總共需要100多臺服務器)。這些數據不僅要實時生成,寫入存儲,還要支持快速查詢,實現可視化的展示,幫助管理者分析決策;并且也能夠用來做大數據分析,發現深層次的問題,幫助企業節能減排,增加效益。這樣看來,需要解決的關鍵技術問題如下。
通用大數據處理工具在時序數據場景的挑戰
傳統的數據采集體系面臨著數據質量差、查詢速度慢、缺少實時智能分析等問題。
(1)高并發、高吞吐量的寫入能力:如何支持每秒鐘上千萬數據點的寫入,這是最關鍵的技術能力。
(2)數據高速聚合:如何支持以秒級的速度對上億數據進行分組聚合運算,如何能高效地在大數據量的基礎上將滿足條件的原始數據查詢出來并聚合,要知道統計的原始值可能因為時間比較久遠而不在內存中,因此這可能是一個非常耗時的操作。
(3)降低存儲成本:如何降低海量數據存儲的成本,這需要時序數據庫提供高壓縮率。
(4)多維度的查詢能力:時序數據通常會有多個維度的標簽來刻畫一條數據,如何根據幾個維度進行高效查詢就是必須要解決的一個問題。
四時序數據應用場景
時序數據在各行各業有著廣泛應用的,例如在電力行業智能電表、電網發電設備集中監測;在石油化工行業油井、運輸管線運輸車隊的實時監測;在園區,在智慧城市實時路況、卡口數據路口流量監測,在金融行業交易記錄、存取記錄ATM、POS機監測,智能安防(樓宇門禁、車輛管理、井蓋、電子圍欄)、應急響應(消防、人群聚集、危化品、結構健康、電梯)等。
時序數據在各行業應用場景
1、智慧城市、能源行業智能應急指揮和融合通信調度
智慧城市、智慧工廠智能應急指揮和融合通信指揮調度方案是采用數字化BIM+GIS+NBIOT+AI+5G+算法技術,圍繞監控、指揮、調度、會議、通訊等多種功能合一的可視化指揮調度方案。在突發事件預警、上報、響應、指揮等各個環節實現及時有效的可視化指揮,滿足突發事件現場實時圖像傳送和視頻會商的快速響應需求。
應急指揮和融合通信指揮調度方案
2、園區智能巡檢和安防
在各種園區日常巡檢、隱患上報、三維地圖以及融合調度上有很多應用場景。設備管理運行狀態、HSE風險等級、工藝流程、過程控制運行參數等檢修情況各類業務現場及管理實時數據及信息的直觀展示,及時發現問題,分析原因,提出整改建議,并貫徹執行。
智能巡檢和安防應用場景
可燃氣體、煙霧、電氣火災全方位監控;火災感應、視頻監控、消防水全鏈路聯動;起火、報警、疏散、滅火全流程覆蓋。
設施全域物聯,安全數據說話
3、能源行業設備智能運維
物聯網平臺還可被應用于對海量設備終端的統一管理與運維,對設備的狀態進行在線監測與診斷,并及時進行故障預警。還可以通過多維圖表展示運維數據等。
設備智能運維
五時序數據處理工具(系統)需要具備哪些功能?
與通用的大數據處理工具相比,它具備什么樣的特點呢?
物聯網平臺與大數據平臺關系
覆蓋云、管、邊、端的全景式能力矩陣
時序數據流向圖
從數據采集到應用的端到端物聯網平臺
1、必須是高效的分布式系統
工業互聯網產生的數據量巨大,比如,全國有5億多臺智能電表,每臺智能電表每隔15分鐘采集一次數據,全國的智能電表一天就會產生500多億條記錄。這么大的數據量,任何一臺服務器都無法處理,因此時序數據處理系統必須是分布式的、水平擴展的。為降低成本,一個節點的處理性能必須是高效的,需要支持數據的快速寫入和快速查詢功能。
2、必須是實時的處理系統
對于互聯網大數據的應用場景,大家所熟悉的都是用戶畫像、推薦系統、輿情分析等,這些場景并不需要數據計算具有實時性,批處理即可。但是對于工業互聯網大數據的應用場景,則需要基于采集的數據做實時預警、決策,延時要控制在秒級以內。如果沒有實時計算,則其商業價值就大打折扣。
3、需要運營商級別的高可靠服務
工業互聯網系統對接的往往是生產、經營系統,如果數據處理系統宕機,則會直接導致停產,無法對終端消費者正常提供服務。因此,時序數據處理系統必須是高可靠的,必須支持數據實時備份,必須支持異地容災,必須支持軟件、硬件在線升級,必須支持在線IDC機房遷移,否則服務一定有被中斷的可能。
4、需要高效的緩存功能
在絕大部分場景中,都需要能快速獲取設備當前狀態或其他信息,用以報警、大屏展示等。時充數據處理系統需要提供高效機制,讓用戶可以獲取全部或符合過濾條件的部分設備的最新狀態。
5、需要實時流式計算
各種實時預警或預測已經不是簡單地基于某一個閾值進行的,而是需要通過將一個或多個設備產生的數據流進行實時聚合計算(并且不只是基于一個時間點,而是基于一個時間窗口進行計算)。不僅如此,計算的需求也相當復雜,因場景而異,應容許用戶自定義函數進行計算。
6、需要支持數據訂閱
時序數據處理系統與通用大數據平臺比較一致的地方是,同一組數據往往有很多應用都需要,因此,時序數據處理系統應該提供訂閱功能:只要有新的數據更新,就應該實時提醒應用。而且這個訂閱也應該是個性化的,容許應用設置過濾條件,比如只訂閱某個物理量5分鐘的平均值。
7、實時數據和歷史數據的處理要合二為一
實時數據被存儲在緩存里,歷史數據被存儲在持久化存儲介質里,而且可能依據時長,被存儲在不同的存儲介質里。時序數據處理系統應該隱藏背后的存儲介質,給用戶和應用呈現的是同一個接口和界面。無論是訪問新采集的數據還是10年前的老數據,除輸入的時間參數不同外,其余都應該是一樣的。
8、需要保證數據能持續、穩定地寫入
對于物聯網系統,數據流量往往是平穩的,因此數據寫入所需要的資源往往是可以估算的。其中變化的是查詢、分析,特別是即席查詢,有可能耗費很多的系統資源,不可控。因此,時序數據處理系統必須保證分配足夠的資源以確保數據能夠寫入系統而不被丟失。準確地說,時序數據處理系統必須是一個寫優先系統。
9、需要支持靈活的多維度數據分析
對于聯網設備產生的數據,需要進行各種維度的統計分析,比如根據設備所處的地域進行分析,根據設備的型號、供應商進行分析,根據設備所使用的人員進行分析等。這些維度的分析是無法事先設計好的,而是在實際運營過程中,根據業務發展需求定下來的。因此,工業互聯網大數據平臺需要一個靈活的機制來增加某個維度的分析。
10、需要支持數據降頻、插值、特殊函數計算等操作
原始數據的采集可能頻次較高,但在具體分析時,往往不需要對原始數據進行分析,而是需要對數據進行降頻。時序數據處理系統需要提供高效的數據降頻操作。不同設備采集數據的時間點是很難一致的,因此,分析一個特定時間點的值,往往需要插值才能解決,系統需要提供線性插值、設置固定值等多種插值策略。
11、需要支持即席分析和查詢
為提高數據分析師的工作效率,時序數據處理系統應該提供命令行工具或容許用戶通過其他工具,執行SQL查詢,而不是非要通過編程接口。并且查詢分析結果可以很方便地被導出,以及被制作成各種圖表。
12、需要提供靈活的數據管理策略
一個大的系統,其中采集的數據種類繁多,而且除采集的原始數據外,還有大量的衍生數據。這些數據各自有不同的特點,有的采集頻次高,有的要求保留時間長,有的需要保存多個副本以保證更高的安全性,有的需要能快速訪問。因此,工業互聯網大數據平臺必須提供多種策略,讓用戶可以根據特點進行選擇和配置,而且各種策略并存。
13、必須是開放的
時序數據處理系統需要支持業界流行的標準,提供各種語言開發接口,包括C/C++、JAVA、Go、Python、RESTful等,也需要支持Spark、R、MATLAB等,方便集成各種機器學習、人工智能算法或其他應用,讓大數據處理平臺能夠不斷擴展,而不是成為一個數據孤島。
14、必須支持異構環境
大數據平臺的搭建是一個長期工作,每個批次采購的服務器和存儲設備都會不一樣,時序數據處理系統必須支持各種檔次、各種不同配置的服務器和存儲設備并存。
15、需要支持邊云協同
時序數據處理系統要有一套靈活的機制將邊緣計算節點的數據上傳到云端,根據具體需要,可以將原始數據、加工計算后的數據,或僅僅符合過濾條件的數據同步到云端,并且同步可以隨時取消,同步策略可以隨時修改。
16、需要單一的后臺管理系統
單一的后臺管理系統便于查看系統運行狀態、管理集群、管理用戶、管理各種系統資源等,而且能讓系統與第三方IT運維監測平臺無縫集成,便于統一管理和維護。
17、便于私有化部署
因為很多企業出于安全及各種因素的考慮,希望時序數據處理系統采用私有化部署。而傳統的企業往往沒有很強的IT運維團隊,因此在時序數據處理系統安裝、部署上需要做到簡單、快捷,可維護性強。
六時序數據的采集難點分析
時序數據的采集一般都是通過傳感器自動進行的,包括光電、熱敏、氣敏、力敏、磁敏、聲敏、濕敏、電量等不同類別的工業傳感器。就某一個具體的物理量而言,數據采集是很容易的。但就整個系統而言,數據采集是相當復雜的,具體表現在以下幾個方面:
1、工業數據的協議不標準
在現實場景中,往往會出現ModBus、OPC、CAN、ControlNet、Profibus、MQTT等各種類型的工業協議,而且各個自動化設備生產及集成商還會自己開發各種私有的工業協議,導致在實現工業協議的互聯互通時出現極大的難度。很多開發人員在工業現場實施綜合自動化等項目時,遇到的最大問題即是面對眾多的工業協議,無法有效地進行解析和采集數據。
2、通信方式不統一
由于歷史原因,采集的數據往往會通過局域網、藍牙、Wi-Fi、2.5G、3G、4G等各種傳輸方式被傳送到服務器中,導致各種通信方式并行存在,連接管理變得復雜。
3、對現有MES系統的數據獲取難度大
在工業企業實施大數據項目時,數據采集往往不是針對傳感器或者PLC,而是從已經完成部署的MES系統獲取。這些系統在部署時廠商水平參差不齊,大部分系統是沒有數據接口的,文檔也大量缺失,大量的現場系統沒有點表等基礎設置數據,使得對于這部分數據采集的難度極大。
4、安全性考慮不足
傳統的工業系統都運行在局域網中,安全問題不是考慮的重點。若需要通過云端(特別是公有云)調度工業行業中核心的生產數據,又沒有充分考慮安全問題,則很有可能造成難以彌補的損失。
根據上述原因,企業在實際采集數據時,往往配有工業互聯網網關盒子,該盒子支持各種物理接口、通信協議和工業標準協議,將不同協議進行轉換,對數據進行安全加密,統一以MQTT(Message Queuing Telemetry Transport,ISO/IEC PRF 20922)協議或其他協議發往云端。
對于數據采集部分,因為標準性不夠,就不對具體工具做介紹了。
七時序數據處理流行工具
采集后的數據一般通過網絡被送往服務器或云端進行處理。相對數據采集工具而言,數據處理工具比較統一,下面對幾個流行的工具進行介紹。
1、以PI為代表的實時數據庫
從20世紀80年代起,就涌現一批實時數據庫(時序數據庫的一種),專門用于處理工業自動控制或流程制造行業的實時數據。其中美國OSIsoft公司的PI(PlantInformation)實時數據庫最典型,它提供成套的工具,包括實時寫入、實時計算、存儲、分析、可視化、報警等系列功能,GE、Simens、Honeywell都有類似產品。國內有庚頓、朗坤、麥杰、力控等產品。這些產品在一定程度上滿足了工業數據處理的需求,但在測點數量暴漲、數據采集頻率不斷提高的大數據時代,傳統實時數據庫暴露出以下問題:
1)沒有水平擴展能力,數據量增加,只能依靠硬件的縱向擴展解決。
2)技術架構老舊,很多還是運行于windows系統中的。
3)數據分析能力偏弱,不支持現在流行的各種數據分析接口。
4)不支持云端部署,更不支持SaaS。
5)在傳統的實時監控場景,由于對各種工業協議的支持比較完善,實時數據庫還占有較牢固的市場地位,但是在工業大數據處理上,因為上述幾個原因,幾乎沒有任何大數據平臺采用它們。
下面對幾個典型的實時數據庫進行介紹。
1、InfluxDB
InfluxDB由Golang語言編寫,也是由Golang編寫的軟件中比較著名的一個,在很多Golang的沙龍或者文章中可能都會把InfluxDB當標桿來介紹,這也間接幫助InfluxDB提高了知名度。InfluxDB的主要特點包括:
- schemaless(無結構),可以是任意數量的列
- 可擴展(集群)
- 方便、強大的查詢語言
- Native HTTP API
- 集成了數據采集、存儲、可視化功能
- 實時數據Downsampling
- 高效存儲,使用高壓縮比算法,支持retention polices
- 數據采集支持多種協議和插件:行文本、UDP、Graphite、CollectD、OpenTSDB
InfluxDB是時序數據庫中為數不多的進行了用戶和角色方面實現的,提供了Cluster Admin、Database Admin和Database User三種角色。
2、Graphite
Graphite是分布式時序列數據存儲數據庫,容易擴展,具備功能強大的畫圖Web API,提供了大量的函數和輸出方式。主要功能包括:
- 存儲數值型時序列數據
- 根據請求對數據進行可視化(畫圖)
Graphite本身不帶數據采集功能,但是你可以選擇很多第三方插件,比如適用于collectd、Ganglia或Sensu的插件等。同時,Graphite也支持Plaintext、Pickle和AMQP這些數據輸入方式。
Graphite使用了類似RRDtool的RRD文件格式,它也不像C/S結構的軟件一樣,沒有服務進程,只是作為Python library使用,提供對數據的create/update/fetch操作。google、Etsy、GitHub、豆瓣、Instagram、Evernote和Uber等很多知名公司都是Graphite的用戶。
3、OpenTSDB
這是一個Apache開源軟件,是在HBase的基礎上開發的,底層存儲是HBase,但其依據時序數據的特點做了一些優化。其最大的好處就是建立在Hadoop體系上,各種工具鏈成熟,但這也是它最大的缺點,因為Hadoop不是為時序數據打造的,導致其性能很一般,而且需要依賴很多組件,安裝部署相當復雜。
OpenTSDB采用Schemaless模式,不用預先定義數據結構,因此寫入靈活,但每個時間序列只能寫入一個采集量,不支持多列寫入。每個序列可以被打上多個標簽,以方便聚合操作。總的來講,OpenTSDB的性能無論是寫入還是查詢,都很一般,而且系統的穩定性欠佳。但吸引人的是,它支持集群部署和支持水平擴展。
以騰訊的CTSDB時序數據庫為例,CTSDB是騰訊云推出的一款分布式、可擴展、支持近實時數據搜索與分析的時序數據庫。該數據庫為非關系型數據庫,提供高效讀寫、低成本存儲、強大的聚合分析能力、實例監控以及數據查詢結果可視化等功能。整個系統采用多節點多副本的部署方式,有效保證了服務的高可用性和數據的高可靠性。CTSDB 在處理海量時序數據時具有的優勢包括:
- 高并發寫入:數據先寫入內存,再周期性的 Dump 為不可變的文件存儲。且可以通過批量寫入數據,降低網絡開銷
- 低成本存儲:通過數據上卷(Rollup),對歷史數據做聚合,節省存儲空間。同時利用合理的編碼壓縮算法,提高數據壓縮比
強大的聚合分析能力:支持豐富的聚合查詢方式,不僅支持 avg、min、max 等常用的聚合方式,還支持 Group By、區間、Geo、嵌套等復雜聚合分析。
4、TDengine
這是來自中國的開源軟件,由濤思數據研發推出。它不僅是一款時序數據庫,而且還提供緩存、消息隊列、數據訂閱、流式計算等系列功能,是時序數據的全棧技術解決方案。而且它不依賴任何第三方軟件,安裝包只有1.5MB,使系統設計、安裝、部署和維護都變得極為簡單。
時序大數據系統技術框圖
時序數據的全棧解決方案
TDengine充分利用了時序數據的特點,因此具有很強的優勢,具體表現在5個方面:
1)無論是插入,還是查詢,性能都高出許多。
2)因為性能超強,其所需要的計算資源不及其他軟件的1/5。
3)采用列式存儲,對不同數據類型采取不同的壓縮算法,所需要的存儲資源不到其他軟件的1/10。
4)無須分庫、分表,無實時數據與歷史數據之分,管理成本為零。
5)采用標準SQL語法,應用可以通過標準的JDBC、ODBC接口插入或查詢數據,學習成本幾乎為零。
總結
企業級的時序數據處理,首先是基于數據架構和數據模型的。數據架構決定了哪些時序數據需要采集,如何處理,用于哪些業務場景,用于時序數據采集的規劃與設計開發;數據模型用于解析時序數據的數據結構。
通過物聯網平臺的能力支撐,可以實現對存量設備與新增設備的統一接入,兼容利舊。AI能力與數據分析能力下沉到邊緣端,也可以提升現有業務的響應速度,支持實時智能分析。