一种基于触发器的异构数据库间相互同步方法技术

技术编号:26504865 阅读:25 留言:0更新日期:2020-11-27 15:32
本发明专利技术涉及一种基于触发器的异构数据库间相互同步方法,其中,包括:注册数据源、建立控制表、建立触发器以及创建同步任务;步骤1:注册数据源;步骤2:对于在数据库存储用户数据的数据基表,创建一个对应的控制表,包含数据基表的主键,控制表记录数据源的变化过程;步骤3:建立触发器;触发器在数据基表发生变化时,同步完成控制表信息的写入,建立的触发事件为插入、删除与修改;步骤4:创建同步任务;设数据同步数据流由A数据源上数据流与B数据源上数据流两个部分组成,用户修改A数据源的数据基表内一条数据,在同步任务内就会开始一次数据同步的过程,完成将该条数据变更到B数据源内。

【技术实现步骤摘要】
一种基于触发器的异构数据库间相互同步方法
本专利技术涉及数据库
,具体涉及一种基于触发器的异构数据库间相互同步方法。
技术介绍
在数据库管理系统的领域,已经存在多个成熟的数据库产品(例如Oracle、SQLServer、Mysql、Postgre、武汉达梦、人大金仓、神州通用等),而在企业搭建的众多应用系统中,由于应用开发部门不同或者应用系统本身特点等因素,不同的系统使用的数据库系统不同,随着业务与用户规模的不断增加,传统的单一数据中心已经不能满足企业的发展需求,跨地域的互联数据中心建设方案由此产生,例如三地两中心、异地多活数据库等方案,这种情形下就涉及异构数据库之间数据同步的情况。现有技术中,异构数据库同步的方式为基于自身的同步复制技术实现的,各数据库厂商在各自的数据库复制的基础上提出了数据库的同步方案。例如SQLServer提出的出版者及订阅者同步方案,用于多台数据库服务器之间的数据同步;Oracle采用多主复制和物化视图的方案实现数据同步功能。还有一些数据库同步方案是基于数据库日志文件的,这些都都依赖于数据库管理系统的核心技术,只能完成特定数据库之间的数据同步,不能被广泛使用。此时亟需一种通用的异构数据库的数据同步方案,以满足异构数据库之间数据的相互同步。中国专利“CN111026808A一种基于国产环境下的异构数据库同步系统及同步方法”,提供了一种基于国产环境下的异构数据库同步系统,步骤包括:初始化模块、端口监听模块、任务管理模块、采集和抽取模块、文件写入模块等,通过读写个性化的设置,包括读写方式、频率、速率等的设置,可批量选择数据读取对象,系统自动匹配异构数据源的表结构,通过任务管理模块、采集和抽取模块选择生产端需要同步的表,完成传输配置,生产端的表将通过文件写入模块和通道传输模块同步映射到目标端,完成目标端的配置。本专利技术数据同步发起端支持国外主流的数据库,同时满足用户内外网隔离下的数据交换,实现实时捕获数据库日志,根据用户配置的过滤映射等功能,将非国产的数据库sql语句转换为最终生成目标端需要的sql语句。中国专利“CN111026808A一种基于国产环境下的异构数据库同步系统及同步方法”,只能支持Oracle、SQLServer、Mysql向达梦数据库的数据同步,不能实现向其它数据库的同步,并且同步的方向也是单向的,即不能满足达梦数据库向Oracle数据库同步需求。
技术实现思路
本专利技术的目的在于提供一种基于触发器的异构数据库间相互同步方法,用于解决数据同步过程中同步“振荡”问题,本专利技术一种基于触发器的异构数据库间相互同步方法,其中,包括:注册数据源、建立控制表、建立触发器以及创建同步任务;步骤1:注册数据源;步骤2:对于在数据库存储用户数据的数据基表,创建一个对应的控制表,包含数据基表的主键,控制表记录数据源的变化过程;步骤3:建立触发器;触发器在数据基表发生变化时,同步完成控制表信息的写入,建立的触发事件为插入、删除与升级;步骤4:创建同步任务;设数据同步数据流由A数据源上数据流与B数据源上数据流两个部分组成,用户修改A数据源的数据基表内一条数据,在同步任务内就会开始一次数据同步的过程,完成将该条数据变更到B数据源内。根据本专利技术的基于触发器的异构数据库间相互同步方法的一实施例,其中,步骤1:注册数据源包括:将需要数据同步的异构数据库作为数据源接入到系统中;通过加载数据库提供的ODBC驱动连接数据库,在Qt环境下调用QsqlDatabase加载Oracle数据库ODBC;将注册信息写入到SQLite数据库中。根据本专利技术的基于触发器的异构数据库间相互同步方法的一实施例,其中,数据源注册需要的信息包括数据源类型、注册名称、IP地址、端口号、DNS信息、默认连接数据库名称、用户名与密码。根据本专利技术的基于触发器的异构数据库间相互同步方法的一实施例,其中,控制表包括以下字段:序号字段名类型说明1Idint控制表主键2TableNametext变更数据所在的表名3FiledNametext变更数据的主键字段名称4FiledKeyint变更数据的主键字段5OperateTypetext变更的类型6OperateTypetext变更数据操作,包含insert、update和delete7IsSynctext同步标识:0为未同步,1为已经同步,无需同步8UpdateTimedatetime2(7)变化时间戳根据本专利技术的基于触发器的异构数据库间相互同步方法的一实施例,其中,A数据源与B数据源内数据基表名称为testTable,控制表为CTRLTABLE;A数据源上数据流包括:将本次要写入的数据首先写入数据基表,触发器触发后,将在控制表CTRLTABLE写入一条数据,TableName为“testTable”,FiledKey为X,OperateType为“INSERT”;读取控制表内数据:使用select语句在控制表CTRLTABLE内读取数据,条件为IsSync=0,IsSync为0表示本条数据未被同步;读取数据基表内数据:使用select语句在数据基表testTable内读取一条数据,条件是关键字为X;组成一条SQL语句:根据控制表内数据与数据基表内数据形成一条操作语句;B数据源上数据流包括:执行该SQL语句:在B数据源上执行一条SQL语句;在B数据源的控制表CTRLTABLE中使用select语句查找关键字为X的一条数据,并且将该数据的IsSync置为1,即该条数据不需要再进行同步。。本专利技术提出一种基于触发器的异构数据库间相互同步方法,本专利技术实现的方法适用于多种主流关系型异构数据库间同步的场景,由于使用触发器机制捕获数据变化,因此具有普遍适应性。附图说明图1为本专利技术一种基于触发器的异构数据库间相互同步方法的流程图;图2为保存数据源注册信息的表结构图;图3为数据同步的数据流图。具体实施方式为使本专利技术的目的、内容、和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。图1为本专利技术一种基于触发器的异构数据库间相互同步方法的流程图,本专利技术提出的方法包括以下步骤:注册数据源、建立控制表、建立触发器、创建同步任务。步骤1:注册数据源包括:将需要数据同步的异构数据库作为数据源接入到系统中,在后续数据同步过程中,无需关心异构数据库的位置等信息,可以直接在对应数据源上执行SQL命令或者获取结果集。未注册到数据库的不能进行数据同步。本文档来自技高网
...

【技术保护点】
1.一种基于触发器的异构数据库间相互同步方法,其特征在于,包括:注册数据源、建立控制表、建立触发器以及创建同步任务;/n步骤1:注册数据源;/n步骤2:对于在数据库存储用户数据的数据基表,创建一个对应的控制表,包含数据基表的主键,控制表记录数据源的变化过程;/n步骤3:建立触发器;/n触发器在数据基表发生变化时,同步完成控制表信息的写入,建立的触发事件为插入、删除与修改;/n步骤4:创建同步任务;/n设数据同步数据流由A数据源上数据流与B数据源上数据流两个部分组成,用户修改A数据源的数据基表内一条数据,在同步任务内就会开始一次数据同步的过程,完成将该条数据变更到B数据源内。/n

【技术特征摘要】
1.一种基于触发器的异构数据库间相互同步方法,其特征在于,包括:注册数据源、建立控制表、建立触发器以及创建同步任务;
步骤1:注册数据源;
步骤2:对于在数据库存储用户数据的数据基表,创建一个对应的控制表,包含数据基表的主键,控制表记录数据源的变化过程;
步骤3:建立触发器;
触发器在数据基表发生变化时,同步完成控制表信息的写入,建立的触发事件为插入、删除与修改;
步骤4:创建同步任务;
设数据同步数据流由A数据源上数据流与B数据源上数据流两个部分组成,用户修改A数据源的数据基表内一条数据,在同步任务内就会开始一次数据同步的过程,完成将该条数据变更到B数据源内。


2.如权利要求1所述的基于触发器的异构数据库间相互同步方法,其特征在于,
步骤1:注册数据源包括:
将需要数据同步的异构数据库作为数据源接入到系统中;
通过加载数据库提供的ODBC驱动连接数据库,在Qt环境下调用QsqlDatabase加载Oracle数据库ODBC;
将注册信息写入到SQLite数据库中。


3.如权利要求2所述的基于触发器的异构数据库间相互同步方法,其特征在于,数据源注册需要的信息包括数据源类型、注册名称、IP地址、端口号、DNS信息、默认连接数据库名称、用户名与...

【专利技术属性】
技术研发人员:张记强王仁冯帆韩世杰陈树峰李新乐李明磊
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1