本发明提供了一种数据库一致性校验方法,尤其是一种配电自动化跨区数据库一致性校验方法。
背景技术:
在某些对系统、数据安全性要求较高的领域,如电网领域,需要按照电网生产影响的紧要程度对网络进行分区,同时实现各个分区间的物理隔离,保障信息通信安全。但实际情况下,两个或以上的分区网络需要对某些数据进行共享的需求十分明显,例如,配电调度自动化系统的数据库建立在Ⅰ区,而电网生产管理信息系统建立在Ⅲ区,如果在Ⅲ区配网停电抢修业务需要了解Ⅰ区配电自动化系统中的配网故障情况,那么就需要在Ⅲ区有个实时镜像库保持与Ⅰ区配电调度自动化系统数据库保持一致。为此,在Ⅰ区建立了主数据库,Ⅲ区建立了镜像库,将Ⅰ区数据库变化如执行的SQL语句脚本文件通过网络隔离装置传送到Ⅲ区,Ⅲ区数据库根据传送来的SQL语句脚本文件,同步更新Ⅲ区镜像数据库,从而保证Ⅰ、Ⅲ区数据库在网络隔离状态下的数据一致。但在实际运行维护中,经常由于网络通道丢包、数据处理负载等原因造成同步Ⅰ区传送命令丢失、未执行或延迟等,造成Ⅰ、Ⅲ区数据库不一致现象。这些异常通过人工都难以及时发现,往往给Ⅲ区中的电网信息管理工作造成困扰后,才发现问题。因此,如何快速检测电网分区同步数据库数据的一致性,是目前困扰调度信息维护人员的一项主要问题。
技术实现要素:
本发明要解决的技术问题是现有的电网分区同步数据库缺乏有效的数据一致性校验方法,导致调度信息维护人员工作效率低下。
为了解决上述技术问题,本发明提供了一种配电自动化跨区数据库一致性校验方法,包括如下步骤:
步骤1,在镜像数据库所在网络中建立自动观察窗口,自动观察窗口用于将数据划分为静态数据、动态增量数据以及动态更新数据这三种管理类型,并按照用户对需要检测一致性数据的特性和检测需求将主数据库组成的数据对象推送到三种管理类型相对应的检测窗口中;
步骤2,检测窗口对推送到窗口的数据对象进行一致性校验,具体为:
检测窗口在对静态数据的一致性进行校验时,首先将主数据库和镜像数据库中的被用户罗列在自动观察窗口中的数据表结构和数据存储到XML文件中,其中,主数据库生成文件通过物理隔离装置从主数据库所在区域传送到镜像数据库所在网络区域,通过主数据库和镜像数据库双方文件大小的比较来检验静态数据的一致性;
检测窗口在对动态增量数据的一致性进行校验时,分为两种情况,一种带有时标的动态增量数据,另一种则不带有时标,对于带有时标的动态增量数据一致性检查,首先镜像数据库需要延迟一个时间空隙,查询出上一次检测至当前时间内的总记录数据,通过总记录数据是否一致来直接进行一致性判定,对于不带有时标的动态增量数据,则将整体数据中任一主键或索引字段倒序排列,以主数据库文件为准,通过主数据库和镜像数据库中该数据对象记录数是否一致进行一致性判定;
检测窗口在对动态更新数据的一致性进行校验时,需要将整体数据按照索引或主键字段排序后,切分成若干区域,利用分布式计算方式,通过多个计算机进程对不同区域进行详细比较,从而实现对动态更新数据的一致性进行校验。
采用将数据划分为静态数据、动态增量数据以及动态更新数据这三种管理类型,从而有针对性地进行数据一致性校验,不仅具有较好的校验效率,而且可适应性采用专用方法进行校验,提高了校验的可靠性;采用切分成若干区域对动态更新数据的一致性进行校验,将大大提高数据一致性问题发掘的效率。
作为本发明的进一步限定方案,步骤2中,在各个检测窗口对三种管理类型的数据对象进行一致性校验前,各个检测窗口需要为推送到窗口中的数据对象设定优先权值,同时记录每个检测周期发现问题的数据对象。利用设定优先权值来对校验数据的先后顺序进行限定,不仅使数据校验有序进行,而且使得校验工作的效率也较高。
作为本发明的进一步限定方案,步骤2中,自动观察窗口根据不一致次数*权值/检查次数的方式计算优先权值,优先权值高的数据对象将自动排在优先的顺序进行检测。
作为本发明的进一步限定方案,步骤1中,静态数据是指对数据不一致性检查周期较长或相对检查周期基本没有多大变化的数据,动态增量数据是指数据呈现单一增长变化没有更新的数据,动态更新数据是指数据内容存在有增有减或内容更新的数据。
作为本发明的进一步限定方案,步骤2中,时间空隙为系统要求的传输延迟。
本发明的有益效果在于:(1)采用将数据划分为静态数据、动态增量数据以及动态更新数据这三种管理类型,从而有针对性地进行数据一致性校验,不仅具有较好的校验效率,而且可适应性采用专用方法进行校验,提高了校验的可靠性;(2)采用切分成若干区域对动态更新数据的一致性进行校验,将大大提高数据一致性问题发掘的效率;(3)对主流数据库产品没有特殊要求,实现数据一致性判定的方法也无需在数据库层增加更多的底层细节,可以方便灵活的实现客户对不同分区数据库的快速检测。
附图说明
图1为本发明实现方法的具体实施流程图。
具体实施方式
下面结合附图和实例对本发明作进一步的说明。
如图1所示,本发明提供了一种配电自动化跨区数据库一致性校验方法,包括以下步骤:
A、用户维护自动观察窗口数据对象
用户在数据自动观察窗口维护主、镜像数据库中需要检查的静态的或者动态数据对象。
B、启动数据观察窗口工作
完成维护后,通过按钮启动数据自动观察工作。
C、根据发现问题频率和权值计算优先级并排列数据对象
检测窗口将根据当前对象发现不一致性历史累积次数占总检查次数的百分比乘以用户设定权值进行优先级排序。
D、读取一个数据对象
读取优先级排序形成的数据对象列表中的最靠前数据对象。
E、判定数据观察窗口数据类型
判定该数据对象所在的窗口类型,如果是静态数据则转入步骤F,如果是动态增量数据则转入步骤J,如果是动态更新数据则转入步骤P。
F、生成主、镜像数据库静态数据XML文件
主、镜像数据库网络区域中各自生成该静态数据对象的XML文件。
G、将主数据库静态数据文件传送到镜像数据库分区
将主数据库静态文件传送到镜像数据库分区中。
H、比较文件大小是否一致
检测窗口对传送来的主数据库静态数据XML文件与镜像数据库的XML文件进行文件大小比较,看是否一致,如果一致,转入步骤I,如果不一致,转入步骤O。
I、是否存在下一个数据对象
判断自动观察窗口中是否还存在本轮检查尚未执行的数据对象,如果存在,转入步骤D,如果不存在,结束本次自动观察任务流程,等待下一个时间间隔的检查。
J、推迟一个时间空隙,并记录下当前时间
首先镜像数据库所在网络分区中的数据观察窗口记录下当前时间,并将上次检查成功的时间及记录下的当前时间形成临时文件,通过隔离装置发送到主数据库网络分区中。
K、判定数据对象是否带有时标
判断该动态增量数据对象是否是带有时标的,如果带有时标,则转入步骤L,如果不带有时标,则转入步骤N。
L、按时标倒序查询出上一次检测至记录下的当前时间内的数据
主数据库接收到文件后,执行文件中定义的起止时间段时标范围的数据查询,返回结果记录数。
M、比较记录数是否一致
镜像数据库区也按照同样条件查询出结果数,通过主数据库与镜像数据库查询的结果条数进行比较,判断结果数是否一致,一致则转入步骤I,不一致则转入步骤P。
N、按照某个主键或索引字段倒序排列
针对不带时标的动态更新数据,按照主键或者索引字段的倒序排列,形成记录数文件通过隔离装置从主数据库区域传送到镜像数据库区域,转入步骤M判断。
O、标注该数据对象存在不一致现象
标注分析出不一致数据对象,并记录到告警日志中,通过邮件或短信形式告知用户。
P、按照用户定义的条件优选排列查询并切分数据
针对动态更新数据,只能按照主键或索引倒序排列条件逐个区域范围进行查询,例如5千条一个单位对数据10万进行检查,若队列太多,可通过多进程或分布式计算方式。由于动态更新数据,按照用户维护数据的工作习惯,通常集中在一个段或某个与日常工作相关的条件范围内,因此,在自动观察窗口通过设定额外条件,将查询结果集以文件形式从主数据库网络分区传送到镜像数据库网络分区中再进行切分将大大提高数据一致性问题发掘的效率。
R、数据区是否存在变化
对照结果集文件逐项比较是否存在变化,如果存在则转入步骤O,如果不存在则转入步骤I。
以上内容是结合具体实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。