数据库同步方法及系统的制作方法

文档序号:6423095阅读:118来源:国知局

专利名称::数据库同步方法及系统的制作方法
技术领域
:本发明涉及数据同步
技术领域
,更具体地说,涉及一种数据库同步方法及系统。
背景技术
:在企业生产运营过程中,往往拥有多个系统,而且这些系统之间需要相互配合,部分数据需要在这些系统间共享,因此需要使这些共享数据在不同系统间保持同步。在现有技术中,由于不同系统的差异以及功能的不同,各系统中数据库的物理结构并非完全一致,为同步这些共享数据通常需要为每个系统编写同步程序。在数据同步过程中,由同步程序对源表数据进行转换,将转换后的数据与目标表中的数据进行比对,然后再对差异部分进行增量同步。这种同步方式由于丢失了最初入表时的事务信息,必须在同步过程中同步对应所有事务的差异部分的数据,否则无法保证事务的完整性。这种同步方式不仅工作繁琐,而且如果同步数据较多会导致数据库事务过长,不仅会占用较多系统资源,而且有可能造成同步失败。
发明内容本发明实施例针对现有技术中存在的上述问题,提供一种数据库同步方法及系统,实现不同类型的数据库以及异构数据表之间的数据同步,降低同步过程对系统资源的消耗,保证同步过程的可靠性。为此,本发明实施例提供如下技术方案—种数据库同步方法,包括实时捕捉源数据库中数据的变化信息及该数据变化对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中;根据中间数据库中保存的变化信息确定需要同步的目标数据库;将所述变化信息转换为对应所述目标数据库的目标数据;将对应同一事务的所有目标数据同时更新到所述目标数据库中。优选地,所述实时捕捉源数据库中数据的变化信息及该变化信息对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中包括通过访问源数据库的标准接口获得对源数据库的操作信息;根据所述操作信息生成对应源数据库中数据变化的SQL语句及事务序号;将所述对应源数据库中数据变化的SQL语句及事务序号保存到中间数据库中。优选地,所述根据中间数据库中保存的变化信息确定需要同步的目标数据库包括根据中间数据库中保存的SQL语句确定对源数据库操作的数据表;根据配置文件查找使用所述数据表中数据的其他数据库;将查找到的使用所述数据表中数据的其他数据库作为需要同步的目标数据库。优选地,所述将所述变化信息转换为对应所述目标数据库的目标数据包括根据所述中间数据库中保存的SQL语句,得到对源数据库的操作信息;根据所述目标数据库的类型及对应该目标数据库的转换规则,将得到的对源数据库的操作信息生成符合目标数据库语法的SQL语句。优选地,如果需要同步的目标数据库有多个,则分别将对应同一事务的所有目标数据更新到每个目标数据库中。一种数据同步系统,包括捕捉单元,用于实时捕捉源数据库中数据的变化信息及该数据变化对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中;目标数据库确定单元,用于根据中间数据库中保存的变化信息确定需要同步的目标数据库;转换单元,用于将所述变化信息转换为对应所述目标数据库的目标数据;同步管理单元,用于将对应同一事务的所有目标数据同时更新到所述目标数据库中。优选地,所述捕捉单元包括操作信息获取子单元,用于通过访问源数据库的标准接口获得对源数据库的操作fn息;变化信息生成子单元,用于根据所述操作信息生成对应源数据库中数据变化的SQL语句及事务序号;保存子单元,用于将所述对应源数据库中数据变化的SQL语句及事务序号保存到中间数据库中。优选地,所述目标数据库确定单元包括数据表确定子单元,用于根据中间数据库中保存的SQL语句确定对源数据库操作的数据表;查找子单元,用于根据配置文件查找使用所述数据表中数据的其他数据库,将查找到的使用所述数据表中数据的其他数据库作为需要同步的目标数据库。优选地,所述转换单元包括操作信息获取子单元,用于根据所述中间数据库中保存的SQL语句,得到对源数据库的操作信息;目标数据生成子单元,用于根据所述目标数据库的类型及对应该目标数据库的转换规则,将得到的对源数据库的操作信息生成符合目标数据库语法的SQL语句。优选地,如果需要同步的目标数据库有多个,则所述同步管理单元分别将对应同一事务的所有目标数据更新到每个目标数据库中。本发明实施例数据库同步方法及系统,通过实时捕捉源数据库中数据的变化信息及该数据变化对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中,将变化信息转换为对应目标数据库的目标数据,然后将对应同一事务的所有目标数据同时更新到所述目标数据库中。从而可以实现不同类型的数据库以及异构数据表之间的数据同步,而且,由于保存了事务信息,使得在一次数据同步过程中,只需将对应同一事务的所有目标数据同步到相应的目标数据库中,而无需在一次同步过程中同步对应所有事务的差异数据即可保证数据的一致性,因而大大降低成了同步过程对系统资源的消耗,保证了同步过程的可5靠性。为了更清楚地说明本发明实施的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例数据库同步方法的流程图;图2是本发明实施例数据库同步系统的一种结构示意图。具体实施例方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。如图1所示,是本发明实施例数据库同步方法的流程图,包括以下步骤步骤101,实时捕捉源数据库中数据的变化信息及该变化信息对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中。在本发明实施例中,可以通过访问源数据库的标准接口获得对源数据库的操作信息,比如利用JDBC(JavaDataBaseConnectivity,Java数据库连接)提供的Java程序访问源数据库的标准接口来获得对源数据库的操作信息,当然,也可以采用其他能够访问数据库接口的程序,对此本发明实施例不做限定。然后,根据获得的对源数据库的操作信息生成对应源数据库中数据变化的SQL语句及事务序号,将这些信息保存到中间数据库中。也就是说,中间数据库中记录的内容可以是符合源数据库语法的SQL语句和事务序号。需要说明的是,对源数据库的操作可以是数据表中信息的增加、修改、或删除等操作。例如,通过JDBC的ft·印arecKtatement接口更新数据,其中con表示一个活动连接con.setAutoCommit(false);//事务开始PreparedStatementpstmt=con.prepareStatement("UPDATEEMPLOYEESSETSALARY=?WHEREID=?");pstmt.setBigDecimal(1,153833.00);pstmt.setlnt(2,110592);con.commitQ;//事务提交通过在JDBC层拦截,可以获得SQL语句“UPDATEEMPLOYEESSETSALARY=?WHEREID=〃、以及对应的两个参数153833.00和110592,根据参数类型(参数153833.00的类型为BigDecimal,参数110592的类型为ht),可以得到对应源数据库中数据变化的SQL语句〃UPDATEEMPLOYEESSETSALARY=153833.OOffHEREID=110592〃,同时还要记录对应该SQL语句的事务序号,用于表示该SQL语句是在该事务内完成的。该事务序号可以按照多种方式来设定,比如可以按顺序编号,也可以是MD5、SHA等散列值或者UUID(UniversallyUniqueIdentifier,通用唯一识别码)等唯一标识算法对所述事务进行标识,只要保证不同事务的序号不会重复即可。当然,本发明实施例并不限于基于JDBC来捕捉源数据库中数据的变化信息及该变化信息对应的事务,也可以采用其他方式来实现,比如,可以基于ODBC(OpenDatabaseConnectivity,开放式数据库互连)标准实现应用程序和关系数据库之间通信。一个基于ODBC的应用程序对数据库进行操作时,用户直接将SQLGtructuredQueryLanguage,结构化查询语言)语句传送给ODBC,同时ODBC对数据库的操作也不依赖任何DBMS(DatabaseManagementSystem,数据库管理系统),不直接与DBMS打交道,它将所有的数据库操作由对应的DBMS的ODBC驱动程序完成,由对应DBMS的ODBC驱动程序对DBMS进行操作。也就是说,不论是R)xPro、Access还是Oracle数据库,均可用ODBCAPI(ApplicationProgramminghterface,应用程序编程接口)进行访问。同样,利用ODBC同样能够以统一的方式处理所有的关系数据库。步骤102,根据中间数据库中保存的变化信息确定需要同步的目标数据库。具体地,可以根据中间数据库中保存的SQL语句确定对源数据库操作的数据表,然后再根据配置文件查找使用所述数据表中数据的其他数据库,查找到的使用所述数据表中数据的其他数据库即为需要同步的目标数据库。需要说明的是,上述查找到的目标数据库可以是一个或多个。例如,上例中的SQL语句更新了EMPLOYEES表,根据配置文件可以知道哪几个目标数据库需要EMPLOYEES表的数据,从而确定需要同步哪几个目标数据库。步骤103,将所述变化信息转换为对应所述目标数据库的目标数据。具体地,可以对中间数据库中保存的SQL语句进行分析,得到对源数据库的操作信息,比如表名、字段、数据、调用的函数等等信息,然后再根据预先配置的目标数据库的类型、表名和字段等信息,以及对应该目标数据库的转换规则,将得到的对源数据库的操作信息转换生成符合目标数据库语法的SQL语句,根据需要,在转换过程中还可以进行简单的数据处理。例如,源表中是符合informix语法的SQL语句insertintostatselectuserCountfromtable(multiset(selectcount(氺)userCountfromusers))。目标表是oracle类型的,则转换后的SQL语句为insertintostatselectuserCountfromselectcount(氺)userCountfromusers。需要说明的是,需要同步的目标数据库可以有多个,在这种情况下,对应每个目标数据库有一相映射规则,不同目标数据库的映射规则可以相同,也可以不同。步骤104,将对应同一事务的所有目标数据同时更新到所述目标数据库中。需要说明的是,如果有多个需要同步的目标数据库,则需要分别将对应每个目标数据库的转换后的目标数据更新到相应的目标数据库中。7另外,对应同一事务,可能会有多种变化信息,比如在同一事务内删除了部分数据又新增了一些数据。由于在中间数据库中保存了每个变化信息对应的事务,因此,在进行数据库同步时,可以根据中间数据库中保存的事务信息,将对应同一事务的所有目标数据同时更新到所述目标数据库中。而且由于保存了事务信息,在数据同步过程中,不需要像现有技术那样,在一次同步过程中同步对应所有事务的差异数据即可保证数据的一致性。由此可见,利用本发明实施例数据库同步方法,无需为每个系统编写一个同步程序,通过实时捕捉源数据库中数据的变化信息及该变化信息对应的事务,并利用中间数据库保存源数据库中数据的变化信息及对应的事务,从而在需要对目标数据库进行同步时,直接将所述变化信息转换为对应该目标数据库的目标数据,并将目标数据同步到该目标数据库中,实现不同类型的数据库以及异构数据表之间的数据同步。而且,由于保存了事务信息,使得在一次数据同步过程中,只需将对应同一事务的所有目标数据同步到相应的目标数据库中,而无需在一次同步过程中同步对应所有事务的差异数据即可保证数据的一致性,因而大大降低成了同步过程对系统资源的消耗,保证了同步过程的可靠性。当然,本发明实施例数据库同步方法,同样也适用于相同类型数据库之间的数据同步。对于相同类型数据库之间的数据同步,还可以省略SQL语句的转换过程,直接将中间数据库中保存的SQL语句写到目标数据库中。下面举例进一步详细说明本发明实施例数据库同步方法的具体实现过程。假设源数据库的类型是informix,表名为testl,包含两个varchar字段;目标数据库的类型是oracle,表名为test2,包含一个自增长id和一个varchar。两个数据库表的结构分别如下testliinformix权利要求1.一种数据库同步方法,其特征在于,包括实时捕捉源数据库中数据的变化信息及该数据变化对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中;根据中间数据库中保存的变化信息确定需要同步的目标数据库;将所述变化信息转换为对应所述目标数据库的目标数据;将对应同一事务的所有目标数据同时更新到所述目标数据库中。2.如权利要求1所述的方法,其特征在于,所述实时捕捉源数据库中数据的变化信息及该变化信息对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中包括通过访问源数据库的标准接口获得对源数据库的操作信息;根据所述操作信息生成对应源数据库中数据变化的SQL语句及事务序号;将所述对应源数据库中数据变化的SQL语句及事务序号保存到中间数据库中。3.如权利要求2所述的方法,其特征在于,所述根据中间数据库中保存的变化信息确定需要同步的目标数据库包括根据中间数据库中保存的SQL语句确定对源数据库操作的数据表;根据配置文件查找使用所述数据表中数据的其他数据库;将查找到的使用所述数据表中数据的其他数据库作为需要同步的目标数据库。4.如权利要求2所述的方法,其特征在于,所述将所述变化信息转换为对应所述目标数据库的目标数据包括根据所述中间数据库中保存的SQL语句,得到对源数据库的操作信息;根据所述目标数据库的类型及对应该目标数据库的转换规则,将得到的对源数据库的操作信息生成符合目标数据库语法的SQL语句。5.如权利要求1至4任一项所述的方法,其特征在于,如果需要同步的目标数据库有多个,则分别将对应同一事务的所有目标数据更新到每个目标数据库中。6.一种数据同步系统,其特征在于,包括捕捉单元,用于实时捕捉源数据库中数据的变化信息及该数据变化对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中;目标数据库确定单元,用于根据中间数据库中保存的变化信息确定需要同步的目标数据库;转换单元,用于将所述变化信息转换为对应所述目标数据库的目标数据;同步管理单元,用于将对应同一事务的所有目标数据同时更新到所述目标数据库中。7.如权利要求6所述的系统,其特征在于,所述捕捉单元包括操作信息获取子单元,用于通过访问源数据库的标准接口获得对源数据库的操作信息;变化信息生成子单元,用于根据所述操作信息生成对应源数据库中数据变化的SQL语句及事务序号;保存子单元,用于将所述对应源数据库中数据变化的SQL语句及事务序号保存到中间数据库中。8.如权利要求7所述的系统,其特征在于,所述目标数据库确定单元包括数据表确定子单元,用于根据中间数据库中保存的SQL语句确定对源数据库操作的数据表;查找子单元,用于根据配置文件查找使用所述数据表中数据的其他数据库,将查找到的使用所述数据表中数据的其他数据库作为需要同步的目标数据库。9.如权利要求7所述的系统,其特征在于,所述转换单元包括操作信息获取子单元,用于根据所述中间数据库中保存的SQL语句,得到对源数据库的操作信息;目标数据生成子单元,用于根据所述目标数据库的类型及对应该目标数据库的转换规则,将得到的对源数据库的操作信息生成符合目标数据库语法的SQL语句。10.如权利要求6至9任一项所述的系统,其特征在于,如果需要同步的目标数据库有多个,则所述同步管理单元分别将对应同一事务的所有目标数据更新到每个目标数据库中。全文摘要本发明涉及数据同步
技术领域
,公开了一种数据库同步方法,该方法包括实时捕捉源数据库中数据的变化信息及该数据变化对应的事务,并将捕捉到的变化信息及事务保存到中间数据库中;根据中间数据库中保存的变化信息确定需要同步的目标数据库;将所述变化信息转换为对应所述目标数据库的目标数据;将对应同一事务的所有目标数据同时更新到所述目标数据库中。利用本发明,可以实现不同类型的数据库以及异构数据表之间的数据同步,降低同步过程对系统资源的消耗,保证同步过程的可靠性。文档编号G06F17/30GK102129478SQ20111010500公开日2011年7月20日申请日期2011年4月26日优先权日2011年4月26日发明者温文全,陈宏明申请人:广州从兴电子开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1