一种海量电力设备快速检索服务的实现方法与流程

文档序号:13513156阅读:244来源:国知局
一种海量电力设备快速检索服务的实现方法与流程

本发明涉及一种海量电力设备快速检索服务的实现方法。



背景技术:

电力自动化系统管理母线、断路器、变压器等主网设备以及馈线、配变等配网设备,其中,电力自动化系统通过各种接线图(也称为画面)来表示电网结构,比如系统单线图表示主网的网架结构、配网联络图表示配网的网架结构、厂站单线图表示某个变电站的结构、馈线图表示某条馈线及其相关的配电设备的结构、厂站间隔图表示变电站内某个间隔,其中很多设备同时存在于不同的画面之中,比如系统单线图中的线路也同时存在于厂站单线图和厂站间隔图中。

在设备改名或者设备删除时,需要查找该设备是否在其他的画面中存在。目前常用的处理方法是遍历并解析所有的画面,并在这些画面中查找是否存在某个设备。这种方式对于一个变电站监控系统来说或许可行,因为变电站只存在一个厂站单线图和若干厂站间隔图,可以很快遍历完毕。但在网级一体化系统中,画面数量多达几千幅,设备数量达几十万个,如果通过逐幅画面遍历的方式查找某个设备会存在相当大的延迟,严重影响用户体验。



技术实现要素:

针对上述问题,本发明提供一种海量电力设备快速检索服务的实现方法,使得电力自动化系统中的各子系统可以通过调用检索服务快速检索海量电力设备,实现高效、快速的检索。

为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种海量电力设备快速检索服务的实现方法,包括如下步骤:

步骤1、读取上次画面文件扫描结果及其特征码列表;

步骤2、读取当前画面目录下的文件并生成对应的特征码;

步骤3、根据步骤1和步骤2的结果生成文件变化列表:包括增加的文件、删除的文件和修改的文件;

步骤4、根据文件变化列表更新电力设备对象索引:

401、读取上次电力设备对象索引文件并在内存中建立电力设备对象索引结构;

402、对于增加的文件:解析画面文件内容,并将其中的电力设备信息增加到索引中;对于删除的文件,从索引中删除该画面名对应的所有索引;对于修改的文件,先删除该画面名对应的所有索引,再解析画面文件内容,并将其中的电力设备信息增加到索引中;

403、保存电力设备对象索引文件;

步骤5、保存本次画面文件扫描结果及其特征码列表;

步骤6、当客户端以关键字以及关键字的类型发起检索服务时,索引服务端进行如下操作:

601、读取电力设备对象索引文件并在内存中建立电力设备对象索引结构;

602、根据关键字查找关键字字典获取该关键字对应的散列表;

603、查询散列表获取对象信息列表;

604、返回对象信息至客户端。

优选,按照设定的时间间隔定期重复步骤1-5。

优选,步骤1和步骤2中的特征码由md5算法生成。

优选,电力设备对象索引结构的关键字包括对象名、对象名拼音、对象id和画面名。

优选,对于内部系统,检索服务采用基于私有通信协议的tcp报文提供服务。

优选,对于外部系统,检索服务采用远程过程调用协议提供服务。

本发明的有益效果是:

通过本方法的实施,可以在电力自动化系统中调用检索服务,根据对象名、对象名拼音和对象id等关键字快速检索电力设备。

附图说明

图1为本发明所述画面文件变化监视流程图;

图2为本发明所述设备索引建立流程图;

图3为本发明所述设备索引结构示意图;

图4为本发明所述索引关键字字典树示例图;

图5为本发明所述设备检索时序图。

具体实施方式

下面结合附图和具体的实施例对本发明技术方案作进一步的详细描述,以使本领域的技术人员可以更好的理解本发明并能予以实施,但所举实施例不作为对本发明的限定。

如图1-5所示,一种海量电力设备快速检索服务的实现方法,包括如下步骤:

步骤1、读取上次画面文件扫描结果及其特征码列表;

步骤2、读取当前画面目录下的文件并生成对应的特征码;

步骤3、根据步骤1和步骤2的结果生成文件变化列表:包括增加的文件、删除的文件和修改的文件;

步骤4、根据文件变化列表更新电力设备对象索引;

步骤5、保存本次画面文件扫描结果及其特征码列表。

按照设定的时间间隔定期重复步骤1-5,上述步骤实现了画面文件变化的监视,其中,上一个循环中的步骤5的信息作为下一个循环步骤1中的信息。如图1所示,采用定时扫描画面文件目录的方式来监视画面文件的变化。画面文件的变化主要有三种情况:一是增、删、改画面内的电力设备,二是删除某一幅画面,三是新建某一幅画面。这三种情况均需对索引进行维护,对应到画面文件的变化就是画面文件的增加、删除和修改。

对于这三种变化,增加、删除都很明确,关键是画面文件修改的判断标准。md5作为一种被广泛使用的密码散列函数,可以产生出一个128位的散列值,用于确保信息传输完整一致。本发明采用画面文件的md5码来判断画面文件是否修改,即步骤1和步骤2中的特征码由md5算法生成。另外,为了记录上次扫描的情况,本发明会使用一个文件名及其md5码的列表,每次扫描完画面文件目录后跟前次扫描的列表对比,从而区分出画面文件的增加列表、删除列表和变化列表。

由于电力自动化系统中电力设备的数量非常巨大,如果单纯线性存储,必然不能满足快速检索的要求。本发明采用散列表的方式来存储关键字和对象信息的关联,另外由于存在根据对象名、对象名拼音、对象id和画面名来查找对象信息的需求,需要建立多种关键字跟对象信息的关联。

图2是本发明所述设备索引建立流程图,图3是对象索引结构的示意图。对象索引结构中关键字包括对象名、对象名拼音、对象id和画面名,关键字对应具体的对象条目,对象条目会对应一个或多个画面。通过这个索引,可以根据不同的关键字来迅速查找到其对应的对象条目。比如可以快速获取哪些画面包含该对象,某个画面包含哪些对象等,能满足电力自动化系统设备快速检索的要求。这种结构能够解决根据完整关键字来检索对象信息时的效率问题,但是在电力自动化系统中常常需要模糊匹配,比如根据关键字的某一部分来检索。这种情况下,如果关键字数量非常巨大,遍历关键字并进行字符串的匹配必然会耗费大量时间,检索算法的复杂度是o(n2)。为此本发明对关键字采用了字典来管理。最常用的字典就是排序数组,即关键字字典是一个已经按字母顺序排序好的数组,每次读取索引的时候只要将该数组载入内存,通过二分查找即可。这种方法查询时间复杂度为log(n),占用的空间大小是o(n*关键字长度)。排序数组的缺点是消耗内存,即需要完整存储每一个关键字,当关键字数目多达上千万时,占用的内存将不可接受。

考虑到查找效率和占用内存的平衡,本发明采用字典树(trie)来存储这些关键字,考虑到中文的特殊性,采用双数组字典树(doublearraytrie)来存储中文关键字。字典树又称单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。图4是一个设备拼音关键字的字典树示例,表示ycjx(砚崇甲线)和ycyx(砚崇乙线)。

具体的,电力设备索引的具体更新方法如下:

401、读取上次电力设备对象索引文件并在内存中建立电力设备对象索引结构;

402、对于增加的文件:解析画面文件内容,并将其中的电力设备信息增加到索引中;对于删除的文件,从索引中删除该画面名对应的所有索引;对于修改的文件,先删除该画面名对应的所有索引,再解析画面文件内容,并将其中的电力设备信息增加到索引中,即先删除再增加;

403、保存电力设备对象索引文件。

检索对象信息由客户端发起,客户端提供关键字以及关键字的类型(对象名、对象名拼音、对象id、画面名等),服务器端从索引中查找该关键字对应的对象信息并返回给客户端。设备检索的时序图如图5所示。

步骤6、当客户端以关键字以及关键字的类型发起检索服务时,索引服务端进行如下操作:

601、读取电力设备对象索引文件并在内存中建立电力设备对象索引结构;

602、根据关键字查找关键字字典获取该关键字对应的散列表;

603、查询散列表获取对象信息列表;

604、返回对象信息至客户端。

为了方便客户端使用,检索服务提供两种服务方式。一种用于内部系统直接访问的基于私有通信协议的tcp报文服务;二是用于为其它系统提供服务的跨语言的远程调用服务(rpc:远程过程调用协议)。

a)提供用于内部通信的tcp报文服务,客户端发送查询关键字及关键字类型的报文,服务端根据步骤6中的方式,返回该关键字相关的对象信息列表报文。

b)提供用于跨语言的rpc服务,不同语言客户端调用服务端提供的基于查询关键字及关键字类型的服务接口,获取该关键字相关的对象信息列表。

通过本方法的实施,可以在电力自动化系统中调用检索服务,根据对象名、对象名拼音和对象id等关键字快速检索电力设备。使得电力自动化系统可以在海量电力设备中快速、准确地检索到所需的设备。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或者等效流程变换,或者直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1