华体会备用网在线讯:摘要:为满足智能电网对海量状态监测数据搜索的实时性要求,文章结合智能电网海量状态监测数据特点,提出一种分布式实时数据库动态索引技术。将NoSQL数据库的分布式索引技术、并行处理技术以及高可用性技术(HA)与当前多个单体数据库构建的存储网络相结合,采用动态反馈机制自动完成节点间的负载均衡,通过并行计算构造动态索引,实现了电网状态监测点数据在分布式环境中的快速检索与自调整功能,并通过屏蔽底层数据库网络的复杂结构,为用户提供了统一的数据搜索接口。
测试结果表明,该技术满足智能电网业务系统对数据库搜索的实时性和扩展性要求。
关键词:分布式实时数据库;动态索引;动态反馈;负载均衡;高可用性
0引言
随着智能电网的迅速发展,监测系统接收的数据规模和数据种类迅速增加,海量非结构化数据的实时存储成为亟需解决的问题之一。而传统实时数据库索引技术主要针对基于关系型的结构化数据,其构建的非结构化数据索引在性能和数据库资源占用方面都难以满足智能电网的发展需要,尤其在实时性方面[1-2]。研究可支持海量数据存储、分布式冗余备份、可动态调整、高可用性的动态索引技术的呼声日益高涨。用户在高实时性数据访问时,无需了解服务器节点的网络架构及其副本具体存储在哪个服务器上,一旦服务器出现满载、宕机等情况,搜索系统在不中断服务的条件下可自行处理;系统存储总量及实时数据的吞吐能力会随着服务器数量的增加而线性地良好扩展。
为满足智能电网高级应用的实时性要求,研究人员从实时数据库、分布式存储以及索引算法等方面进行了探索,文献[1]针对综合自动化系统中需要大量数据写入的特点,论述了基于内存的实时数据库,通过在内存中将数据缓存,然后写入数据库的方式提高系统的实时性;文献[3]提出了一种基于分布式文件系统的海量电能质量监测数据管理方案,将历史监测数据压缩后存储在分布式异构服务器上,在监测主站保存数据特征值和文件索引,提高了存取效率;文献[4]提出了一种大数据搜索方法,将共享的历史查询结果作为中间结果集,新查询若与历史查询匹配则直接返回请求结果,从而减少了大量的对历史查询的重复计算,提高了查询效率;文献[5]在遗传模拟退火混合算法中融入小生境技术,并对混合算法的相应要素进行改进,基于该混合算法提出了一种改进的分布式查询优化算法,减少分布式数据库查询的代价,提高了查询效率。
总之,当前研究工作侧重于海量数据的组织、存储以及搜索算法的优化和改进等方面,针对的是某一具体应用需要解决的实时性问题,未从智能电网数据存储现状考虑,建立适合电力大数据分析的通用实时搜索系统。
本文所述的海量数据实时搜索系统(LGReal-timeSearch,LGRS)是针对智能电网分析业务自主研发的一套实时的、多维的、交互式的搜索、统计、分析系统,可为电力企业各设备在海量数据的统计分析方面提供完整的实时搜索方案,让万级维度、千亿级数据下的秒级访问成为现实。
1动态索引信息的存储
电力企业的分布式实时数据库索引机制有其特殊性需求[5-6]:状态监测点数据包括简单数值和海量小文件(如谱图或录波数据文件),主要的数据操作是写入和读取;数据的写入者和查询者不必关心系统内部服务器节点的运行状态,如是否有设备存满、失效等问题;数据库系统需要应对海量数据的实时写入,以及为业务系统提供实时的状态监测数据查询。要解决这些特定问题需要数据库系统具有高效的、可靠的动态索引机制。
1.1动态索引存储
智能电网的监测数据规模较大,通常一个市级供电局的状态监测点即可达到百万级别,其数据结构简单,且伴随海量小数据文件。状态监测点数据结构见表1所列。
状态监测数据在写入时,以监测点ID和数据采集时间作为组合主键(Key)建立数据的主索引,状态监测点数量庞大且系统持续不间断地进行采集,根据状态监测数据以监测点为单位的特点,本系统针对监测点和监测数据分别建立动态索引。
1.2监测点动态索引存储
对于监测点索引,参考当前主流大数据分布式存储框架Hadoop采用的一致性哈希机制[7],通过构建一致性哈希表,为监测点分配一个环形的位置空间,构建监测点一致性哈希表的过程如下:
1)获取监测点的ID列表,并对各监测点分配一个权重(该权重值代表该监测点的数据流量大小,根据监测点性质进行估算初值,可在实际运行中调整);
2)对监测点的ID列表按权重值进行排序,然后放入优先级队列,权重值最大的先入队列;
3)从优先级队列中获取监测点ID,并计算该ID的哈希值,获取该监测点ID在一致性哈希表中的位置;
4)循环从优先级队列中取出所有监测点,完成一致性哈希表的初始化;
5)当有新的监测点接入系统时,重新构造优先级队列,按步骤3为新增的监测点选择哈希表中的位置,当位置重复时,将监测点ID加1后重新计算位置;
6)如果有监测点退出时,只需将监测点和哈希表中的位置映射删除即可,该位置将可供新的监测点使用;
7)构造完一致性哈希表后,每个监测点获得唯一位置,这些位置将被映射到具体的数据存储服务器节点。
1.3数据动索引存储
由于监测点数据以时间为单位,持续监测会产生海量数据,同时数据中包含大量的小文件,对这些大规模、结构复杂的数据建立索引,传统的集中式处理方式已无法满足要求。本系统采用分布式计算的方法建立两级索引:首先通过分布式算法在内存中对每个节点的数据建立索引,然后将各个节点的内存索引进行合并,构造大的数据索引,并保存到分布式存储系统的节点服务器。
为同时兼顾系统实时性能以及系统负载承受能力的要求,系统支持在线索引和离线索引2种索引建立方式。
1.3.1实时索引流程
利用实时守护进程创建实时索引(见图1),流程如下:
1)将实时数据(可以是文件,也可以是消息队列的数据)加载到实时搜索中;
2)利用实时数据实时生成索引文件并存放在内存中(内存中的索引数据就可以进行实时查询统计);
3)将内存中的索引数据实时保存在本地存储系统(保存在本地存储系统的数据也可以进行实时查询);
4)实时搜索进程实时地将本地文件合并成大索引,并备份到分布式存储系统中。