APP下载

基于时序数据库的海洋装备监控数据存储系统

2023-08-01倪昱郑志恒

现代信息科技 2023年11期

倪昱 郑志恒

摘  要:目前在海洋裝备上通常使用关系数据库存储海量监控数据,存在空间占用大、查询性能差的问题。文章提出了基于时序数据库的海洋装备监控数据存储解决方案,并基于国产数据库TDEngine完成了系统工程实现,实现了监控数据的自动建表、自动存储以及快速可视化。经测试表明,该系统的数据压缩和查询性能相比于传统关系型数据库具有明显优势,为解决海洋装备海量监控数据存储的难题提供了良好的解决方法。

关键词:时序数据库;监控数据存储;海洋装备;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  引  言

随着计算机软硬件技术的飞速发展,监控系统在海洋装备中得到了更加广泛的应用。对于船舶、载人潜器等有人装备,监控数据提供了运行状态分析、故障判断的有力手段;对于无人艇、水下机器人等无人装备,监控数据提供了自主决策控制的依据。

为了对历史数据进行分析查看,需要实现监控数据的存储。目前对于海洋装备的监控数据存储,一般采用MySQL、Oracle等关系数据库,然而监控历史数据是高频次采集的时序数据,使用关系数据库存储会带来以下问题:

1)存储空间占用大。海洋装备中的监控数据测点数量多,采样频率高,需要保存的时间周期长,因此数据量大。因为关系数据库的压缩算法没有针对时序数据进行优化,所以在通常的磁盘容量很难满足上述海量数据的存储需求。

2)查询性能差。海量数据检索对数据库的查询性能要求较高。关系数据库的索引算法同样没有针对时序数据进行优化,随着存储空间的不断增长,难以获得满意的查询性能。

针对以上问题,本文提出了基于时序数据库的海洋装备监控数据存储系统方案,完成了系统的方案设计和工程实现,并对系统性能进行了测试分析。

1  海洋装备监控数据存储现状

浙江大学先进控制研究所研制了“船用柴油机智能报警监控系统”[1],该系统采用现场级、集控室级和驾驶室级三层网络控制结构,各层之间使用CAN总线协议进行通信,实现了快速数据采集、记录、报警、查询、显示等功能以及对柴油机起动、换向、调速的控制。该系统通过Oralce关系数据库存储柴油机转速、燃油进机压力、燃油进机温度、主轴瓦温度、滑油进机压力、滑油进机温度、滑油出机温度等柴油机报警监控数据。

大连海事大学研制了“基于OPC技术的船舶机舱数据采集与监测系统”[2],该系统由位于底层的状态数据采集卡、中间层OPC机舱数据访问服务器、上层OPC机舱监测系统三层结构组成。上层OPC机舱监测客户端负责将从OPC机舱数据访问服务器读取的各个机舱设备的状态数据,通过Access关系数据库实现监控状态数据的存储。

中国海洋大学研制了“基于MOOS的AUV的数据采集和监控系统”[3]。该系统采用模块化、分布式的设计方案,宏观上把AUV分为四大系统模块:中央控制系统、同时定位和地图构建系统、数据采集和保存分析系统、底层动力驱动和控制系统。其数据采集和保存分析系统采集各传感器和AUV舱内参数信息,通过文件形式进行监控数据存储。

海军研究院研制了“舰船电磁环境数据库”[4],在分析国内外舰船电磁环境极限值的基础上,以设计结构模块及运算规则,动态生成舰船不同区域分频段的场强极限值,为电磁辐射环境下舰面作业安全提供数据支撑。该系统使用MySQL关系数据库进行基础数据存储,基础数据分为实测数据、仿真数据和理论数据三种类型,实测数据来源于实船或实装测试结果,仿真数据来源于舰船模型数值仿真,理论计算数据来源于依据电磁场理论的估算结果。

以上海洋装备的监控系统都采用关系数据库或者文件进行数据存储。

2  系统设计

2.1  时序数据库

海洋装备监控数据主要是海量的时序数据,实际场景中很少有更新和删除操作,查询分析主要基于时间序列和信号名称。时序数据库按时间序列来存储实时变化的数据,与传统的关系数据库相比,其优势是通过数据压缩算法来减少存储空间占用,同时通过数据索引算法实现海量数据的快速查询和访问。

2.1.1  数据压缩算法

时序数据的数据压缩算法通常可分为两类:有损压缩算法和无损压缩算法。有损压缩算法主要是线性拟合算法,压缩效率更高,但不适用于实时监控场景下的问题排查。主流的时序数据库一般采用无损压缩算法,最常用的是基于快速浮点数据压缩的累积数据批处理压缩算法,如Simple8b、PforDelta等[5,6],在不丢失数据的情况下,同时保证了压缩率。

2.1.2  数据索引算法

索引是数据库执行查询的前提,也是提升查询性能的基础。索引算法的关键是数据空间的划分方法,关系数据库一般直接在一维或二维空间的分类划分实现数据索引。而时序数据库通常采用基于R-tree的高维度空间索引算法[7],并通过小波变换等方法完成时序变换,对于时序数据通常能明显提升查询性能。

2.2  数据库选型

目前最常用的时序数据库有InfluxDB、KDB+、OpenTSDB等。在系统设计时没有选用这些国外产品,而是选用了国产时序数据库TDEngine,主要有以下三个原因。

1)TDEngine是国产开源软件,更满足舰船等军用海洋装备自主可控的需求。

2)TDEngine支持Arm32处理器架构,可运行在嵌入式开发板上,满足水下机器人等小型海洋装备的需求。

3)TDEngine创新性地使用单表存储单个采集点数据,同时利用超级表进行高效聚合,相比InfluxDB等主流产品进一步提升了数据的写入和查询速度,同时也大幅提高了数据压缩效率。

2.3  系统架构

整个系统主要包括数据采集层、数据存储层、数据展示层3层,整体架构如图1所示。

数据采集层负责监控数据的采集,海洋装备常常由航行推进系统、电力系统、辅机系统、通导系统等子系统等组成,需采集各类机电设备、传感器的数据。系统使用OPC UA规范进行标准化的监控数据采集[8],各子系统尽量选用支持OPC UA规范的PLC控制器,对于不支持的子系统或设备,则需要开发OPC UA服务软件实现数据采集,或者通过支持OPC UA的智能网关硬件实现数据采集。

数据存储层完成监控数据的存储。开发数据存储服务程序,读取各子系统OPC UA服务采集的监控数据,然后将数据批量写入到TDEngine时序数据库。

数据展示层负责存储监控数据的可视化。Grafana是时序数据库可视化工具[9],通过Grafana定制的数据看板,生成所需的图表视图,提供监控应用所需的数据展示界面。数据展示界面通过浏览器访问,支持权限控制,提供不同权限用户不同的数据视图,并支持电脑、手机、Pad等多端设备访问。

不同于时序数据库中常用的单列模型,为了进一步提升数据写入和存储效率,本系统采用了基于TDEngine的多列模型,并使用超级表加普通表的数据库结构设计。多列模型指的是一个数据采集点同时采集的多个数据作为不同列放在一张表中,例如ROV推进器A的转速、温度、电流、电压等多个数据作为普通表推进器A的多个列。每一种类型的数据采集点建立一张超级表,与该类型各普通表关联,例如ROV推进器类型数据建立超级表,关联到8个推进器的普通表。基于这种数据库结构设计,用户可以根据静态信息进行多维度聚合查询,更好更快地进行监控数据的统计分析。

3  系统实现

3.1  数据存储服务

数据存储服务是本系统中最关键的功能模块,其实现可以分为三部分。

3.1.1  数据读取

读取数据采集层中各OPC UA数据服务的数据。首先解析各OPC UA服务的信息模型,建立OPC object的层次结构以及和下属OPC value的对应关系;然后订阅各OPC UA服务中所有的OPC value的数据变化,将更新后的OPC value值读取到内存缓冲区。其中采集数据订阅更新周期、OPC UA服务地址等参数可以进行设置。

3.1.2  批量插入语句生成

時序数据库批量写入数据可大幅提升写入性能,因此不是每次采集数据更新时立刻写入数据库,而是每周期读取内存缓冲区OPC value最新值,生成一行插入语句,将一段时间内产生的多行批量插入语句保存到插入缓冲区。

3.1.3  数据写入

根据设置的插入缓冲区大小或者写入的周期,执行符合时序数据库行协议的批量插入语句,将数据写入TDEngine数据库,并清空插入缓冲区。其中TDEngine数据库信息、数据写入周期、插入缓冲区大小等参数可以进行设置。

数据库系统建立时通常需要手动建表,数据对象变化时,还需要进行表结构修改的繁杂操作。为避免建立、维护数据库表的手动操作,使用TDEngine的无模式写入方式进行数据写入,可自动生成和修改相应的数据库表。例如,无模式写入ROV导航系统惯导设备采集的位置、加速度、姿态等数据时,TDEngine可自动建表并根据数据类型自动建立相应字段,如图2所示。

3.2  数据可视化

系统使用Grafana实现监控数据可视化,Grafana通过RESTful接口访问TDEngine连接器服务进行数据查询。利用Grafana工具快速生成折线图、柱状图、表格等完成监控数据的可视化,以实际的应用场景为背景搭建不同的监控界面。例如ROV导航监控可创建位置、姿态等状态数据历史曲线,ROV推进器监控可创建各推进器转速、温度等状态历史曲线,如图3、图4所示。监控界面完成搭建后,可将其保存在Grafana的数据看板中,以便下次重复使用。

4  性能分析

4.1  存储空间占用测试

记录监控数据相应不同存储周期时存储空间的占用情况,将TDEngine与MySQL进行对比。如图5所示,结果表明,得益于数据压缩算法的优化,时序数据库TDEngine的存储空间占用远少于关系数据库MySQL,并且随着数据量的增加,数据压缩性能的优势更大。

4.2  查询性能测试

在不同的数据存储周期进行基于数据值的检索,将TDEngine与MySQL进行对比。如图6所示,结果表明,得益于TDEngin数据索引算法的优化,时序数据库TDEngine的查询性能明显优于关系数据库MySQL,并且随着数据量的增加,数据查询性能的优势更大。

5  结  论

本文研究和实现了基于时序数据库的海洋装备监控数据存储系统,该系统在时序数据库TDEngine和OPC UA数据协议的基础上,实现了数据存储服务,解决了海量监控数据使用关系数据库存储时空间占用大和查询性能差的问题,并通过Grafana工具解决了监控数据快速可视化的问题。本系统目前已经应用在中型作业级ROV上,后续将不断升级优化,在更多的海洋装备上得到应用。

参考文献:

[1] 吴卓成,黄文君.船用柴油机智能报警监控系统的设计 [J].中国造船,2009,50(3):146-150.

[2] 王诗文,张宁,沈智鹏,等.基于OPC技术的船舶机舱数据采集与监测系统 [J].大连海事大学学报,2014,40(3):73-78.

[3] 侯建钊,高菲,张东昆.基于MOOS的AUV的数据采集和监控系统 [J].现代电子技术,2014,37(20):130-133.

[4] 何纯全,汤仕平,施佳林.舰船电磁环境数据库的设计与实现 [J].装备环境工程,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].计算机研究与发展,2009,46(5):770-778.

[8] 禹鑫燚,殷慧武,施甜峰,等.基于OPC UA的工业设备数据采集系统 [J].计算机科学,2020,47(S2):609-614.

[9] 王博遠,梁子阳,刘雪萌,等.基于Telegraf+InfluxDB+Grafana搭建长输供热系统的监控平台研究 [J].中国设备工程,2021(22):177-178.

作者简介:倪昱(1980.06—),男,汉族,湖南长沙人,高级工程师,硕士,研究方向:海洋装备信息系统、深海智能作业操控技术等;郑志恒(1991.09—),男,汉族,江苏徐州人,工程师,硕士,研究方向:智能作业操控技术。

收稿日期:2022-12-28

基金项目:海南省重大科技计划项目(ZDKJ2019002)