内存数据库在线装载方法

文档序号:6584304阅读:189来源:国知局
专利名称:内存数据库在线装载方法
技术领域
本发明涉及一种内存数据库装载方法及应用该方法的电力系统各类监控和实时 分析计算软件。
背景技术
目前电力自动化实时监控软件普遍使用了内存数据库作为数据处理的基础,该类 型软件对实时性和持续运行能力要求很高,并要求其数据维护过程尽可能小的影响系统运 行。以一个典型的数据库维护过程为例,一个变电站包含了几百个对象,需要几天时 间录入参数,在此过程中由于数据还不完整或者参数错误,该变电站和其包含的变压器等 都不能参与分析计算。只有所有参数输入完毕,并验证为正确,该变电站才能作为一个整体 参与电网的分析。传统的内存数据库使用两种方式。一种是应用重启的离线装载方式,数据维护是在一份独立于在线库的数据库上进 行,维护完成后,应用离线,用维护好的库覆盖在线库后再重启。这种方式的优点是数据的 完整性可以保证,并且可以在覆盖前进行数据验证和内存优化。缺点是应用需要离线,时间 持续数十秒,这对系统持续运行造成了影响;由于是全覆盖方式,在线的有些数据会丢失, 应用需要把会丢失的数据先记录下来,重启时再由应用恢复上去。另一种方式是在线直接修改,但对修改的数据加入特殊标记,应用暂时不处理数 据,最后所有维护完成时,将该标记统一去除。这种方式的优点是应用持续运行。缺点是需 要应用特殊处理,应用处理复杂;不能优化数据在内存中的排列,性能会受影响。

发明内容
本发明的目的是提供一种基于动静分区的内存数据库在线装载方法,尤其适用 于对实时性和持续性能力要求较高的电力系统各类监控和实时分析计算软件。首先对下述技术方案中提及的概念进行解释新库表示维护完毕后要装载的数 据,旧库表示原有在线库,新库应用表示在新库上执行的进程,旧库应用表示在旧库上执行 的进程。本发明的技术方案,一种内存数据库在线装载方法,其特征是包括数据动静分区 和数据库装载数据动、静态分区将维护数据库时变动,而正常运行时不变的数据存储于静态 区;将维护时不变,而运行时动态变动的数据存储于动态区,通过指针将静态区和动态区进 行关联。数据库装载步骤按时间的顺序进行第1步初始阶段,数据在独立于在线库的维护数据库上修改,此时,在线库的数 据内容是旧库,维护库的数据是新库;根据维护时的数据增删情况,记录动态分区的“增加 日志”和“删除日志”,由于动态分区的数据修改以在线库为准,不需要记录“修改日志”;
第2步在Tl时间点,数据装载开始时,将新库的静态区数据载入内存;并且将新 库静态区的对象和旧库的动态区通过指针关联,此时新旧库共享动态数据分区即动态区数 据,此时所有进程为旧库的数据应用;第3步在T2时间点,修改完成即新库的静态区装载完毕,此时内存中同时存在新 库静态区,旧库静态区和旧库动态区,需要将修改在运行系统中生效,新库的动态区数据以 增量方式更新旧库动态区数据,并且将新静态区的对象和动态区通过指针关联;开始执行 旧库动态区的“增加日志”,此时新旧库共享动态数据分区,此时所有进程为旧库的数据应 用;第4步在T3时间点,旧库动态区的“增加日志”执行完毕,此时动态区数据是旧 库动态区和新库动态区并集,其中数据的交集是新、旧库静态区都有的对象,这些数据也就 是需要保留的在线数据,此时所有进程为旧库应用;第5步T3-T4时间段,数据库服务器通过消息中间件向每个应用进程的数据库连 接发送装库切换事件,应用进程的数据库连接线程会响应该事件,数据库连接指向静态区 的指针会自动切换到新库,连接时会自动切换到新库上;连接线程响应函数是一个轮询过 程,同时应用进程通过新的数据库连接将自己缓存的参数刷新一下;在Τ3-Τ4切换的这一 个时间段,部分为新库应用,部分为旧库应用,新旧库的静态分区的指针指向同一块共享动 态分区,所以动态数据的更新不会中断,这段时间数据更新不会丢失,保证了持续运行;第6步Τ4时间点,所有应用切换到新库,在动态分区上执行“删除日志”;第7步Τ5时间点,完成旧库卸载,在线库为新库。新数据库装载时通过先载入新静态分区,新旧库共享动态分区,再将应用进程的 数据库连接依次从旧数据库上快速切换到新数据库上,最后卸载旧数据库,实现内存数据 库的在线装载,不影响系统的连续运行。本发明的有益效果(1)数据维护过程不影响在线运行,不需要应用特殊处理。(2)数据装载前,可以进行验证和优化。(3)数据装载时应用不切换到离线,可持续运行。(4)数据装载后,需要保留的在线数据不丢失。(5)数据装载过程对应用透明,不增加应用复杂性。


下面结合附图对本发明的具体实施方式
作进一步详细的说明。图1数据库初始状态运行2数据库离线修改图(Tl时刻)图3数据库静态分区装载图(Τ2时刻)图4数据库连接切换图(Τ3-Τ4,切换过程)图5数据库所有应用切换完毕图(Τ4时刻)图6卸载旧库,装载新库完成图(Τ5时刻)
具体实施例方式以一个变电站监控系统为例。实时数据库scadamdl存储了变电站中所有需要监控 的设备,包括开关,变压器等的信息;进程ftserver负责与物理开关通信,获取物理开关的 状态,并将其记录在数据库中;进程scadajerver周期性的遍历scadamdl,当开关状态发生 变化时,产生告警信号,向操作员提示。下面举例描述如何在数据库中增加开关的过程。UScadamdl中有一格Breaker表描述了开关的信息。其中包含字段Name是开关 的名字Gtring类型)Jtatus是开关的状态(Bool类型)。Name只有在维护时修改,运行 时是不变的,因此作为静态数据ftatus只有在运行时修改(对应物理开关的实时状态), 维护时不会修改。其内存结构如图1所示。开关静态数据和动态数据分开存储在静态区和动态区,通过指针关联。2、由于变电站改造,增加开关D,删除开关B,在独立于运行库的数据库上修改,不 影响运行的系统,记录“增加日志”,即开关D的状态D,为开关D的初始状态;开关B删除, 记录状态B为“删除日志”。在Tl时间点,数据装载开始时,将新库的静态区载入内存;并且 将新库静态区的对象和旧库的动态区通过指针关联,此时新旧库共享动态数据分区即动态 区数据,此时所有进程为旧库数据应用,如图2所示。3、修改完成后,需要将修改在运行系统中生效,即装库过程。在T2时间点,完成将 新的静态数据分区载入数据库,新的动态区数据以增量方式更新旧库动态区,并且将新静 态分区的对象和动态分区通过指针关联;开始执行旧库动态区的“增加日志”,此时新旧库 共享动态数据分区,如图3所示。4、在T3时间点,旧库动态区的“增加日志”执行完毕,此时动态区是旧库动态区和 新库动态区并集,其中交集是新旧库静态区都有的对象,这些数据也就是需要保留的在线 数据,此时所有进程为旧库应用。5、在T3-T4时间段,数据库服务器通过消息中间件向每个应用进程的数据库连接 发送装库切换事件,各应用进程的数据库连接线程会响应该事件,数据库连接指向静态区 的指针会自动切换到新库。该响应函数是一个轮询过程,由于各应用scadajerver,fe_ server运行周期和速度不同,fe_SerVer先切换,scada_server后切换,同时应用进程通过 新的数据库连接将自己缓存的参数刷新一下。但由于共享动态数据分区,所有应用,无论基 于新库还是旧库,动态数据更新都不会丢失,如图4所示。6、T4时间点,所有的应用切换到新库,在动态分区上执行“删除日志”,此时应用全 部基于新库,如图5所示。7、Τ5时间点,完成卸载旧库,装库完毕。本发明是通用技术,不局限于以上Breaker的特定的表结构和数据类型,可以定 义任何结构的静态数据和动态数据。
权利要求
1. 一种内存数据库在线装载方法,其特征是包括对数据的动静分区和数据库装载 数据动、静态分区将维护数据库时变动,而正常运行时不变的数据存储于静态区;将 维护时不变,而运行时动态变动的数据存储于动态区,通过指针将静态区和动态区进行关 联;数据库装载步骤按时间的进程顺序进行第1步初始阶段,数据在独立于在线库的维护数据库上修改,此时,在线库的数据是 旧库,维护库的数据是新库;根据维护时的数据增删情况,记录动态分区的“增加日志”和 “删除日志”,由于动态分区的数据修改以在线库为准,不需要记录“修改日志”;第2步在Tl时间点,数据装载开始时,将新库的静态区数据载入内存;并且将新库静 态区的对象和旧库的动态区通过指针关联,此时新旧库共享动态数据分区即动态区数据, 此时所有进程为旧库的数据应用;第3步在T2时间点,修改完成即新库的静态区装载完毕,此时内存中同时存在新库静 态区,旧库静态区和旧库动态区,需要将修改在运行系统中生效,新库的动态区数据以增量 方式更新旧库动态区数据,并且将新静态区的对象和动态区通过指针关联;开始执行旧库 动态区的“增加日志”,此时新旧库共享动态数据分区,此时所有进程为旧库的数据应用;第4步在T3时间点,旧库动态区的“增加日志”执行完毕,此时动态区数据是旧库动 态区和新库动态区并集,其中数据的交集是新、旧库静态区都有的对象,这些数据也就是需 要保留的在线数据,此时所有进程为旧库应用;第5步T3-T4时间段,数据库服务器通过消息中间件向每个应用进程的数据库连接 发送装库切换事件,应用进程的数据库连接线程会响应该事件,数据库连接指向静态区的 指针会自动切换到新库,连接时会自动切换到新库上;连接线程响应函数是一个轮询过程, 同时应用进程通过新的数据库连接将自己缓存的参数刷新一下;在Τ3-Τ4切换的这一个时 间段,部分为新库应用,部分为旧库应用,新旧库的静态分区的指针指向同一块共享动态分 区,所以动态数据的更新不会中断,这段时间数据更新不会丢失,保证了持续运行; 第6步Τ4时间点,所有应用切换到新库,在动态分区上执行“删除日志”; 第7步Τ5时间点,完成旧库卸载,在线库为新库。
全文摘要
内存数据库装载方法,将数据库分动态分区和静态分区,分别进行存储,数据库装载步骤按时间的进程顺序进行1、初始阶段,数据在独立于在线库的维护数据库上修改;2、数据装载开始时,将新库的静态区数据载入内存;3、修改完成即新库的静态区装载完毕;4、旧库动态区的“增加日志”执行完毕;5、数据库服务器通过消息中间件向每个应用进程的数据库连接发送装库切换事件;6、所有应用切换到新库,在动态分区上执行“删除日志”;7、完成旧库卸载,在线库为新库。在新数据库装载时通过先载入新静态分区,新旧库共享动态分区,再将应用进程的数据库连接依次从旧数据库上快速切换到新数据库上,最后卸载旧库,实现内存数据库的在线装载。
文档编号G06F17/30GK102063439SQ20091023426
公开日2011年5月18日 申请日期2009年11月18日 优先权日2009年11月18日
发明者王艳蓉, 陆鑫, 顾全 申请人:南京南瑞继保工程技术有限公司, 南京南瑞继保电气有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1