基于MongoDB的海量电能质量数据存储方案设计与实现

2015-02-22 04:56张明罗云峰
常州工学院学报 2015年3期
关键词:电能质量

张明,罗云峰

(华中科技大学自动化学院,湖北武汉430074)



基于MongoDB的海量电能质量数据存储方案设计与实现

张明,罗云峰

(华中科技大学自动化学院,湖北武汉430074)

电能质量监测系统是发现和解决电能质量问题的重要手段和工具。近年来,我国部分省市开展了电能质量监测系统的建设工作,实现了电能质量的在线监测,这些系统大部分是基于关系型数据库建立的[1]。电能质量的实时监测会产生大量的数据,随着智能电网建设进程的加快,监测节点不断增多,数据采集频率不断提升,电能质量数据显现海量化趋势。海量的电能质量数据,对系统的数据存储、查询以及扩展性等方面提出了更高的要求。

为了满足海量数据的存储和访问需求,人们提出了NoSQL数据库系统,采用更加灵活的存储模式管理数据,并打破了数据模式的限制,大幅提升了数据库的读写性能。NoSQL自概念提出就得到了迅猛发展,而在众多的NoSQL数据库中,MongoDB一经推出,便成为了该领域的一大热门,在行业中得到了广泛的应用,创造了巨大的研究和应用价值[2-3]。

1MongoDB概述

MongoDB是用C++语言实现的面向文档存储的非关系型数据库,文档是其存储数据的基本单元,类似于关系型数据库数据表中的一行[4]。文档采用BSON(binary serialized document format)格式存储数据,方便灵活,可以随意地添加和修改字段信息,可以支持基础数据类型和复杂的数据类型,还可以实现数据类型的嵌套,这在关系型数据库中是难以做到的。MongoDB还具有数据库自动分片功能,即将数据库中的集合数据按照一定的规则划分为若干小块,这样可以方便快速地实现数据库的水平扩展。

和关系型数据库相比,MongoDB有着许多优点,包括灵活自由的存储模式、丰富的数据类型支持、完全的索引支持、丰富的语言和平台支持、完善的数据复制和故障恢复机制以及良好的扩展性,能够为海量电能质量数据的管理提供良好的平台支撑。

2数据存储方案设计与实现

2.1 总体架构

本文提出的基于MongoDB的海量电能质量数据存储方案的总体架构如图1所示。

图1 方案总体架构

数据接口服务是连接电能质量监测终端、MongoDB数据库以及终端用户的枢纽,它接收来自监测终端的电能质量数据,将数据存储到MongoDB数据库中,同时也为电能质量监测管理中心以及上层电能质量监测管理中心的用户提供数据查询与管理服务,这些服务均是通过数据接口的方式发布,可以供监测中心的客户端程序调用。MongoDB数据库主要实现电能质量数据的存储与查询,根据电能质量数据的内容建立索引以满足电能质量数据的快速查询需求,并通过自动分片技术和复本集配置实现高扩展性的数据集群服务以适应电能质量数据的不断增长。

2.2 MongoDB集群的搭建

为了充分利用服务器资源,这里选择2台配置相同的机器做服务器,1台作为主节点,负责电能质量数据的存储,另1台作为副本节点和仲裁节点,其中副本节点负责电能质量数据的查询,而仲裁节点负责在主节点不能正常工作之后选举新的主节点,本身并不存储数据。

主节点、副本节点以及仲裁节点分别包括3个分片shard、1个配置节点config和1个路由mongos。整个MongoDB数据库集群的配置如图2所示。

图2 MongoDB数据库集群配置

下面详细描述MongoDB数据库的配置过程。

①配置分片和副本集。对于每1组分片,其配置过程基本是一样的。下面以shard1-1为例,其配置命令如下。

mongod --dbpath d:/pqdata/data1 --port 20002 --logpath d:/pqdata/log/data1.log --logappend --shardsvr --replSet shard1 --rest --oplogSize 100 --install

②初始化副本集。每一组副本集的初始化操作基本一致,下面是在主节点上初始化副本集的操作命令,其中arbiterOnly参数指定了仲裁节点。

config={_id:′shard1′,members:[{_id:0,host:′172.16.122.1:20002′},{_id:1,host:′172.16.122.2:20002′},{_id:2,host:′172.16.122.2:21002′,arbiterOnly:true}]};rs.initiate(config)

③启动3个配置节点,以配置节点1为例。

mongod --configsvr --logpath d:/pqdata/log/configsvr/config1.log --logappend --dbpath d:/pqdata/data1/configsvr --port 20001 --shardsvr

④启动3个路由节点,以路由节点1为例。

mongos --configdb 172.16.122.1:20001,172.16.122.2:20001,172.16.122.2:21001 --logpath d:/pqdata/log/mongos.log --logappend --port 20000

⑤添加分片到集群。以分片1为例,在主节点命令窗口中连接路由,输入如下命令。

db.runCommand({addshard:″shard1/172.16.122.1:20002,172.16.122.2:20002,172.16.122.2:21002″,name:″shard1″})

⑥指定分片规则并激活。要对1个集合的进行分片,还需要指定分片规则并且激活。下面以foo数据库的bar集合为例。在节点1上连接路由,输入如下命令。

db.runCommand({shardcollection:″foo.bar″,key:{id:1}})

db.runCommand({enablesharding:″foo″});

2.3 数据接口设计与实现

数据接口服务是一个中间层次的应用程序,为了构建一套跨平台的通用数据接口方案,本方案首先将数据库的通用操作进行封装。

图3 通用操作UML类图

DBManager是MongoDB的通用操作类,提供了数据库连接、关闭、获取集合、添加数据、批量添加数据、删除数据、批量删除数据、获取数据、编辑数据以及查询数据这些基本操作,如图3所示。数据接口采用JSON(JavaScript Object Notation)作为数据传输格式,并且符合Rest的设计思想。JSON是由Douglas Crockford提出并创造的数据交换格式,并且得到了许多企业和开发者的支持[5]。JSON格式简单,减少了数据的冗长性,可提高数据的传输效率,是实现跨平台数据交换的理想数据格式[6]。

REST(Representational State Transfer)最早是由Roy Feilding[7]在其博士论文中提出来的,它描述了Web系统体系架构的约束条件和原则,强调了Web应用的简单性和资源性。每种资源对应一个特定的URI(Uniform Resource Identifier,即统一资源定位符),客户端通过GET(获取)、POST(添加)、PUT(编辑)、DELETE(删除)这4个动作来操作资源。采用RESTful架构,可以开发出更容易使用、交互性更好、伸缩性强的Web服务[8]。以电能质量基础数据为例,其接口设计如表1所示。这些接口都有特定的URI,面向的都是资源,而非功能。通过对资源传递某种动作,来实现需要的功能,而具体功能的实现逻辑,都在DBManager通用操作类的基础上实现的。

例如对电能质量基础数据来说,通过向”/pqdata”接口传递POST动作和数据对象,即可实现电能质量基础数据的入库。

表1 电能质量基础数据接口

3方案测试与分析

本文对基于MongoDB、开源关系型数据库MySQL以及商业关系型数据库SQL Server的存储方案的数据读写性能进行测试。

选用2种配置的机器(其中机器1的性能比机器2好),分别按照20、50、100、200、500、1 000万条的数据规模对3个测试方案进行数据存储和查询测试。测试结果如图4所示。

图4 各方案测试对比图

由实验结果可知,在不同的机器上MongoDB在数据存储和查询上都体现出了较好的性能。随着数据规模的增大,这种优势越明显,即使在配置较差的机器2上,也能达到配置较高的机器1上的MySQL和SQL Server相当甚至更好的性能。这表明基于MongoDB的数据存储方案能够更充分地利用计算机资源,提供更好数据存储和查询功能。

4结语

随着智能电网建设进程的加快,电能质量监测点不断增多,采样频率不断提高,电能质量监测数据呈现海量化趋势。现有的大部分电能质量监测系统是基于关系型数据库建立的,难以满足海量数据的存储和访问需求。

摘要:在研究非关系型数据库MongoDB的基础上,设计实现了基于MongoDB的海量电能质量数据存储方案,并与基于关系型数据库的存储方案进行了性能比较测试。测试结果表明:该存储方案具有更好的数据存储和查询性能,可为海量电能质量数据的存储与处理提供借鉴。

关键词:电能质量;海量数据;MongoDB;数据存储方案

Design and Implementation of Massive Power Quality Data Storage Scheme Based on MongoDBZHANG Ming,LUO Yunfeng

(School of Automation,Huazhong University of Science and Technology,Wuhan 430074)

Abstract:Based on a study of the NoSQL database MongoDB,this paper designed and implemented a massive power quality data storage scheme,and compared its performance with relational database-based storage scheme.The results show that the proposed storage scheme has better data storage and query performance,which can provide reference for massive power quality data storage and processing.

Key words:power quality;massive data;MongoDB;data storage scheme

中图分类号:TP392

文献标志码:A

文章编号:1671-0436(2015)03-0023-04

作者简介:张明(1989—),男,硕士研究生。

收稿日期:2015-04-05

doi:10.3969/j.issn.1671-0436.2015.03.006

猜你喜欢
电能质量
分布式电源电能质量综合评估方法
电能质量对发电厂安全运行的影响分析及解决方法
分布式电源接入对配电网电能质量影响的研究
基于电子电力变压器的配电系统电能质量控制
基于支持向量回归机的电能质量评估
牵引变电所无功补偿研究
台区低电压的防治对策
新能源电网电能质量管理系统设计
浅谈直流配电系统技术分析及设计构想