专利名称:一种维护数据库复本一致性的异步归集方法
技术领域:
本发明涉及一种基于归集思想,维护数据库差异性复本间数据一致性的异步方法,属于电力系统数据库管理技术领域。
背景技术:
在地理上分散的大型监控系统中,模型数据多分布在不同数据库。常见的分布策略有集中式数据集中存放;分区式数据分散存放,但数据间不能重复;冗余式每个结点都存放完整的数据复本;混合式上述三种的混合,这是最复杂、最灵活的方式,即本发明适用的数据库差异性复本。对于这类差异性复本一致性维护方法可以分为两类离线同步和联机同步。简单的离线同步方法通常是将源数据库的所有对象导出成转储文件,再将转储文件导入目标数据库以保持和源数据库的一致性。这种同步方法将差异性复本按照其外延扩展成无差异性复本,简单可靠,但是不适用于多个数据库并发修改的应用。改进的离线同步方法将源数据库中的所有元组按需要分割成裂片,将源数据库中需要维护一致性的元组所在裂片导出成转储文件,再将转储文件导入到目标数据库中覆盖原先的相应裂片。这种方法弥补了简单离线同步不支持多数据库并发修改的缺陷,但是库间一致性的维护需要借助于操作系统层面多个文件的拷贝、传送和合并,增加了维护难度。 如果不能对文件加以有效的管理,极易引起文件的版本错误,增加数据不一致的风险。联机同步即应用软件向本地数据库执行写操作成功后,再通过网络方式直接修改其他数据库;或向其他数据库服务器发送包含同步信息的消息报文。联机同步很好的解决了离线同步方法存在的问题,数据一致性维护通过应用软件系统来实现,这样可以灵活的满足应用对数据的需求。但是联机同步方法对网络环境要求较为苛刻,一旦在网络阻塞时发生了多数据库并发修改,很容易造成数据不一致,之后即使网络恢复,也可能无法恢复到一致的状态,从而造成永久性的数据错误。在已经不一致的数据库中接着进行数据修改,牵涉到表中关键字、索引,以及表间触发关系等诸多约束条件,还可能造成数据不一致范围扩大。这种灾难性的后果是系统开发者和工程实施者最不希望看见的。
发明内容
本发明所要解决的技术问题是,实现维护数据元组在差异性复本间的一致性,处理好多数据库并发修改的问题,以及减轻维护工作对网络质量的依赖程度。为解决上述技术问题,本发明提供一种维护数据库复本一致性的异步归集方法, 其特征在于,包括以下步骤
1)将数据库差异性复本分为完全复本和局部复本两类,按照应用的要求将数据分割成裂片存放在两类数据复本中;
2)通过数据库内容比较找出完全复本和局部复本中的差异数据,在修改本地数据前执行更新操作,从完全复本到局部复本同步数据;3)在修改本地数据完成后执行提交操作,从局部复本向完全复本同步数据。所述完全复本包括全局所有集中式、冗余式数据和本结点的分区式数据;局部复本包括冗余式数据和本结点的分区式数据;
所述提交操作是指将本地局部复本的数据修改在完全复本上执行; 所述更新操是指将完全复本的数据修改在本地局部复本上执行。前述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤;3)中, 局部复本只在本地结点修改,修改完成后将局部复本提交至完全复本。前述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤2、中, 完全复本只在本地结点修改,修改完成后不需提交。前述的维护数据库复本一致性的异步归集方法,其特征在于在向完全复本提交和从完全复本更新时,进行数据校验,如果发现存在冲突的数据将终止并回滚当前提交操作或更新操作,同时弹出窗口通知操作员。前述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤2、和步骤3)中,优化数据库中的触发逻辑关系,使insert、Update、delete的触发逻辑等价统一。前述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤2、和步骤3)中,在由应用产生的关系中增加用于描述数据版本变更的属性,包括元组创建时间、 元组创建结点、元组修改时间、元组修改结点、元组删除标志、元组删除时间和元组删除结点ο前述的维护数据库复本一致性的异步归集方法,其特征在于元组删除标志属性非0表示此条元组已经删除,元组删除标志作为关系的联合主键,如果主键约束中其他列的值相同,则删除标记从1开始累加。前述的维护数据库复本一致性的异步归集方法,其特征在于更新操作和提交操作时比较完全副本和局部复本的数据差异性,结合元组操作时间进行冲突处理。前述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤幻中, 局部复本在修改本地数据之前先更新到与完全复本一样的数据版本,局部复本完成修改以后及时地向完全复本进行提交。本发明提出了数据复本等级的概念根据数据复本对全部数据的覆盖范围,将数据复本分为完全复本和局部复本两种。完全复本包含了全局所有集中式、冗余式数据和本结点的分区式数据;局部复本包含冗余式数据和本结点的分区式数据。局部复本只在本地结点修改,修改完成后将局部复本提交至完全复本,其他结点可以从完全复本更新已提交的数据。从局部复本提交的冗余式数据和完全复本中的冗余式数据合并;分区式数据不提交。完全复本只在本地结点修改,修改完成后不需提交,其中的冗余式数据可以在需要时直接更新到局部复本,局部复本应该在一次修改开始前从完全复本更新数据,并在完成修改后及时提交至完全复本。在向完全复本提交和从完全复本更新时,做数据校验,一旦发现存在冲突的数据就终止并回滚当前提交或更新操作,同时弹出窗口通知操作员。本发明所达到的有益效果
相比于离线同步方法,本发明提出的异步归集方法能够支持多数据库并发修改,同时克服了其对转储文件的依赖。相比于通过应用软件实现的联机同步方法,本发明提出的异步归集方法大大降低了对网络稳定性的依赖,从要求网络每时每刻都稳定,降低到只要求在修改开始前更新和修改完成后提交时稳定,而且能够及时检测到已经存在的数据不一致情况并及时报告给操作员,有效防止数据不一致范围继续扩大。
图1为本发明的维护数据库复本一致性的异步归集方法的流程图。
具体实施例方式本发明提出的异步归集方法的实现主要包括6个步骤
步骤一对数据库中的数据进行分割,根据应用的需求,将模型数据按以下4种类别进行关系级/元组级,或者水平/垂直/复合分割
1.仅存储于完全复本中的数据,这部分数据称之为集中式数据;
2.仅存储于某一局部复本中,这部分数据在全局只保存一份,这部分数据称之为分区式数据;
3.存储于完全复本和每一份局部复本中,并且在所有上述复本中都要求保持一致的数据,这部分数据称之为冗余式数据;
4.存储于本地局部复本和完全复本中的数据。第一种数据只在完全复本所在结点有访问需求,第二种数据只在该局部复本所在结点有访问需求,故这两种数据不需要进行一致性维护,第三种数据在完全复本和所有局部复本所在结点都可能有访问需求,即可能是某种常用的公共数据,这是对一致性要求最高的部分,第四种数据常见于具有星型结构(即中心-分站型结构)的工程应用中,数据在本地局部复本和完全复本中有访问需求,在其他局部复本所在结点不需要访问,但是将这部分数据转复制其他局部结点也不会对数据一致性产生任何影响,故可以归纳到冗余式数据中,采用相同的处理方法。步骤二 定义提交操作和更新操作
提交操作将本地局部复本的数据修改在完全复本上执行; 更新操作将完全复本的数据修改在本地局部复本上执行。步骤三比较本地局部复本和远端完全复本的内容差异
由于提交和更新操作都在局部复本所在结点上执行,所以局部复本是本地,完全复本是远端。依次对本地局部复本和远端完全复本中的相同关系进行对比,可能出现4种结果 “匹配”,“缺失”,“超出”,“差异”,如表1
表1 数据库内容比较可能出现的结果表
权利要求
1.一种维护数据库复本一致性的异步归集方法,其特征在于,包括以下步骤1)将数据库差异性复本分为完全复本和局部复本两类,按照应用的要求将数据分割成裂片存放在两类数据复本中;2)通过数据库内容比较找出完全复本和局部复本中的差异数据,在修改本地数据前执行更新操作,从完全复本到局部复本同步数据;3)在修改本地数据完成后执行提交操作,从局部复本向完全复本同步数据;所述完全复本包括全局所有集中式、冗余式数据和本结点的分区式数据;局部复本包括冗余式数据和本结点的分区式数据;所述提交操作是指将本地局部复本的数据修改在完全复本上执行;所述更新操是指将完全复本的数据修改在本地局部复本上执行。
2.根据权利要求1所述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤幻中,局部复本只在本地结点修改,修改完成后将局部复本提交至完全复本。
3.根据权利要求1所述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤幻中,完全复本只在本地结点修改,修改完成后不需提交。
4.根据权利要求1所述的维护数据库复本一致性的异步归集方法,其特征在于在向完全复本提交和从完全复本更新时,进行数据校验,如果发现存在冲突的数据将终止并回滚当前提交操作或更新操作,同时弹出窗口通知操作员。
5.根据权利要求1所述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤2)和步骤3)中,优化数据库中的触发逻辑关系,使insert、Update、delete的触发逻辑等价统一。
6.根据权利要求1所述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤幻和步骤幻中,在由应用产生的关系中增加用于描述数据版本变更的属性,包括 元组创建时间、元组创建结点、元组修改时间、元组修改结点、元组删除标志、元组删除时间和元组删除结点。
7.根据权利要求6所述的维护数据库复本一致性的异步归集方法,其特征在于元组删除标志属性非0表示此条元组已经删除,元组删除标志作为关系的联合主键,如果主键约束中其他列的值相同,则删除标记从1开始累加。
8.根据权利要求1所述的维护数据库复本一致性的异步归集方法,其特征在于更新操作和提交操作时比较完全副本和局部复本的数据差异性,结合元组操作时间进行冲突处理。
9.根据权利要求1所述的维护数据库复本一致性的异步归集方法,其特征在于在所述步骤幻中,局部复本在修改本地数据之前先更新到与完全复本一样的数据版本,局部复本完成修改以后及时地向完全复本进行提交。
全文摘要
本发明公开了一种维护数据库复本一致性的异步归集方法,其特征在于,包括以下步骤1)将数据库差异性复本分为完全复本和局部复本两类,按照应用的要求将数据分割成裂片存放在两类数据复本中;2)通过数据库内容比较找出完全复本和局部复本中的差异数据,在修改本地数据前执行更新操作,从完全复本到局部复本同步数据;3)在修改本地数据完成后执行提交操作,从局部复本向完全复本同步数据。本发明提出的异步归集方法能够支持多数据库并发修改,同时克服了其对转储文件的依赖。相比于通过应用软件实现的联机同步方法,本发明大大降低了对网络稳定性的依赖。
文档编号G06F17/30GK102402600SQ20111036710
公开日2012年4月4日 申请日期2011年11月18日 优先权日2011年11月18日
发明者刘佳宝, 张赛桥, 方俊, 梁奕, 石琦, 陈天皓 申请人:国电南瑞科技股份有限公司