一种关系型异构数据库数据同步的方法及系统的制作方法
【专利摘要】本发明提供一种关系型异构数据库数据同步的方法及系统,所述方法包括:获取用户预先配置的同步表文件、关键字信息表、语句调用表;实时获取源数据库产生的归档日志文件;对所述的归档日志文件进行分析,转化为标准SQL语句;实时获取源数据库产生的后续日志文件;根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。本发明使用单独的服务器连接源数据库和目标数据库,采用读取源数据库产生的归档日志文件,分析后转化为标准SQL语句并传送给目标数据库,最后在目标数据库上运行这些SQL语句实现数据同步工作,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,同时大大提高数据同步的时效性。
【专利说明】一种关系型异构数据库数据同步的方法及系统
【技术领域】
[0001]本发明关于大型数据库的数据处理【技术领域】,特别是关于大型数据库系统之间的数据同步技术,具体的讲是一种关系型异构数据库数据同步的方法及系统。
【背景技术】
[0002]现有技术中的大型IT系统,各个不同的应用间一般有大量的信息需要进行同步。数据同步的处理方法包括如下几类:
[0003](一)、采用日终批量进行处理。该种方式具有如下缺陷:但是采用日终批量的方法首先牺牲了数据同步的时效性,上游应用最新维护的数据在第一时间无法同步到下游,从而在较长的时间段内引起上下游数据的不一致;每新增一个表的上下游同步就要同时开发一套批量同步程序,可维护性较差。
[0004](二)、多数数据库系统使用数据库链进行分布式事务提交。该种方式具有如下明显不足:只适用于种类相同的数据库之间,异构数据库之间无法使用;由分布式事务带来的分布式事务锁占用了一定系统资源增大了系统开销;完成数据同步的过程需要同步修改交易,程序维护量较大。
【发明内容】
[0005]为了克服现有技术存在的上述问题,本发明提供了一种关系型异构数据库数据同步的方法及系统,针对时效要求较高的数据同步需求,使用单独的服务器连接源数据库和目标数据库,采用读取源数据库产生的归档日志文件,分析后转化为标准SQL语句并传送给目标数据库,最后在目标数据库上运行这些SQL语句实现数据同步工作,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,同时大大提高数据同步的时效性。
[0006]本发明的目的之一是,提供一种关系型异构数据库数据同步的方法,包括:获取用户预先配置的同步表文件、关键字信息表、语句调用表;实时获取源数据库产生的归档日志文件;对所述的归档日志文件进行分析,转化为标准SQL语句;实时获取源数据库产生的后续日志文件;根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
[0007]本发明的目的之一是,提供了一种关系型异构数据库数据同步的系统,所述的系统具体包括源数据库、目标数据库以及数据同步设备,其中,所述的数据同步设备具体包括:预设信息获取装置,用于获取用户预先配置的同步表文件、关键字信息表、语句调用表;归档日志文件获取装置,用于实时获取源数据库产生的归档日志文件;分析装置,用于对所述的归档日志文件进行分析,转化为标准SQL语句;后续日志文件获取装置,用于实时获取源数据库产生的后续日志文件;语句传输装置,用于根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
[0008]本发明的有益效果在于,提供了一种关系型异构数据库数据同步的方法及系统,针对时效要求较高的数据同步需求,使用单独的服务器连接源数据库和目标数据库,采用读取源数据库产生的归档日志文件,分析后转化为标准SQL语句并传送给目标数据库,最后在目标数据库上运行这些SQL语句实现数据同步工作,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,打破了只能在相同类型数据库间同步的局限,在投入较小、通过简单的配置的情况下即可实现异构数据库之间的数据实时同步。
[0009]为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
【专利附图】
【附图说明】
[0010]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0011]图1为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式一的流程图;
[0012]图2为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式二的流程图;
[0013]图3为图1中的步骤S103的具体流程图;
[0014]图4为图3中的步骤S303的具体流程图;
[0015]图5为图1中的步骤S105的具体流程图;
[0016]图6为本发明实施例提供的一种关系型异构数据库数据同步的方法的实施方式二的流程图;
[0017]图7为本发明实施例提供的一种关系型异构数据库数据同步的系统的结构框图;
[0018]图8为本发明实施例提供的一种关系型异构数据库数据同步的系统中数据同步设备300的实施方式二的结构框图;
[0019]图9为本发明实施例提供的一种关系型异构数据库数据同步的系统中数据同步设备300的分析装置303的具体结构框图;
[0020]图10为本发明实施例提供的一种关系型异构数据库数据同步的系统中分析装置301的获取模块3033的具体结构框图;
[0021]图11为本发明实施例提供的一种关系型异构数据库数据同步的系统中数据同步设备300的语句传输装置305的具体结构框图。
【具体实施方式】
[0022]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0023]本发明涉及关系型异构数据库系统之间的数据同步领域。大型IT系统存在着大量需要同步上下游应用的数据,而这些数据库系统可能使用不同公司的数据库产品。本发明提供一种关系型异构数据库数据同步的方法和系统,对异构数据库的数据提供同步机制并降低系统开销和程序维护工作,同时大大提高数据同步的时效性。[0024]图1为本发明提出的一种关系型异构数据库数据同步的方法的实施方式一的具体流程图,由图1可知,在实施方式一中,所述的方法包括:
[0025]SlOl:获取用户预先配置的同步表文件、关键字信息表、语句调用表。
[0026]在具体的实施方式中,用户可根据自身需要通过客户端预先配置同步表文件、关键字信息表、语句调用表这三个参数文件,下面逐一进行介绍。
[0027]1、同步表文件
[0028]同步表文件是供用户配置需要同步的表的表名。同步表文件中包括源数据库类型、表所属用户名、表名信息,这三项需要用户进行设置。以ORACLE为例,如表1所示:
[0029]表1
[0030]
【权利要求】
1.一种关系型异构数据库数据同步的方法,其特征是,所述的方法具体包括: 获取用户预先配置的同步表文件、关键字信息表、语句调用表; 实时获取源数据库产生的归档日志文件; 对所述的归档日志文件进行分析,转化为标准结构化查询语言SQL语句; 实时获取源数据库产生的后续日志文件; 根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
2.根据权利要求1所述的方法,其特征是,所述的方法在实时获取源数据库产生的归档日志文件之后还包括: 获取所述的归档日志文件对应的归档表信息; 判断所述的归档表信息是否在所述的同步表文件中; 当判断为是时,执行对所述的归档日志文件进行分析,转化为标准SQL语句的步骤。
3.根据权利要求1或2所述的方法,其特征是,对所述的归档日志文件进行分析,转化为标准SQL语句具体包括: 从所述的关键字信 息表中提取出关键字; 根据所述的关键字对所述的归档日志文件进行检索,得到数据块地址、对象号、块内行号、字段值、数据操纵语言DML操作类型、DML事务号; 根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值; 根据所述的DML操作类型、表名、主键字段、主键字段值、被修改字段名以及被修改字段值生成标准SQL语句。
4.根据权利要求3所述的方法,其特征是,根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值具体包括: 对所述的数据块地址进行分解,得到数据文件号、数据块号; 根据所述的对象号以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名; 对所述的字段值进行分解,得到字段顺序号; 根据所述的表名以及用户预先配置的所述语句调用表从所述表名对应的表中获取主键字段; 根据所述的对象号、数据文件号、数据块号、块内行号以及用户预先配置的所述语句调用表获取被操作记录的行唯一标识ROWID ; 根据所述的表名、主键字段、ROWID以及用户预先配置的所述语句调用表获取被操作记录对应的主键字段值; 根据所述的表名、字段顺序号以及用户预先配置的所述语句调用表获取被修改字段名以及被修改字段值。
5.根据权利要求4所述的方法,其特征是,根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库具体包括: 从所述的后续日志文件中提取出含顺序号SQN信息的日志文件;根据所述的DML事务号判断含SQN信息的日志文件是否为已生成的SQL语句对应的数据控制语言DCL操作; 当判断为是时,若所述的DCL操作执行的是回滚,则丢弃所述的标准SQL语句; 当判断为是时,若所述的DCL操作执行的是提交,则将所述的标准SQL语句传输至目标数据库。
6.根据权利要求1或5所述的方法,其特征是,所述的方法在将所述的标准SQL语句传输至目标数据库之后还包括: 所述的目标数据库执行所述的标准SQL语句; 所述的目标数据库执行提交操作; 所述的目标数据库判断所述的标准SQL语句是否执行成功; 当判断为否时,所述的目标数据库生成错误信息,并将所述的错误信息传输至所述的源数据库; 所述的源数据库根据所述的错误信息生成错误日志。
7.一种关系型异构数据库数据同步的系统,其特征是,所述的系统具体包括源数据库、目标数据库以及数据同步设备,其中,所述的数据同步设备具体包括: 预设信息获取装置,用于获取用户预先配`置的同步表文件、关键字信息表、语句调用表; 归档日志文件获取装置,用于实时获取源数据库产生的归档日志文件; 分析装置,用于对所述的归档日志文件进行分析,转化为标准结构化查询语言SQL语句; 后续日志文件获取装置,用于实时获取源数据库产生的后续日志文件; 语句传输装置,用于根据所述的后续日志文件将所述的标准SQL语句传输至目标数据库。
8.根据权利要求7所述的系统,其特征是,所述的数据同步设备还包括: 归档表信息获取装置,用于获取所述的归档日志文件对应的归档表信息; 判断装置,用于判断所述的归档表信息是否在所述的同步表文件中,当判断为是时,执行所述的分析装置。
9.根据权利要求7或8所述的系统,其特征是,所述的分析装置具体包括: 关键字提取模块,用于从所述的关键字信息表中提取出关键字; 检索模块,用于根据所述的关键字对所述的归档日志文件进行检索,得到数据块地址、对象号、块内行号、字段值、数据操纵语言DML操作类型、DML事务号; 获取模块,用于根据所述的数据块地址、对象号、块内行号、字段值、DML操作类型以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名、主键字段、主键字段值、被修改字段名以及被修改字段值; 标准语句生成模块,用于根据所述的DML操作类型、表名、主键字段、主键字段值、被修改字段名以及被修改字段值生成标准SQL语句。
10.根据权利要求9所述的系统,其特征是,所述的获取模块具体包括: 数据块地址分解单元,用于对所述的数据块地址进行分解,得到数据文件号、数据块号;表名获取单元,用于根据所述的对象号以及用户预先配置的所述语句调用表获取所述归档日志文件对应的表名; 字段值分解单元,用于对所述的字段值进行分解,得到字段顺序号; 主键字段获取单元,用于根据所述的表名以及用户预先配置的所述语句调用表从所述表名对应的表中获取主键字段; ROWID获取单元,用于根据所述的对象号、数据文件号、数据块号、块内行号以及用户预先配置的所述语句调用表获取被操作记录的行唯一标识ROWID ; 主键字段值获取单元,用于根据所述的表名、主键字段、ROffID以及用户预先配置的所述语句调用表获取被操作记录对应的主键字段值; 被修改字段获取单元,用于根据所述的表名、字段顺序号以及用户预先配置的所述语句调用表获取被修改字段名以及被修改字段值。
11.根据权利要求10所述的系统,其特征是,所述的语句传输装置具体包括: 日志文件提取模块,用于从所述的后续日志文件中提取出含顺序号SQN信息的日志文件; 判断模块,用 于根据所述的DML事务号判断含SQN信息的日志文件是否为已生成的SQL语句对应的DCL操作; 第一处理模块,用于当所述的判断模块判断为是时,若所述的DCL操作执行的是回滚,则丢弃所述的标准SQL语句; 第二处理模块,用于当所述的判断模块判断为是时,若所述的DCL操作执行的是提交,则将所述的标准SQL语句传输至目标数据库。
12.根据权利要求7或11所述的系统,其特征是: 所述的目标数据库还用于:执行所述的标准SQL语句,执行提交操作,并判断所述的标准SQL语句是否执行成功,当判断为否时,目标数据库生成错误信息,并将所述的错误信息传输至所述的源数据库; 所述的源数据库根据所述的错误信息生成错误日志。
【文档编号】G06F17/30GK103761318SQ201410040174
【公开日】2014年4月30日 申请日期:2014年1月27日 优先权日:2014年1月27日
【发明者】伊劲松, 刘宇, 殷明, 朱海昆, 陈莹, 杨磊 申请人:中国工商银行股份有限公司