一种适用于电力设备大数据的数据库引擎的制作方法

文档序号:13804831阅读:167来源:国知局
本发明涉及一种数据库引擎,具体涉及一种适用于电力设备大数据的数据库引擎。
背景技术
::大数据(bigdata)可以通俗地理解为无法在一定时间内用传统数据库软件工具对其内容进行抓取、管理和处理的数据集合。鉴于大数据潜在的巨大影响,很多国家都将大数据视作战略资源,并将大数据研究提升为国家战略,涉及金融、电信、网络、零售、制造、医疗及科技领域。大数据在能源电力领域的应用属于起步阶段。2013年,中国电机工程学会发布了《中国电力大数据发展白皮书》,白皮书第一次提出了电力大数据的定义,并指出重塑电力核心价值和转变电力发展方式是中国电力大数据的两条核心主线。大数据的应用流程一般可分为数据获取和集成、数据解释和分析(数据解析)、分析结果展示等环节。其中,数据解析是重要环节。近期国内外研究采用映射-规约(大数据并行计算框架(mapreduce))和基于内存计算(spark)的并行大数据计算模型,重新设计和实现适用于大数据的挖掘算法。当前,在各类分析挖掘算法和子系统的信息融合分析中采用数据仓库基础构架(hive)技术已成为研究热点。数据仓库基础构架(hive)是基于hadoop平台的数据仓库,已经成为hadoop事实上的sql引擎标准。相较于大数据并行计算框架(mapreduce)、shark等方法,数据仓库基础构架(hive)将拥有更为广泛的用户基础以及对结构化查询语言(structuredquerylanguage,sql)语法更全面的支持。数据仓库基础构架(hive)仍主要依赖大数据并行计算框架(mapreduce)进行运行,所以随着年龄的上升,其在速度上已不能满足日益增长的数据要求。同时,随着电网规模的与日俱增,省级电网的输变电设备状态监测评价中心中的数据规模也急剧膨胀,浏览一个完整的省级电网企业输变电一次设备的各类数据集可能要花费几分到几小时,这已完全不适应智能电网的发展需求。鉴于hive相对于其他大数据组件虽然比较成熟和稳定,但由于其使用mapreduce作为后台计算引擎,导致hive的实时响应能力较差,不宜用于实时交互分析场景,无法满足电力大数据实时数据分析需求。所以有必要深入挖掘输变电一次设备数据的特征,设计并应用一种专门的高速、实时的数据库解析引擎。技术实现要素:为了解决上述问题,本发明提供了一种适用于电力设备大数据的数据库引擎,具体技术方案如下:一种适用于电力设备大数据的数据库引擎包括协调节点、工作节点;所述协调节点包括解析器、计划器、调度器;所述解析器、计划器、调度器依次连接,所述解析器用于解析客户端的查询请求中的任务并将解析的结果输入计划器,计划器用于将解析器输出的结果进行编排和优化,并将编排和优化的结果输入至调度器,所述调度器用于将任务调度到合适的工作节点;所述工作节点用于接收调度器调度的任务并在对应存储组件中解析、查询,并把查询结果返回至协调节点;所述协调节点用于将工作节点返回的查询结果进一步处理得到最终结果并返回给客户端。进一步,所述工作节点设置2个及以上。进一步,还包括连接器;所述连接器包括元数据获取接口、数据存储位置获取接口、数据获取接口;所述元数据获取接口用于获取数据结构和数据类型;所述数据存储位置获取接口用于获取所需数据的存储组件以及存储位置;所述数据获取接口用于针对具体的存储组件获取数据,并将所获取的数据转换为关系表;所述连接器与存储组件连接。进一步,所述数据库引擎针对不同的存储组件设置对应的连接器。进一步,所述客户端的查询请求由sql语句编写而成。进一步,所述解析器用于对客户端的查询请求的语法进行检查和分析客户端的查询请求包含的操作任务和数据源。本发明的有益效果为:本发明可以进行跨数据库中sql查询,使用户可以不必了解后台多种数据源的数据集成方式和数据的具体位置,而开发人员可将更多精力投入在应用处理而不是数据的管理上;业务上可以解决跨状态监测、状态评价等不同数据库的关联查询,提高应用开发效率;相比于传统的hive查询引擎,本发明使用内存计算,避免大量的io操作从而提高了数据处理速度;本发明解决了行业内缺少诊断故障类型和判断故障位置的应用局限,缩短了故障排查和抢修复电的响应时间,避免了酿成电力安全生产事件。率先实现了统一量测点与时标的数据视图,避免了因元数据结构和关系等导致数据表繁多的被动局面,极大地适应了海量结构化数据高并发、低时延的存储需求。创造性地提出了面向电力监控系统量测点时间序列数据的索引结构,打破了关系型数据库仅能进行单列索引的应用局限,极大地提升了检索和读写数据的效率。附图说明图1为本发明的结构示意图。具体实施方式为了更好的理解本发明,下面结合附图和具体实施例对本发明作进一步说明:如图1所示,一种适用于电力设备大数据的数据库引擎包括协调节点、工作节点;协调节点包括解析器、计划器、调度器;解析器、计划器、调度器依次连接,解析器用于对客户端的查询请求的语法进行检查和分析客户端的查询请求包含的操作任务和数据源、解析客户端的查询请求中的任务并将解析的结果输入计划器,计划器用于将解析器输出的结果进行编排和优化,并将编排和优化的结果输入至调度器,调度器用于将任务调度到合适的工作节点;工作节点用于接收调度器调度的任务并在对应存储组件中解析、查询,并把查询结果返回至协调节点;协调节点用于将工作节点返回的查询结果进一步处理得到最终结果并返回给客户端。工作节点设置3个。状态监测、状态评价、设备缺陷、检修计划、预防性试验、设备操作等大量输变电一次设备数据被存储于分布式文件系统(hdfs)之外的存储系统,例如:oralce、mysql、cassandra以及其他的存储系统存储组件中,而本发明设计了简单易用的数据存储的抽象层,满足在不同数据存储系统均可应用结构化查询语言(sql)进行解析。由于不同的存储组件对数据的访问方式不一样,本发明的一种适用于电力设备大数据的数据库引擎还包括连接器;连接器包括元数据获取接口、数据存储位置获取接口、数据获取接口;元数据获取接口用于获取数据结构和数据类型;数据存储位置获取接口用于获取所需数据的存储组件以及存储位置;数据获取接口用于针对具体的存储组件获取数据,并将所获取的数据转换为关系表;连接器与存储组件连接。本发明针对每种存储组件配置一个连接器。其中,客户端的查询请求由sql语句编写而成。存储组件包括hive、oracle、cassandra、fastar。下面对本发明提供的一种适用于电力设备大数据的数据库引擎的工作流程做进一步描述:(1)客户端向协调节点发起查询请求;(2)协调节点接收客户端发来的查询请求,解析器对客户端的查询请求进行语法检查;并分析客户端的查询请求包含的操作和数据源、分解查询请求中具体包含的任务,并将解析的结果输入计划器;(3)计划器根据解析器输出的结果将解析器解析出来包含的任务的执行顺序、执行参数进行编排和优化,并将编排和优化的结果输入至调度器;(4)调度器将任务调度到合适的工作节点;(5)工作节点接收调度器调度的任务并在对应存储组件中解析、查询,并把查询结果返回至协调节点;其中,工作节点在对应存储组件中查询、解析的步骤包括:1)工作节点若在对应存储组件中发现需查询解析的信息对象的关键字,则查询解析成功;并在停止针对对应存储组件的查询解析后,向协调节点反馈结果;2)工作节点若未在对应存储组件中发现需查询解析的信息对象的关键字,则查询解析失败;并在停止针对对应存储组件的查询解析后,向协调节点反馈结果;其中,协调节点接到工作节点的反馈结果后,选择执行对应的操作步骤:1)若协调节点接收到工作节点在对应存储组件中查询解析成功的反馈结果,则停止查询解析过程,并抽取需查询抽取对象的副本信息;2)若协调节点接收到工作节点在对应存储组件中查询解析失败的反馈结果,则继续查询其余存储组件中的信息对象,直至在全部存储组件中均反馈查询解析失败结果后,协调节点停止查询解析过程。(6)协调节点将工作节点返回的查询结果进一步处理得到最终结果并返回给客户端。下面以实际应用场景进一步说明本发明的工作流程,调度数据密度较高,且单个数据记录数据量较小,这样的时序数据通常存放在时序数据库中,同时在关系数据库的台账数据中存放着测点名称,时序数据库通常按测点管理数据,通过测点名称查询时序数据,下面语句的功能是查询x变电站的2017-01-0100:00:00到2017-02-0100:00:00的调度数据:selectt1.*fromfastar.default.data_tablet1wheret1.namein(selectpoint_namefromoradb11.oms.point_tabletwherestation_namelike'%x变电站%')andt1.time>2017-01-0100:00:00andt1.time<2017-02-0100:00:00(1)客户端将该sql语句所表示的查询请求发送至协调节点;(2)协调节点接收客户端发来的查询请求,解析器对客户端的sql语句的查询请求进行语法检查,并分析客户端的查询请求包含两个数据源:oradb11和fastar,并将查询请求按数据源分为3个任务,第一个任务是从orc数据库(oradb11)中查出测点名称,第二个任务是从时序数据库(fastar)中查询时序数据,第三个任务是将前两个任务的结果合并;(3)计划器根据解析器输出的结果将解析器解析出来包含的任务的执行顺序、执行参数进行编排和优化,并将编排和优化的结果输入至调度器;具体为:计划器对解析器分解出来的三个任务进行优化,发现第二个任务执行的结果集的大小依赖于第一个任务的执行结果,直接将这两个任务以并行的方式下发到相应的工作节点执行,会导致第二个任务将所有测点满足2017-01-0100:00:00andt1.time<2017-02-0100:00:00条件的数据返回,这将导致第二个任务返回大量没用的数据,从而导致系统响应变慢。于是计划器将第二个任务进行参数化,即将上面语句括号中的”selectpoint_namefromoradb11.oms.point_tabletwherestation_namelike‘%x变电站%’”部分变成第二个任务的参数,这个参数取值依赖于第一个任务的执行结果,并将第一个任务和第二个任务任务调度串行化,即先将第一个任务执行完再执行第二个任务;(4)调度器将任务调度到合适的工作节点:调度器将第一个任务调度至工作节点执行获得一个测点名称集合,设工作节点返回了9个测点,分别为:x变电站-1#主变-电流,x变电站-1#主变-电压,x变电站-1#主变-功率,x变电站-2#主变-电流,x变电站-2#主变-电压,x变电站-2#主变-功率,x变电站-3#主变-电流,x变电站-3#主变-电压,x变电站-3#主变-功率);调度器在调度第二个任务前,通过时序数据库连接器的元数据获取接口将测点按其所在服务器分成了三组[(x变电站-1#主变-电流,x变电站-1#主变-电压,x变电站-1#主变-功率),(x变电站-2#主变-电流,x变电站-2#主变-电压,x变电站-2#主变-功率),(x变电站-3#主变-电流,x变电站-3#主变-电压,x变电站-3#主变-功率)],用每组测点对第二个任务的参数进行实例化得到三个分组任务:1)selectt1.*fromfastar.default.data_tablet1wheret1.namein(x变电站-1#主变-电流,x变电站-1#主变-电压,x变电站-1#主变-功率)andt1.time>2017-01-0100:00:00andt1.time<2017-02-0100:00:002)selectt1.*fromfastar.default.data_tablet1wheret1.namein(x变电站-2#主变-电流,x变电站-2#主变-电压,x变电站-2#主变-功率)andt1.time>2017-01-0100:00:00andt1.time<2017-02-0100:00:003)selectt1.*fromfastar.default.data_tablet1wheret1.namein(x变电站-3#主变-电流,x变电站-3#主变-电压,x变电站-3#主变-功率)andt1.time>2017-01-0100:00:00andt1.time<2017-02-0100:00:00调度器以并行的方式将这三个分组任务同时调度到对应的工作节点;(5)工作节点接收调度器调度的任务并通过时序数据库(fastar)连接器将查询任务提交给时序数据库(fastar)执行并返回结果,并将执行结果返回给协调节点;(6)协调节点将三个工作节点返回的数据合并得到最终结果,并将最终结果返回给客户端。本发明不局限于以上所述的具体实施方式,以上所述仅为本发明的较佳实施案例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1