倪昱 鄭志恒
摘? 要:目前在海洋裝備上通常使用關(guān)系數(shù)據(jù)庫存儲海量監(jiān)控數(shù)據(jù),存在空間占用大、查詢性能差的問題。文章提出了基于時序數(shù)據(jù)庫的海洋裝備監(jiān)控數(shù)據(jù)存儲解決方案,并基于國產(chǎn)數(shù)據(jù)庫TDEngine完成了系統(tǒng)工程實現(xiàn),實現(xiàn)了監(jiān)控數(shù)據(jù)的自動建表、自動存儲以及快速可視化。經(jīng)測試表明,該系統(tǒng)的數(shù)據(jù)壓縮和查詢性能相比于傳統(tǒng)關(guān)系型數(shù)據(jù)庫具有明顯優(yōu)勢,為解決海洋裝備海量監(jiān)控數(shù)據(jù)存儲的難題提供了良好的解決方法。
關(guān)鍵詞:時序數(shù)據(jù)庫;監(jiān)控數(shù)據(jù)存儲;海洋裝備;TDEngine
中圖分類號:TP39;U665.26? 文獻標識碼:A? 文章編號:2096-4706(2023)11-0101-04
Monitoring Data Storage System for Marine Equipment Based on Time Series Database
NI Yu, ZHENG Zhiheng
(State Key Laboratory of Deep-Sea Manned Vehicles, China Ship Scientific Research Center, Wuxi? 214082, China)
Abstract: At present, relational database is usually used to store massive monitoring data on marine equipment, which has the problems of large space occupation and poor query performance. This paper proposes a solution of monitoring data storage for marine equipment based on time series database, and completes the system engineering implementation based on the domestic database TDEngine, which realizes automatic table building, automatic storage and rapid visualization of monitoring data. The tests show that the data compression and query performance of the system has obvious advantages over traditional relational database, which provides a good solution to the difficult problem of massive monitoring data storage for marine equipment.
Keywords: time series database; monitoring data storage; marine equipment; TDEngine
0? 引? 言
隨著計算機軟硬件技術(shù)的飛速發(fā)展,監(jiān)控系統(tǒng)在海洋裝備中得到了更加廣泛的應用。對于船舶、載人潛器等有人裝備,監(jiān)控數(shù)據(jù)提供了運行狀態(tài)分析、故障判斷的有力手段;對于無人艇、水下機器人等無人裝備,監(jiān)控數(shù)據(jù)提供了自主決策控制的依據(jù)。
為了對歷史數(shù)據(jù)進行分析查看,需要實現(xiàn)監(jiān)控數(shù)據(jù)的存儲。目前對于海洋裝備的監(jiān)控數(shù)據(jù)存儲,一般采用MySQL、Oracle等關(guān)系數(shù)據(jù)庫,然而監(jiān)控歷史數(shù)據(jù)是高頻次采集的時序數(shù)據(jù),使用關(guān)系數(shù)據(jù)庫存儲會帶來以下問題:
1)存儲空間占用大。海洋裝備中的監(jiān)控數(shù)據(jù)測點數(shù)量多,采樣頻率高,需要保存的時間周期長,因此數(shù)據(jù)量大。因為關(guān)系數(shù)據(jù)庫的壓縮算法沒有針對時序數(shù)據(jù)進行優(yōu)化,所以在通常的磁盤容量很難滿足上述海量數(shù)據(jù)的存儲需求。
2)查詢性能差。海量數(shù)據(jù)檢索對數(shù)據(jù)庫的查詢性能要求較高。關(guān)系數(shù)據(jù)庫的索引算法同樣沒有針對時序數(shù)據(jù)進行優(yōu)化,隨著存儲空間的不斷增長,難以獲得滿意的查詢性能。
針對以上問題,本文提出了基于時序數(shù)據(jù)庫的海洋裝備監(jiān)控數(shù)據(jù)存儲系統(tǒng)方案,完成了系統(tǒng)的方案設計和工程實現(xiàn),并對系統(tǒng)性能進行了測試分析。
1? 海洋裝備監(jiān)控數(shù)據(jù)存儲現(xiàn)狀
浙江大學先進控制研究所研制了“船用柴油機智能報警監(jiān)控系統(tǒng)”[1],該系統(tǒng)采用現(xiàn)場級、集控室級和駕駛室級三層網(wǎng)絡控制結(jié)構(gòu),各層之間使用CAN總線協(xié)議進行通信,實現(xiàn)了快速數(shù)據(jù)采集、記錄、報警、查詢、顯示等功能以及對柴油機起動、換向、調(diào)速的控制。該系統(tǒng)通過Oralce關(guān)系數(shù)據(jù)庫存儲柴油機轉(zhuǎn)速、燃油進機壓力、燃油進機溫度、主軸瓦溫度、滑油進機壓力、滑油進機溫度、滑油出機溫度等柴油機報警監(jiān)控數(shù)據(jù)。
大連海事大學研制了“基于OPC技術(shù)的船舶機艙數(shù)據(jù)采集與監(jiān)測系統(tǒng)”[2],該系統(tǒng)由位于底層的狀態(tài)數(shù)據(jù)采集卡、中間層OPC機艙數(shù)據(jù)訪問服務器、上層OPC機艙監(jiān)測系統(tǒng)三層結(jié)構(gòu)組成。上層OPC機艙監(jiān)測客戶端負責將從OPC機艙數(shù)據(jù)訪問服務器讀取的各個機艙設備的狀態(tài)數(shù)據(jù),通過Access關(guān)系數(shù)據(jù)庫實現(xiàn)監(jiān)控狀態(tài)數(shù)據(jù)的存儲。
中國海洋大學研制了“基于MOOS的AUV的數(shù)據(jù)采集和監(jiān)控系統(tǒng)”[3]。該系統(tǒng)采用模塊化、分布式的設計方案,宏觀上把AUV分為四大系統(tǒng)模塊:中央控制系統(tǒng)、同時定位和地圖構(gòu)建系統(tǒng)、數(shù)據(jù)采集和保存分析系統(tǒng)、底層動力驅(qū)動和控制系統(tǒng)。其數(shù)據(jù)采集和保存分析系統(tǒng)采集各傳感器和AUV艙內(nèi)參數(shù)信息,通過文件形式進行監(jiān)控數(shù)據(jù)存儲。
海軍研究院研制了“艦船電磁環(huán)境數(shù)據(jù)庫”[4],在分析國內(nèi)外艦船電磁環(huán)境極限值的基礎(chǔ)上,以設計結(jié)構(gòu)模塊及運算規(guī)則,動態(tài)生成艦船不同區(qū)域分頻段的場強極限值,為電磁輻射環(huán)境下艦面作業(yè)安全提供數(shù)據(jù)支撐。該系統(tǒng)使用MySQL關(guān)系數(shù)據(jù)庫進行基礎(chǔ)數(shù)據(jù)存儲,基礎(chǔ)數(shù)據(jù)分為實測數(shù)據(jù)、仿真數(shù)據(jù)和理論數(shù)據(jù)三種類型,實測數(shù)據(jù)來源于實船或?qū)嵮b測試結(jié)果,仿真數(shù)據(jù)來源于艦船模型數(shù)值仿真,理論計算數(shù)據(jù)來源于依據(jù)電磁場理論的估算結(jié)果。
以上海洋裝備的監(jiān)控系統(tǒng)都采用關(guān)系數(shù)據(jù)庫或者文件進行數(shù)據(jù)存儲。
2? 系統(tǒng)設計
2.1? 時序數(shù)據(jù)庫
海洋裝備監(jiān)控數(shù)據(jù)主要是海量的時序數(shù)據(jù),實際場景中很少有更新和刪除操作,查詢分析主要基于時間序列和信號名稱。時序數(shù)據(jù)庫按時間序列來存儲實時變化的數(shù)據(jù),與傳統(tǒng)的關(guān)系數(shù)據(jù)庫相比,其優(yōu)勢是通過數(shù)據(jù)壓縮算法來減少存儲空間占用,同時通過數(shù)據(jù)索引算法實現(xiàn)海量數(shù)據(jù)的快速查詢和訪問。
2.1.1? 數(shù)據(jù)壓縮算法
時序數(shù)據(jù)的數(shù)據(jù)壓縮算法通常可分為兩類:有損壓縮算法和無損壓縮算法。有損壓縮算法主要是線性擬合算法,壓縮效率更高,但不適用于實時監(jiān)控場景下的問題排查。主流的時序數(shù)據(jù)庫一般采用無損壓縮算法,最常用的是基于快速浮點數(shù)據(jù)壓縮的累積數(shù)據(jù)批處理壓縮算法,如Simple8b、PforDelta等[5,6],在不丟失數(shù)據(jù)的情況下,同時保證了壓縮率。
2.1.2? 數(shù)據(jù)索引算法
索引是數(shù)據(jù)庫執(zhí)行查詢的前提,也是提升查詢性能的基礎(chǔ)。索引算法的關(guān)鍵是數(shù)據(jù)空間的劃分方法,關(guān)系數(shù)據(jù)庫一般直接在一維或二維空間的分類劃分實現(xiàn)數(shù)據(jù)索引。而時序數(shù)據(jù)庫通常采用基于R-tree的高維度空間索引算法[7],并通過小波變換等方法完成時序變換,對于時序數(shù)據(jù)通常能明顯提升查詢性能。
2.2? 數(shù)據(jù)庫選型
目前最常用的時序數(shù)據(jù)庫有InfluxDB、KDB+、OpenTSDB等。在系統(tǒng)設計時沒有選用這些國外產(chǎn)品,而是選用了國產(chǎn)時序數(shù)據(jù)庫TDEngine,主要有以下三個原因。
1)TDEngine是國產(chǎn)開源軟件,更滿足艦船等軍用海洋裝備自主可控的需求。
2)TDEngine支持Arm32處理器架構(gòu),可運行在嵌入式開發(fā)板上,滿足水下機器人等小型海洋裝備的需求。
3)TDEngine創(chuàng)新性地使用單表存儲單個采集點數(shù)據(jù),同時利用超級表進行高效聚合,相比InfluxDB等主流產(chǎn)品進一步提升了數(shù)據(jù)的寫入和查詢速度,同時也大幅提高了數(shù)據(jù)壓縮效率。
2.3? 系統(tǒng)架構(gòu)
整個系統(tǒng)主要包括數(shù)據(jù)采集層、數(shù)據(jù)存儲層、數(shù)據(jù)展示層3層,整體架構(gòu)如圖1所示。
數(shù)據(jù)采集層負責監(jiān)控數(shù)據(jù)的采集,海洋裝備常常由航行推進系統(tǒng)、電力系統(tǒng)、輔機系統(tǒng)、通導系統(tǒng)等子系統(tǒng)等組成,需采集各類機電設備、傳感器的數(shù)據(jù)。系統(tǒng)使用OPC UA規(guī)范進行標準化的監(jiān)控數(shù)據(jù)采集[8],各子系統(tǒng)盡量選用支持OPC UA規(guī)范的PLC控制器,對于不支持的子系統(tǒng)或設備,則需要開發(fā)OPC UA服務軟件實現(xiàn)數(shù)據(jù)采集,或者通過支持OPC UA的智能網(wǎng)關(guān)硬件實現(xiàn)數(shù)據(jù)采集。
數(shù)據(jù)存儲層完成監(jiān)控數(shù)據(jù)的存儲。開發(fā)數(shù)據(jù)存儲服務程序,讀取各子系統(tǒng)OPC UA服務采集的監(jiān)控數(shù)據(jù),然后將數(shù)據(jù)批量寫入到TDEngine時序數(shù)據(jù)庫。
數(shù)據(jù)展示層負責存儲監(jiān)控數(shù)據(jù)的可視化。Grafana是時序數(shù)據(jù)庫可視化工具[9],通過Grafana定制的數(shù)據(jù)看板,生成所需的圖表視圖,提供監(jiān)控應用所需的數(shù)據(jù)展示界面。數(shù)據(jù)展示界面通過瀏覽器訪問,支持權(quán)限控制,提供不同權(quán)限用戶不同的數(shù)據(jù)視圖,并支持電腦、手機、Pad等多端設備訪問。
不同于時序數(shù)據(jù)庫中常用的單列模型,為了進一步提升數(shù)據(jù)寫入和存儲效率,本系統(tǒng)采用了基于TDEngine的多列模型,并使用超級表加普通表的數(shù)據(jù)庫結(jié)構(gòu)設計。多列模型指的是一個數(shù)據(jù)采集點同時采集的多個數(shù)據(jù)作為不同列放在一張表中,例如ROV推進器A的轉(zhuǎn)速、溫度、電流、電壓等多個數(shù)據(jù)作為普通表推進器A的多個列。每一種類型的數(shù)據(jù)采集點建立一張超級表,與該類型各普通表關(guān)聯(lián),例如ROV推進器類型數(shù)據(jù)建立超級表,關(guān)聯(lián)到8個推進器的普通表?;谶@種數(shù)據(jù)庫結(jié)構(gòu)設計,用戶可以根據(jù)靜態(tài)信息進行多維度聚合查詢,更好更快地進行監(jiān)控數(shù)據(jù)的統(tǒng)計分析。
3? 系統(tǒng)實現(xiàn)
3.1? 數(shù)據(jù)存儲服務
數(shù)據(jù)存儲服務是本系統(tǒng)中最關(guān)鍵的功能模塊,其實現(xiàn)可以分為三部分。
3.1.1? 數(shù)據(jù)讀取
讀取數(shù)據(jù)采集層中各OPC UA數(shù)據(jù)服務的數(shù)據(jù)。首先解析各OPC UA服務的信息模型,建立OPC object的層次結(jié)構(gòu)以及和下屬OPC value的對應關(guān)系;然后訂閱各OPC UA服務中所有的OPC value的數(shù)據(jù)變化,將更新后的OPC value值讀取到內(nèi)存緩沖區(qū)。其中采集數(shù)據(jù)訂閱更新周期、OPC UA服務地址等參數(shù)可以進行設置。
3.1.2? 批量插入語句生成
時序數(shù)據(jù)庫批量寫入數(shù)據(jù)可大幅提升寫入性能,因此不是每次采集數(shù)據(jù)更新時立刻寫入數(shù)據(jù)庫,而是每周期讀取內(nèi)存緩沖區(qū)OPC value最新值,生成一行插入語句,將一段時間內(nèi)產(chǎn)生的多行批量插入語句保存到插入緩沖區(qū)。
3.1.3? 數(shù)據(jù)寫入
根據(jù)設置的插入緩沖區(qū)大小或者寫入的周期,執(zhí)行符合時序數(shù)據(jù)庫行協(xié)議的批量插入語句,將數(shù)據(jù)寫入TDEngine數(shù)據(jù)庫,并清空插入緩沖區(qū)。其中TDEngine數(shù)據(jù)庫信息、數(shù)據(jù)寫入周期、插入緩沖區(qū)大小等參數(shù)可以進行設置。
數(shù)據(jù)庫系統(tǒng)建立時通常需要手動建表,數(shù)據(jù)對象變化時,還需要進行表結(jié)構(gòu)修改的繁雜操作。為避免建立、維護數(shù)據(jù)庫表的手動操作,使用TDEngine的無模式寫入方式進行數(shù)據(jù)寫入,可自動生成和修改相應的數(shù)據(jù)庫表。例如,無模式寫入ROV導航系統(tǒng)慣導設備采集的位置、加速度、姿態(tài)等數(shù)據(jù)時,TDEngine可自動建表并根據(jù)數(shù)據(jù)類型自動建立相應字段,如圖2所示。
3.2? 數(shù)據(jù)可視化
系統(tǒng)使用Grafana實現(xiàn)監(jiān)控數(shù)據(jù)可視化,Grafana通過RESTful接口訪問TDEngine連接器服務進行數(shù)據(jù)查詢。利用Grafana工具快速生成折線圖、柱狀圖、表格等完成監(jiān)控數(shù)據(jù)的可視化,以實際的應用場景為背景搭建不同的監(jiān)控界面。例如ROV導航監(jiān)控可創(chuàng)建位置、姿態(tài)等狀態(tài)數(shù)據(jù)歷史曲線,ROV推進器監(jiān)控可創(chuàng)建各推進器轉(zhuǎn)速、溫度等狀態(tài)歷史曲線,如圖3、圖4所示。監(jiān)控界面完成搭建后,可將其保存在Grafana的數(shù)據(jù)看板中,以便下次重復使用。
4? 性能分析
4.1? 存儲空間占用測試
記錄監(jiān)控數(shù)據(jù)相應不同存儲周期時存儲空間的占用情況,將TDEngine與MySQL進行對比。如圖5所示,結(jié)果表明,得益于數(shù)據(jù)壓縮算法的優(yōu)化,時序數(shù)據(jù)庫TDEngine的存儲空間占用遠少于關(guān)系數(shù)據(jù)庫MySQL,并且隨著數(shù)據(jù)量的增加,數(shù)據(jù)壓縮性能的優(yōu)勢更大。
4.2? 查詢性能測試
在不同的數(shù)據(jù)存儲周期進行基于數(shù)據(jù)值的檢索,將TDEngine與MySQL進行對比。如圖6所示,結(jié)果表明,得益于TDEngin數(shù)據(jù)索引算法的優(yōu)化,時序數(shù)據(jù)庫TDEngine的查詢性能明顯優(yōu)于關(guān)系數(shù)據(jù)庫MySQL,并且隨著數(shù)據(jù)量的增加,數(shù)據(jù)查詢性能的優(yōu)勢更大。
5? 結(jié)? 論
本文研究和實現(xiàn)了基于時序數(shù)據(jù)庫的海洋裝備監(jiān)控數(shù)據(jù)存儲系統(tǒng),該系統(tǒng)在時序數(shù)據(jù)庫TDEngine和OPC UA數(shù)據(jù)協(xié)議的基礎(chǔ)上,實現(xiàn)了數(shù)據(jù)存儲服務,解決了海量監(jiān)控數(shù)據(jù)使用關(guān)系數(shù)據(jù)庫存儲時空間占用大和查詢性能差的問題,并通過Grafana工具解決了監(jiān)控數(shù)據(jù)快速可視化的問題。本系統(tǒng)目前已經(jīng)應用在中型作業(yè)級ROV上,后續(xù)將不斷升級優(yōu)化,在更多的海洋裝備上得到應用。
參考文獻:
[1] 吳卓成,黃文君.船用柴油機智能報警監(jiān)控系統(tǒng)的設計 [J].中國造船,2009,50(3):146-150.
[2] 王詩文,張寧,沈智鵬,等.基于OPC技術(shù)的船舶機艙數(shù)據(jù)采集與監(jiān)測系統(tǒng) [J].大連海事大學學報,2014,40(3):73-78.
[3] 侯建釗,高菲,張東昆.基于MOOS的AUV的數(shù)據(jù)采集和監(jiān)控系統(tǒng) [J].現(xiàn)代電子技術(shù),2014,37(20):130-133.
[4] 何純?nèi)?,湯仕平,施佳?艦船電磁環(huán)境數(shù)據(jù)庫的設計與實現(xiàn) [J].裝備環(huán)境工程,2020,17(3):120-124.
[5] ANH V N,MOFFAT A. Index Compression Using 64-Bit Words [J].Software: Practice and Experience,2010,40(2):131-147.
[6] ZUKOWSKI M,HEMAN S,NES N,et al. Super-scalar RAM-CPU Cache Compression [C]//22nd International Conference on Data Engineering (ICDE'06).Atlanta:IEEE,2006:59.
[7] 蔣濤,馮玉才,朱虹,等.RQIC:一種高效時序相似搜索算法 [J].計算機研究與發(fā)展,2009,46(5):770-778.
[8] 禹鑫燚,殷慧武,施甜峰,等.基于OPC UA的工業(yè)設備數(shù)據(jù)采集系統(tǒng) [J].計算機科學,2020,47(S2):609-614.
[9] 王博遠,梁子陽,劉雪萌,等.基于Telegraf+InfluxDB+Grafana搭建長輸供熱系統(tǒng)的監(jiān)控平臺研究 [J].中國設備工程,2021(22):177-178.
作者簡介:倪昱(1980.06—),男,漢族,湖南長沙人,高級工程師,碩士,研究方向:海洋裝備信息系統(tǒng)、深海智能作業(yè)操控技術(shù)等;鄭志恒(1991.09—),男,漢族,江蘇徐州人,工程師,碩士,研究方向:智能作業(yè)操控技術(shù)。
收稿日期:2022-12-28
基金項目:海南省重大科技計劃項目(ZDKJ2019002)