查看原文
其他

上海思源弘瑞自动化公司张少波、姚阳春 等:电网调控系统集群分布式实时数据库关键技术

电气技术杂志社 CES电气 2023-09-23





阅读提示:本文约  5800 字,建议收藏后阅读!




随着特高压和新能源项目的建设,需要监控的数据点数急剧增多,对电网监控系统的数据库容量和实时性要求日益提高。传统只是作为关系库缓存、查找完全依赖Hash算法的实时数据库因存在数据库下装、查找速度均随数据点数增多而变慢的问题而面临较大挑战。


上海思源弘瑞自动化有限公司的张少波、姚阳春、湛锋,在2023年第1期《电气技术》上撰文,分析电网调控系统中实时数据库的实时性和一致性这两个核心问题,通过对象线性转换定位、指针级紧耦合访问等方案解决实时性的问题,通过增加数据版本、支持增量和全量同步等方案解决一致性的问题。在包含60多个计算机节点、200多万监控数据点的地区级配电网主站项目的工程实践中验证了上述方案的可行性。


随着特高压交直流混合电网的大规模建设、新能源发电的大规模接入和低碳智能电网建设的加速推进,电力实时数据采集的范围和规模不断扩大,监控系统采集的数据量不断增加,数据规模已突破百万级并向千万级别发展,这对调控系统的数据库管理系统(database management system, DBMS)的数据存储容量和处理效率提出了更高的要求。

目前,行业内厂家通常采用“基于关系数据库的实时数据库技术路线”,即在关系库的基础上采用一些加速处理方法(如基于cache的内存共享或基于Hash表的内存共享),以满足系统对数据处理和存储的实时性要求,其本质上是以关系数据库为核心的集中式DBMS,这制约了大型电网调控系统的开发升级,因此设计独立、完善的分布式实时数据库管理系统非常必要。

近年来,互联网、大数据的蓬勃发展催生了一批支持集群甚至不同数据中心的分布式并行数据库。以BigTable、Cassandra、MongoDB为代表的NoSQL数据库,通过弱化数据一致性要求,以获得更强的系统扩展能力和系统可用性;以VbltDB、Spanner、MemSQL为代表的NoSQL数据库,通过贴近应用的设计来获得更好的性能和扩展能力。虽然这些分布式DBMS因无法满足电网调控系统对实时性的要求而不能直接使用,但为调控系统集群分布式DBMS的实现提供了有益的参考。

鉴于此,本文围绕分布式数据库访问的实时性和数据一致性问题,设计一套面向电网监控系统的集群分布式实时数据库,在某地区配电网自动化主站系统的工程实践中对本文所提方案的有效性进行验证。


1  监控系统的应用特点

电力监控自动化系统是最典型的工业监控系统,实时数据库管理系统是其核心支撑平台,实时数据库管理系统的实时性、可靠性、扩展性、开放性和稳定性,直接决定了整个系统的性能。

1)系统实时性

电力实时监视系统要求应用软件具有很高的数据处理速度和控制响应速度,特别是当电力系统发生突发异常事件时,短时间内要接收、记录、处理、报告大量事件。而分析类应用(状态估计、在线潮流等)的矩阵和迭代计算量大,对于300个计算节点的中等规模电网,如果数据库访问速度能达到500万次/s,完成状态估计全过程的时间接近1s,如果访问速度只有10万次/s,则时间将超过5s,此时该软件已丧失实时性和可用性。由此可见,数据库访问的实时性对监控系统特别重要,它直接决定了整个系统是否可用。

2)系统可靠性

电力监控自动化系统是电网运行的控制中枢,对其可靠性要求极高,基于分布式的一主多备架构,为提升系统可靠性提供新的解决方案。

3)系统扩展性

分布式存储技术将海量数据分散存储在多台服务器,并对其进行统一管理,既能充分挖掘多服务器的处理能力,又能实现处理能力的水平扩展。

4)数据库一致性

DBMS需根据各类数据的特征,实现这些数据在系统维护、运行阶段增删和更新操作的自动同步,确保数据一致性,以简化上层应用程序的设计开发,是实现调控系统分布式集群部署的基础。

因此,调控系统的分布式实时数据库管理系统的设计,应以实时性为基础,以扩展性和数据一致性为目标,基于简单、实用、稳定的原则,尽可能地提升系统的可用性。


2  实时性关键技术

调控系统实时数据库中存储以电网模型为骨架的当前运行断面数据,其数据实时刷新,应用程序需实现对全断面数据的秒级扫描访问,才能满足电网监控的实时性要求。下面针对实时性的关键技术进行详细介绍。

2.1  对象快速定位

本数据库设计一种高效的数据访问机制:表中每一个对象都有一个惟一的ID(称为OID)。数据库由对象索引区和对象数据区组成,用户需要的表对象都存放在对象数据区。数据库中每个对象都对应一个索引项,索引项中记录对应对象的物理位置,即对象在数组中的下标。对象OID由所属表的ID、对应的索引项在索引数组中的下标、对象所占内存单元/数组元素的使用次数三部分组成。

通过对象OID中的索引下标可以直接定位该对象对应索引项的下标,再通过索引项中记录的对象下标即可直接定位对象物理存储位置。通过数组元素的使用次数累加,实现索引下标的复用,确保对象OID的惟一。整个算法是一种线性转换的算法,数据查找的时间复杂度为O(1)。OID定位如图1所示。

图1  OID定位

此外,为了提高数据增删的性能,通过类似链表的方式对空闲索引项进行管理。索引项增删管理的基本原理如图2所示。

图2  索引项增删管理

由上述内容可知,根据OID可直接计算出对象在实时库内存中的存储地址,实现了类似对象指针的功能。基于OID机制可实现对象间复杂关联关系的简洁高效表达,支持面向对象的数据库模型。该机制具有如下优点:

  • 1)自动维护。对象OID由实时数据库管理系统(real-time database management system, RTDBMS)自动维护,在插入时自动生成,在删除时自动释放。
  • 2)惟一性。对象插入时使用计数自动加一,确保对象空间复用时OID的惟一性。
  • 3)稳定性。对象OID不会随着表中其他对象的增删而发生变化,因此OID虽然是数据库内部属性,但是应用程序也可记录OID并借助OID实现快速访问。
  • 4)高效性。通过对象OID可借助相关算法直接换算出对象的物理存储地址,确保数据访问的实时、高效和O(1)的时间复杂度。
  • 5)简洁性。通过存储关联对象的OID,即可表达对象间1:1单向引用、1:1双向引用、1:n合成聚集、1:n共享聚集等关联关系,实现面向对象的数据存储和访问。

2.2  层次结构的父子关系

在本实时数据库中,平级的关联关系用OID的方式来表示,可以通过OID线性方式定位到被关联对象的地址,实现快速定位。对于层次关系,如厂站包含间隔,间隔包含设备,为了提高父子关系查询的性能,采取类似于数据结构中的树、链表的思路,用等价于指针的OID来记录父子、兄弟之间的关系。

相比而言,其他数据库都是通过“查找”的方式来获取子记录,而本文中的实时数据库是通过“直接获取”的方式来获取,从而极大地提高了访问效率。本数据库通过支持合成聚集、共享聚集、引用关系,实现了对IEC 61970公共信息模型(common information model, CIM)标准的完整支持。

2.3  紧耦合访问

数据库文件映射到共享内存后,进程可以以私有内存方式来访问实时数据库。按照常规的数据库访问思维,进程可以定义一个缓存来接收从数据库/共享内存中获得的数据,存在缓存的申请和释放,以及共享内存到缓存之间数据的拷贝。

考虑到数据库以共享内存的方式可以由进程直接访问,所以完全可以直接访问内存地址,前提是有一个描述内存结构的C++头文件。用户通过RTDBMS数据库设计工具构建实时数据库模式时,工具会自动生成对应的各个表的C++头文件,应用程序通过数据库提供的访问接口获取指定对象的内存地址后,就可以用头文件中表的类定义实现字段的高速访问,这种访问方式称为紧耦合访问。

2.4  快速索引

对于实时数据库记录的访问,通常有两种记录定位的方式:一种是基于ID的定位;另一种是基于名称的定位。除了基于OID实现的对象ID到对象地址的换算,还提供了基于Hash算法的附加索引机制,实现对象名称到对象地址的快速定位。


3  一致性关键技术

CAP理论作为分布式系统的理论基础,阐述了分布式系统的一致性(consistency)、可用性(availability)、分区容错性(partition tolerance),最多只能同时实现两点,不可能三者兼顾。一般来说,分区容错是无法避免的,当一致性和可用性无法兼顾时,只能选择AP,或选择CP。在一致性和可用性的取舍上,只能根据应用场景选择合适的方案。

传统关系数据库如Oracle和MySQL支持准备阶段和提交阶段的两阶段提交协议。准备阶段中事务管理器给每个参与者发送准备的消息,每个数据库参与者在本地执行事务,并写入Undo、Redo日志,此时事务没有提交。

在提交阶段,如果事务管理器接收到参与者的失败信息或者超时,则直接给每个参与者发送回滚消息,否则发送提交消息;参与者根据事务管理器的指令执行提交或者回滚,并释放事务过程中使用的锁资源。由此可见,在一次数据写的过程中参与者需要阻塞、存在多次交互而响应时间过长,可能没有响应而需要发起方等待超时、发起方在过程中崩溃等问题。

虽然为了解决二阶段协议中的同步阻塞等问题,还有三阶段提交协议,但还是难以避免此过程中的网络分区问题。在其他对强一致性要求不是特别高的场景,比较普遍的做法是选择可用性,退而求其次使用最终一致性来保证数据安全。

在国内厂家实现实时数据库的技术方面,一般会采用一些不仅为了保持数据库一致性的数据维护机制,如电网模型、参数等静态数据有额外一份基于关系数据库或者文件型数据库的数据源(这里统一称为维护数据库),即使运行的实时数据库数据出现损坏、不一致的情况,亦可以通过重新下装/发布来实现各个节点实时数据库的同步。

在数据库的维护方面,采取先对维护数据库进行写操作,成功后再写运行的实时数据库;或者只在维护数据库上进行增删操作,运行的数据库上只进行更新操作。同时还会进行数据库的定期备份。这些手段都降低了数据不一致的风险。

下面介绍从平台角度为了尽可能降低数据不一致采取的策略,主要包括数据版本实时比较、全同步和增量同步相结合、数据库写日志在非同步节点上的redo操作、在节点数少的情况下用传输控制协议(transmission control protocol, TCP)代替用户数据报协议(user datagram protocol, UDP)实现数据库同步报文的发送等。
在分布式实时数据库的环境中,系统中存在一个作为基准的库和多个被同步的库,基准库称为主本(库),其他库称为副本(库)。

本实时数据库基于严格的数据版本比较,这里的版本主要包括全局的表示表结构信息的模式版本,以及各个表的数据版本。表的数据版本包含增删版本、当前对象数、首空闲索引下标、更新版本。该版本信息表征了各表的对象存储状况,反映了主、副本同步过程中操作日志丢失的情况,为后续同步过程主本库的处理提供了依据。

实时数据库的主本和副本之间不一致后进行的同步处理称为一致性处理,分为数据库文件级和日志级的同步处理,即数据库的全同步和增量同步。从一致性处理的时间阶段来划分,又可以分为启动阶段和运行阶段的一致性处理。

在启动阶段,如果副本和主本之间的版本不一致,则进行数据库文件级的同步处理。在运行阶段,应用程序调用实时数据库的写接口进行数据库的增删改操作,该写操作报文发给数据库主本来执行,并滚动缓存当前带数据版本的写操作,报文(称为同步报文)缓存的多条同步报文称为操作日志,缓存数量可根据时间和数量动态调整。主本执行写操作后,接口就立即返回给应用程序成功与否,然后主本以异步方式向各个副本发送同步报文。

副本收到同步报文后,发现数据版本和本机一致就执行写操作,若不一致或者副本执行失败,则主动向主本请求执行一致性处理。主本收到一致性处理请求后,如果请求的日志在缓存的日志范围内,则重发操作日志,否则执行数据库文件级的同步处理。

可见,采用这种方式,应用程序对实时数据库的访问不受一致性处理过程的干扰,也不受副本节点数量的影响,确保了应用程序调用实时数据库接口的实时性。数据库日志级和文件级一致性处理流程如图3和图4所示。

图3  日志级一致性处理流程

图4  文件级一致性处理流程


4  实现和验证

基于上述设计思想,开发一套应用于电力实时监控系统的分布式实时数据库管理系统,包括多层次访问接口和完善的配套工具。数据库提供本地紧耦合访问接口、网络层访问接口和应用层访问接口。系统提供了高性能的数据库服务,通过多线程并发管理和元数据自动加载,极大提高了数据库的读写性能。同时,为了实现完整的数据库系统生态,系统提供了配套的数据库定义工具、数据库编辑工具、数据库检索工具。

在实时数据库的性能方面,进行不同数据点数情况下的实时库读写性能测试。测试环境为Intel(R) Core(TM) i5—10210U CPU@1.60GHz的CPU,16G内存,1T固态硬盘(solid state disk, SSD),Windows10操作系统的便携式计算机。单机实时库读写性能的测试结果见表1。

表1  单机实时库读写性能测试结果

从测试结果可知,实时库的读写性能优异,而且读写耗时基本不随数据点数的增加而变化。

在实际系统中,实时库均采用集群方式部署在多个节点,因此实时库主、副本间的同步性能也是关注的重点。下面测试在不同节点规模场景下,实时库更新操作时系统总体数据吞吐量的情况,测试机器性能同上。多机横向扩展实时库更新性能测试结果见表2。

由此可见,将数据横向扩展方式部署在多个节点上,因为每个节点上的实时库是独立更新的,理论性能应该接近线性扩展,实际测试的结果也基本和预想吻合,这说明实时库的横向扩展具有很好的线性度,在解决数据库容量急剧扩大的需求时具备良好的应用前景。

表2  多机横向扩展实时库更新性能测试结果

基于该实时数据库开发了某地区级配电网自动化主站系统,对市区及13个县的配电网进行调控。系统由60多个节点组成,监控数据点数达200万,投运两年多以来,系统运行稳定可靠,性能优异,验证了上述方案的可行性。


5  结论

实时数据库是电网监控系统软件平台中的核心、基础组件,平台和应用的数据都存放在实时数据库中。电网监控系统的性能要求和分布式特点决定了实时数据库的实时性和一致性是其最重要的特征。在这两个问题上,本文充分考虑了相关的解决方案,同时采用紧耦合访问、原生的层次结构都极大提高了系统的性能,以及开发、维护、展示的方便性。

实时库的现有功能已经很好地满足了电力实时监控的需求,在此基础上,下一步将在以下方面展开工作:

1)实时库的横向和纵向裁剪。考虑横向从表、纵向从字段角度进行数据库的裁剪,并支持这些裁剪后的库的共享内存加载和与完整库方式一样的程序访问。

2)考虑到电网三、四区的Web也需要访问实时库中的数据,因此提供了多种其他编程语言的接口,实现远程过程调用(remote procedure call, RPC)方式的实时库直接访问。图数据库的数据模型与电力系统网络结构具有自然的相似性,可对电力系统拓扑结构等进行直观表达,且更易扩展,也是后续发展的方向。

按照本文方案实现的实时数据库满足了电网监控的需求,随着数据库容量的扩大、browser/server和client/server开发的相互融合,实时数据库具有较好的扩展性和广泛适应性,应用前景良好。


本文编自2023年第1期《电气技术》,论文标题为“电网调控系统集群分布式实时数据库关键技术”,作者为张少波、姚阳春 等。


下载论文PDF版,请点击左下角“阅读原文”,访问期刊网站。



推荐阅读

🔗 抢鲜看|《电气技术》2023年第1期目次及摘要

🔗 新疆电网次同步振荡控制系统及其测试方法研究

🔗 华电等单位学者提出一种用于未来态预测的电网运行断面时空相似性挖掘方法

🔗 兰州理工大学科研人员提出用于配电网量测数据中坏数据的辨识与修正方法

🔗 北京国电通网络技术公司王晓波、韩东兴 等:基于边缘计算框架的电网基建智慧物联体系研究与实践

🔗 议程发布|2023中国电磁兼容大会“数字化变革下的电磁兼容测试技术”分论坛




中国电工技术学会
新媒体平台




学会官方微信

电工技术学报

CES电气



学会官方B站

CES TEMS

今日头条号



学会科普微信

新浪微博

抖音号


联系我们

☎️ 《电工技术学报》:010-63256949/6981;邮箱:dgjsxb@vip.126.com

☎️ 《电气技术》:010-63256943;邮箱:dianqijishu@126.com

☎️ 《中国电工技术学会电机与系统学报(CES TEMS)》:电话:010-63256823;邮箱:cestems@126.com

☎️ 编务:010-63256994

☎️ 订阅:010-63256817

☎️ 商务合作:010-63256867/6838


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存