杜 楚,彭会湘,陈 勇
(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
以文档结构存储海量卫星遥测数据
杜 楚,彭会湘,陈 勇
(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
通过对卫星遥测数据的分析与挖掘,可以有效地进行卫星故障诊断、卫星参数异常变化预测以及提升卫星运行的可靠性。针对无法在海量卫星遥测数据中进行高效储存、检索的问题,提出了利用NoSQL数据库MongoDB以文档的结构形式存储卫星遥测数据。实验结果表明,相对于传统的SQL数据库,此方法可以有效地减少数据冗余并提高查询效率。
卫星遥测数据;NoSQL数据库;MongoDB;文档存储结构
卫星遥测数据是掌握卫星在轨运行状态的重要手段,每个卫星的遥测数据都包含电流、电压和温度等上千个参数,这些参数的模拟量或数字量可以反映出卫星的工作状态或空间环境状态[1]。因此对卫星遥测数据的分析以及数据挖掘工作,对卫星异常检测、故障检测以及寿命预测等研究具有重要意义[2]。卫星遥测数据密度大、涉及的参数范围广[3],而目前对卫星遥测数据的存储多基于传统的关系数据库(RBDMS),这种存储方式的数据冗余大、查询效率低,严重影响了后续对卫星遥测数据的分析与数据挖掘工作,因此需要一种新的存储方式来解决这些问题。根据卫星遥测数据的特点,设计了一种以时间为索引的文档结构,将遥测数据以文档的形式存储在NoSQL数据库(非关系数据库)MongoDB中,有效地解决了关系数据库存储卫星遥测数据冗余过大、查询效率低的问题。
1.1 NoSQL数据库
NoSQL数据库是非关系型数据库系统的总称,是指不使用SQL语言的数据库,这是其与传统RBDMS最明显的不同[4]。在大数据时代的背景下,面对数据量、分析量以及数据种类快速增长的现状,传统的RDBMS性能瓶颈频繁出现,单机的处理能力已经无法满足日益增长的数据处理需求,无论纵向扩展或是向外扩展都面临较多的限制与较高的技术成本[5]。NoSQL数据库作为新兴数据库系统,由于其具有处理海量数据的能力、非关系型、分布式、开源和横向扩展等特点,受到各大IT公司的追捧。相对于RDBMS,NoSQL数据库在海量数据存取上具有巨大的性能优势。NoSQL数据库根据其存储模型的区别,可以分为键值模型、列式模型、面向文档的模型以及图形模型[6],而MongoDB数据库是属于面向文档的NoSQL数据库[7]。
1.2 MongoDB数据库
MongoDB是一个高性能、开源、可扩展的文档型数据库。MongoDB的文档的存储模型是一种介于键值存储模型与关系数据库表之间的存储模型,由数据库(database)、集合(collection)和文档(document)组成,与RDBMS的结构有简单的对应关系,如图1所示。MongoDB中的文档采用类似于JSON语言的BSON语言,是一种理想的数据交换语言[8]。BSON以键值对的形式存储每一个集合中的文档,每个文档有一个字符串类型可以唯一地对其进行标识,该唯一标识的属性为“_id”[9]。其查询语言类似于面向对象的查询语言,可以实现关系数据库单表查询的绝大部分功能,且支持对数据建立索引[10]。
图1 MongoDB与RDBMS数据库结构对应关系
MongoDB的基本构架是建立在Mongos、Shard、Config Server和Replica Set四类组件之上[11]:① Mongos是数据库集群请求的入口,所有的请求都通过Mongos进行协调,它负责把对应的数据请求转发到对应的Shard服务器上;② Shard是分片,单个节点处理能力有限,分布式存储环境下采用分片机制可以将一个完整的数据按照一定的顺序进行分割,分别存储到不同的分片中,数据读写在多个节点上同时进行,以提高数据存取速度;③ Config Server是配置服务器,存储所有数据库元信息(路由、分片)的重要配置信息,Mongos第1次启动或者关掉重启就会从Config Server加载配置信息,此后如果配置服务器信息变化会通知到所有的Mongos更新自己的状态;④ Replica Set是副本集,由分布在不同机器上的一组Mongod进程组成,通常一组包括3台Mongod进程,其中有1台是主(primary)节点,另外2台是从(secondary)节点,它们之间遵循主从模式开展工作。
一个双分片三备份的MongoDB组织结构如图2所示。其中,Mongos进程是整个数据库的入口与请求转发路由;3个Config是服务器的配置信息;Shard11、Shard12和Shard13这3个进程组成一个副本集,提供分片1的功能,分片1保存着所有数据中一半的数据,而Shard11、Shard12和Shard13这3个分本集数据内容相同;同理,Shard21、Shard22和Shard23这3个进程组成一个副本集,提供分片2的功能。
图2 MongoDB数据库组织结构
卫星遥测数据在关系数据库中以记录的方式存储,每一条记录代表一个时刻产生的一个参数的数值及其相关信息,包括:ID、参数编号(CSBH)、处理结果(CLJG)、卫星代号(WXDH)、地面站代号(DMZDH)、超限标志(CXBZ)和数据时间(SJSJ)。若在同一时刻产生了6个参数的数据,那么这些数据在关系数据库表中的存储形式如表1所示。
表1 卫星遥测数据在关系数据库中的存储方式
从表1中可以看出,WXDH、DMZDH和SJSJ这3个字段的信息为冗余存储,随着卫星遥测数据的不断产生,数据表的记录数也快速增长,致使查询操作缓慢,制约了对卫星遥测数据的分析以及数据挖掘工作。
将同样的数据以文档的形式存入MongoDB则需要依据卫星遥测数据的特点,设计合适的文档结构,达到在减少数据冗余的同时记录完整数据的目的。在MongoDB的文档结构中,“_id”是唯一标识该文档的属性,将数据时间作为文档的“_id”数据项表示该文档,就形成了以数据时间为索引的文档。卫星代号、地面站代号和此时刻记录的每一个卫星参数都作为文档的数据项保存在文档内,而卫星参数的其他信息,如处理结果和超限标志等信息则作为卫星参数的嵌套数据项保存。依据此设计将表1中的6条数据写成文档,如下所示:
{
“_id”:“24-10月-10 12.32.14.205000 下午”,
“WXDH”:“XX”,
“DMZDH”:“YY”,
“01”:{ “ID”:6237,
“CLJG”:1.2,
“CXBZ”:0},
…
“06”:{ “ID”:6242, “CLJG”:2.98, “CXBZ”:1}
}
文档完整地记录了6个参数数据及其相关信息,且没有数据冗余存储。同时,文档在语义上所表达的意义为:“该时刻卫星产生的所有参数数据及其相关信息”。
3.1 实验环境
实验环境如表2所示。
表2 实验环境
MongoDB部署在3台台式机组成的集群上,部署模式采用两分片三副本集的方式;Oracle数据库是技术成熟、应用广泛的数据库系统,作为本文实验的对比数据库。对比实验1的数据为同一时间段内同一卫星产生的遥测数据,数据在Oracle数据库中存储的记录数为6 100万条,在MongoDB中对应的文档数为810万个;对比实验2的数据是在实验1的基础上扩大了时间范围,数据在Oracle数据库中存储的记录数为1.22亿条,在MongoDB中对应的文档数为1 620万个。
3.2 对比实验
由于卫星遥测数据记录的是卫星的运行状态,数据不会发生更改,因此对比试验着重于2个存储模式在查询上的效率对比。实验逐渐增加查询的复杂程度,计时由发起查询命令开始至返回结果集为止。查询语句的限制条件分为4种:限定参数、限定参数与值域、限定参数与时间范围,以及限定参数、时间范围与值域。返回结果分为4种:以处理结果字段排序、以时间字段排序、返回最大处理结果和返回最小处理结果。因此,每个对比实验形成16组测试,在均建立索引的条件下分别测试文档存储与记录存储2种模式,对比实验结果如图3和图4所示。
图3 对比实验1结果
图4 对比实验2结果
图3和图4中纵轴代表语句执行的时间,从对比实验结果中可以得出:在查询测试中, MongoDB中以文档存储的模式的效率大幅领先Oracle中以记录存储的模式;对比实验2在数据量增长1倍的情况下,文档存储对数据量的增长不敏感,而记录存储受数据量影响较大。
简述了卫星遥测数据在保障卫星正常运行等方面的重要作用,指出了现有的关系数据库中以记录方式存储海量卫星遥测数据的数据冗余以及查询效率问题严重制约了卫星遥测数据的分析与数据挖掘工作。设计了一个文档结构存储卫星遥测数据,并将同样的数据分别以文档与记录的方式存储,基于MongoDB数据库与Oracle数据库进行对比实验。实验结果表明,以文档存储的模式在查询效率上大幅领先以记录方式存储的模式,证明了以文档方式存储海量卫星遥测数据可以有效地减少数据冗余并提高查询效率。同时,MongoDB数据库两分片三备份的模式不需要额外代价管理维护负载平衡与数据备份。
[1] 董 房,刘 洋.一种卫星遥测在线状态监测及分析系统的设计[J].电子科学技术,2015,2(5):542-546.
[2] 刘海芳.航天卫星遥测数据管理与应用系统设计过程控制方法研究[J].计算机测量与控制,2015,23(2):443-445.
[3] 杨 亭,常 霞.卫星遥测数据处理软件的Excel VBA实现[J].计算机测量与控制,2014,22(8):2 677-2 691.
[4] 白长清,刘 敏.MongoDB在气象传感器数据处理中的应用[J].软件,2015,36(11):34-37.
[5] 李冯筱,罗高松.NoSQL理论体系及应用[J].电信科学,2012(12):23-30.
[6] 李 青.基于NoSQL的大数据处理研究[D].西安:西安电子科技大学,2014.
[7] 席晓筱,詹舒波.MongoDB在呼叫中心系统中的应用[J].软件,2012,33(11):116-117.
[8] 梁 海.MongoDB数据库中Sharding技术应用研究[J].计算机技术与发展,2014,24(7):60-62.
[9] 贺建英.大数据下MongoDB数据库档案文档存储去重研究[J].现代电子技术,2015,38(16):51-55.
[10] 张 刚,孙 涌.基于MongoDB的BESIII分布式计算记账系统的研究与实现[J].计算机应用与软件,2015,32(9):62-67.
[11] 夏秀峰,曾 喆.PDM数据向MongoDB迁移的设计实现[J].现代计算机,2016,2(2):87-92.
杜 楚 男,(1987—),博士,工程师。主要研究方向:航天地面应用。
彭会湘 男,(1973—),研究员。主要研究方向:航天地面应用、地理信息系统。
Massive Satellite Telemetry Data Storage Based on Document Structure
DU Chu,PENG Hui-xiang,CHEN Yong
(The54thResearchInstituteofCETC,ShijiazhuangHebei050081,China)
The satellite fault diagnosis,satellite parameter abnormal change forecasting and satellite reliability improvement can be effectively performed based on analysis and mining of satellite telemetry data.It is difficult to implement high-efficiency storage and retrieval of massive satellite telemetry data.For solving this problem,this paper proposes a method,which uses NoSQL database MongoDB to store satellite telemetry data based on document structure.The experiment results show this method can effectively decrease data redundancy and improve inquiry efficiency compared with SQL database.
satellite telemetry data;NoSQL database;MongoDB;document storage structure
10.3969/j.issn.1003-3106.2017.01.11
杜 楚,彭会湘,陈 勇.以文档结构存储海量卫星遥测数据[J].无线电工程,2017,47(1):46-48,75.
2016-11-02
国家部委基金资助项目。
V55
A
1003-3106(2017)01-0046-03