时序数据库技术在贵州地质灾害监测设备运行维护调度平台中的应用
2020-11-04张家勇刘黔云邓卫卫
张家勇,刘黔云,邓卫卫,龚 伟,张 楠,李 程,李 潇,胡 屿
(贵州省地质环境监测院,贵州 贵阳 550001)
0 引言
科技创新是提升地质灾害防治能力的永恒话题,地质灾害自动化监测是减灾防灾的主要手段之一。
贵州省地质环境监测院在组织实施贵州省提升地质灾害监测预警科技能力行动方案重大专项的过程中,通过运用传感器、物联网、无线通信等高科技手段,全面提升地质灾害监测预警科技能力,打造“人防+技防”地质灾害专业防治体系。贵州省地质环境监测院在地质灾害监测预警和运行维护调度工作经验的基础上,对地质灾害监测预警物联网运维保障工作进行了进一步的发展和创新,建立了贵州省地质灾害监测设备运行维护调度平台。
平台经历了自动化监测示范点建设到大规模应用,设备数量和监测实时数据呈现几何级增长。平台面临着高并发、海量存储、高效访问的技术瓶颈。本文将重点介绍时序数据库在运行维护调度平台中的应用,旨在解决贵州省地质灾害监测设备运行维护调度平台中传统的数据库所遇到的问题并提出有效的解决方案。
1 运维调度平台
贵州省地质灾害监测设备运行维护调度平台基于B/S模式,运行于Internet互联网络环境。基于WEB的数据检索、数据可视化和空间可视化、数据分析、流程管理等功能集于一身,解决了隐患点信息以及地质灾害监测信息的检索、可视化、统计查询、实时监控、预警分析、设备运行维护调度等问题,从而达到地质灾害设备实时监控和保障野外监测设备稳定运行的目的,为防灾减灾做出指导和支持[1](图1)。
图1 贵州省地质灾害监测设备运行维护调度平台逻辑架构图Fig.1 Guizhou Povince gological disaster monitoring euipment operation maintenance sheduling platform logical structure model
1.1 系统架构
1.1.1数据服务层
主要用来管理、存储平台业务数据以及自动化监测数据,为业务平台提供数据支撑。其中自动化监测数据提供两种接入方式:第一种方式是按照平台的数据协议标准,根据平台提供的服务接口,向平台推送数据,适用于全新接入的设备。第二种方式是平台数据同步服务,通过数据同步定期将设备的数据同步到平台,适用于已经建设的监测设备进行数据集成[2]。
1.1.2监测预警平台层
主要用来提供基础软件服务,监测预警平台层,分别包含物联网云平台(提供设备注册、设备接入、指令下发、监测数据存储等基础的物联网服务)、地图服务平台、消息中间件(提供消息队列服务等)、短信平台(提供短信发送服务等)(提供基础地图服务)等公共组件及Web服务,是监测预警平台的核心,是业务应用的基础。
1.1.3业务应用层
面向平台用户,为用户提供信息管理,查询统计、分析,监测预警、设备运维管理等功能,将贵州省地质灾害监测设备运行维护调度业务成果以数据、图形等多种形式体现,为专业人员进行科学研究提供平台支撑,为管理人员决策、研判提供辅助支持。
1.2 关键问题分析
2018年7月运维调度平台上线运行,设备正常状态下每一小时自动上报一次,应急状态下每5秒自动上报一次数据。设备通过北斗每天上传一次数据。当时约有100个监测点、800余台监测设备。按照当前的设备数据和采集频率,从数据的并发读写、储存效率和访问性能来看,通过使用传统的结构化数据库是完全可以满足的。随着自动化监测项目的开展,到目前约2 500个监测点,13 000余台设备,平台每天要接收、下发和处理的数据量从之前的几万条到当前的几百万条,每天还会产生大量的消息和状态等过程数据,进入汛期时,每天的数据量可达上千万条。同时平台还要为统计、分析、运维管理等应用提供必要的数据支持。后期待建设的监测点还有1 300余处,在这种海量、高并发数据的现状下,传统的结构化实时监测数据库瓶颈越来越突出。
时序数据库是基于大数据技术,用于管理时间序列数据的专业化数据库。区别于传统的关系型数据库,时序数据库针对时间序列数据的存储、查询和展现进行了专门的优化,从而获得极高的数据压缩能力、极优的查询性能,特别适用于存储监测数据等物联网应用场景的数据[3]。
因此,我们提出使用时序数据库来替代传统结构化数库存储实时监测数据的解决方案。
2 基于时序数据库的解决方案
目前贵州省地质环境监测院用自动化监测设备通过两种方式上报数据:一种是通过第四代移动通讯方式(4G),一种是通过北斗通讯方式上报数据。这两种终端上传的实时数据和短报文都属于典型的时序数据,在一段时间内连续间隔上报采集数据。时序数据库很好的解决了物联网下的大数据存储和高并发等问题。本项目将选择InfoEarth ThingDB时序数据库来进行应用[4]。
时序数据库是按时间序列来存储实时变化的数据,库中按照“ 时标一值”的数据结构来存储。时序数据库的优势是通过有效压缩来存储高频变化的海量数据,同时还能实现对海量数据的快速访问。但时序数据库对数据模型的描述能力相对较弱,例如针对隐患点、监测点、设备信息等模型和网络结构,时序数据库就无法描述其复杂的层次结构关系。这时就需要考虑采用关系数据库,因此,运维调度平台采用时序数据库和关系数据库相结合,可充分发挥两种类型数据库各自的技术优势。时序数据通过服务接口的形式与运维调度平台进行集成[5](图2)。
图2 Infoearth ThingDB技术架构图Fig.2 Infoearth ThingDB technical structure model
2.1 时序数据库InfoEarth ThingDB介绍
InfoEarth ThingDB是面向物联网(ToT)海量监测数据存储、管理和调度设计的一个时间序列数据库,系统应用最新Go语言和NodeJS开发,无需任何外部依赖即可独立部署,支持Windows、Linux等操作系统。
InfoEarth ThingDB同时具有以下几个特点:
(1)极简架构:物联网系统往往需要严苛的运行环境,InfoEarth ThingDB只需要安装一个二级制文件,即可运行于Windows、Linux等系统,完全没有任何的外部依赖[6]。
(2)系统底层采用了基于NoSQL架构的存储引擎,提供极强的写能力以及高压缩率。
(3)数据接口:系统提供REST API读写、查询接口,以及SQL-Like的查询语言,使用方便。
(4)TimeSeries Index:对Tags会进行索引,提供高效的检索。
2.2 建立监测实时数据模型
(1) 设备模型
{
"id":设备编号,
"product_id":所属产品,
"device_sn":设备SN
"parent_did":主设备编号
“monitor_types”:监测类型
[{
"id":监测序号,(表示通道号、传感器编号)
"monitor_type_code":监测类型编码
"monitor_type_name":监测类型名称
"type_name":监测方法名称
"type_code":监测方法名称
}]
}
(2)监测数据模型
监测数据的模型见图1。
表1 监测实时数据模型Table 1 Monitor real-time data model
(3)设备状态模型
设备状态模型见图2。
表2 设备状态模型Table 2 Device status model
2.3 与运维调度平台集成
通过InfoEarth ThingDB提供的数据服务接口(OPenAPI)实现与运维调度平台的集成(表3)。
表3 接口清单Table 3 Interface listing
2.4 基于时序数据库的运维平台的性能分析
目前在原有业务体系基础之上,对系统技术方案整体升级改造之后,很好的解决之前系统卡顿、经常没有反应的问题,首页面加载时间控制在2 s以内,系统操作响应时间平均0.5 s。
为进一步精确的分析时序数据库其与关系型数据库之间的性能优势,分别从数据库读写性能、并发性、可扩展性几方面比较[7]。
(1)批量读写测试比较
分别在同一类型三个主机上安装Oracle 11、MySQL 5.7以及InfoEarth ThingDB 1.0,对其在不同数据量下数据读写完成响应时间测试,每条数据2个字段。多次测试获得平均结果见表4、图3、图4。
表4 不同数据库读写完成平均时间Table 4 Average read-write time for different databases 单位:s
图3 数据库写入对比图Fig.3 Database write contrast graph
图4 数据库读取对比图Fig.4 Database read contrast graph
从数据库写入完成相应时间来看,在数据量较小的情况下,MySQL与InfoEarth ThingDB要比Oracle要有优势;随数据量增大,Oracle 与MySQL性能接近,而InfoEarth ThingDB比二者性能高出接近一倍。数据库读取方面,InfoEarth ThingDB随数据量的增大响应时间依旧很短,性能远胜Oracle和MySQL。总体来说,InfoEarth ThingDB在简单、大量数据存储方面比Oracle与MySQL具有更大的性能优势[8]。
(2)数据库并发性测试
对以上三个数据并发性能测试,测试结果见表5。
表5 数据库并发测试数据表Table 5 Database concurrency tests tables
图5 数据库并发对比图Fig.5 Database concurrency comparison graph
单机数据库并发测试结果可以看出,在数据并发方面,InfoEarth ThingDB数据库性能要高于MySQL和Oracle,其并发性跟计算机的性能有直接关系,所以数据库之间的差距不太大。
(3)可扩展性
InfoEarth ThingDB数据存储非结构化,基于键值对,其数据结构不固定,每个元组可以更具自己的需求增加自己的键值对,从而实现模式自由、支持简单复制、横向扩展、简单API等。Oracle和MySQL属于关系型数据库,具有完整性约束,支持多表联合查询、视图、存储过程、触发器、索引等复杂查询,为了保证数据库的ACID,需要尽可能的按照要求的范式设计,从而难于横向扩展。
(4)结论
MySQL和Oracle在复杂业务处理方面具有得天独厚的优势,但是在数据监控业务的秒级数据采集、数据量庞大、快速响应等方面,InfoEarth ThingDB更具有优势,解决系统瞬时的查询和写入压力,用户体验更好。
3 实际应用
基于时序数据库的运维调度平台在实际应用中,得到有效的验证,运维调度平台实现贵州省地质灾害隐患点监测设备及监测数据的管理,监测设备预警管理以及设备运行维护管理,平台主要功能模块见图6。
图6 贵州省地质灾害监测设备运行维护调度平台功能结构图Fig.6 Guizhou Povince gological disaster monitoring euipment operation maintenance sheduling platform functional block diagram
(1)首页(一张图)
通过空间的信息展示方式,展示隐患点、监测点、监测设备的空间分布信息,提供基础的空间操作,包括地图切换、距离量算,空间分析等功能;同时在页面中也支持图表展示的方式,实时动态展示隐患点监测设备数据趋势、监测设备状态、设备预警信息等。
(2)隐患点排查
动态集成贵州省高位隐蔽性地质灾害隐患专业排查地质灾害数据采集系统。
(3)治理项目浏览
治理项目浏览功能用来对治理项目的详情进行查看,主要是项目状态、隐患类型、隐患等级、隐患规模等。
(4)监测管理
监测管理主要用来建立监测设备和地质灾害隐患点之间的关系,实现监测设备和地质灾害业务的对接,具体功能包括监测项目管理、监测点管理、钻孔信息管理、监测区域管理、设备维护管理、设备异常设置和监测设备总览。
(5)监测设备
监测设备主要用来管理设备的接入和设备的指令下发功能,包括监测设备总览、厂商管理、RTU信息管理、监测设备管理、监测设备列表、无线报警设备管理、监测数据浏览、国际编号生成、视频设备管理等功能。
(6)查询浏览
查询浏览包括监测设备浏览和监测设备查询,监测设备浏览以监测设备树与地图相结合的方式展示系统中所有的灾害点、监测点、监测设备分布情况,监测设备查询模块提供行政区划、灾害点名称、监测点名称等条件组合查询监测设备信息。
(7)统计分析
统计分析包括监测设备统计、设备状态统计、设备维护统计和监测周报等功能。
(8)预警分析
预警分析包括预警点、预警策略管理、综合曲线分析、降雨等值线、实时位移监测、预警等级等功能。
(9)值班管理
值班管理主要服务于汛期值班服务,通过大屏动态展示,实时监控,声音提示,方便值班人员实时了解监测设备状态变化状况,从而为监测预警工作提供辅助支撑。
(10)设备运维管理
设备运维管理主要是实现野外监测设备及设备运维过程的实时监控和过程管理、建立设备异常信息及时发现机制、野外设备运维人员及运维状态与设备运维管理人员双向信息通信、设备运维过程信息跟踪,保障野外监测设备稳定运行(图7)。
图7 监控一张图界面Fig.7 Monitor diagram interface
目前平台隐患点信息、监测设备数据和状态的实时展示、预警、设备运维等查询性能得到明显的提升,极大地提高了数据存储、查询、分析能力,为地质灾害监测预警和应急救援工作的顺利进行提供了更加稳固的保障。
4 结语
本文的分析表明,在贵州省地质灾害运行维护调度平台中使用时序数据库,可以很好的解决海量数据存储和高频次的数据访问问题。同时为该平台未来的功能扩展提供必要的功能支持。随着隐患点监控的力度增加,覆盖面更广,监测设备不断增加,运维数据也会大量增加,时序数据库将会在后期的功能扩展中得到更多更好的应用。