实现异构数据库数据同步的方法技术

技术编号:5992989 阅读:406 留言:0更新日期:2012-04-11 18:40
一种实现异构数据库数据同步的方法,其中异种数据库包括数据库A和数据库B,数据库A是用户应用所使用的数据库,数据库访问接口使用JDBC接口,数据库B是进行数据同步的目的数据库;还包括符合SUN规范的JDBC驱动AB,所述驱动AB包含A的JDBC驱动包和B的JDBC驱动包;对驱动AB上的函数调用都被原样传递给数据库A的JDBC驱动,而对数据库有更改的函数调用,则经过sql语法映射转换后,再传递给数据库B的JDBC驱动。

【技术实现步骤摘要】

本专利技术涉及一种实现数据库系统数据同步的方法,尤其是涉及一种实现异构数据 库数据同步的方法。
技术介绍
在企业级的网络环境中,异种数据库同时并存的现象越来越普遍地存在,比如,在 市场部门采用微软的SQL krver数据库,在研发部门采用国产神通数据库,而企业的总服 务器采用ORACLE数据库,这种异种数据库同时使用的情况在许多系统集成的方案与实施 中屡见不鲜,于是在不同数据库之间的数据内容的同步变成一个普遍令人关心的问题。目 前,各大主流数据库产品都提供了在各自数据库之间进行同步的功能。现有的同步功能一 般采用发布/订阅模型来实现。一般说来,发布/订阅模型包括下列对象发布服务器、分 发服务器、订阅服务器,体系结构如附图1所示。发布服务器发布服务器是提供数据以便同步到其它服务器的服务器。分发服务器分发服务器是具体执行数据分发任务的服务器。订阅服务器订阅服务器是接收同步数据的服务器。首先,在发布服务器进行发布配置,对同步的内容,执行同步的周期等进行设置; 订阅服务器根据需要订阅配置好的发布;分发服务器会根据发布配置执行数据分发,将数 据写入订阅服务器。在这样的实现模型下,数据被写入发布数据库后,分发服务器根据发布 配置定期去检查数据变更,然后将这些数据变更提取出来写入订阅服务器。然而,这种同步技术存在两个主要的问题1、不能实现异构数据库间的数据同步发布服务器和分发服务器的实现和数据库服务器紧密相关(因为要获取数据库 服务器上的数据更改需要数据库本身的支持),各数据库厂商只能开发出配合自己的数据 库产品的发布服务器和分发服务器,目前最多只能做到订阅数据库可以是其他数据库,这 主要通过sql标准来屏蔽不同数据库间的差异。2、对实时性的支持还不够好分发服务器按设定的周期去检查发布数据库的更改,然后再写入订阅数据库,这 一般会有几秒的延时,实时性能不够好。
技术实现思路
为了解决上述问题,本技术提供了一种全新的方法,它可以在任意两个数据库之 间实时的进行数据同步。为实现上述的专利技术目的,本专利技术采用如下的技术方案一种,其中异种数据库包括数据库A和数据库B, 数据库A是用户应用所使用的数据库,数据库访问接口使用JDBC接口,数据库B是进行数 据同步的目的数据库;还包括符合SUN规范的JDBC驱动AB,所述驱动AB包含A的JDBC驱动包和B的JDBC驱动包;对驱动AB上的函数调用都被原样传递给数据库A的JDBC驱动, 而对数据库有更改的函数调用,则经过sql语法映射转换后,再传递给数据库B的JDBC驱 动,其中数据同步的步骤如下步骤1、建立连接,驱动程序AB分别调用数据库A和数据库B的JDBC驱动,建立和 数据库A的连接ConnectionA以及和数据库B的连接ConnectionB ;步骤2、创建语句,驱动程序AB分别在ConnectionA上建立MatementA和在 ConnectionB 上建立 StatementB ;步骤3、转发应用程序对JDBC接口的函数调用,而根据该调用是否对数据库的内 容有更改,又分为两种处理方式,其中对于对数据库的内容无更改的函数调用,驱动程序AB只将该类调用转发给数据 库A,当取得元数据时,取得元数据信息的操作不影响同步目的数据库B的数据,驱动AB只 是将该操作转发给数据库A的驱动程序,取得数据库A的返回结果;对数据库的内容有更改的函数调用,驱动程序AB把该类调用同时转发给数据库A 和数据库B,当执行更新操作时,其中更新数据的操作对同步目的数据库B的数据有影响, 驱动程序AB会同时调用数据库A和数据库B的驱动程序,同步两个数据库之间的数据;步骤4、关闭语句,驱动程序AB同时关闭语句MatementA和MatementB ;步骤5、关闭连接,驱动程序AB同时关闭连接ConnectionA和ConnectionB。本技术利用数据库访问的标准接口,比如ODBC,JDBC, 0LEDB,或者其他数据库访问 标准接口(只要数据库同步双方都支持即可),对它们进行封装,所有通过标准接口进行数 据库访问的应用发给数据库的更新语句(insert,update,delete)都可以被转发给另外的 数据库。使用该方法,通过数据库访问标准接口,数据库产品间的差异被屏蔽了 ;而且,在应 用发送语句给目标数据库的时候,该语句也同时发送给同步数据库,实时性非常好。附图说明下面结合附图和具体实施方式对本专利技术作进一步的说明。图1是现有技术中数据库体系结构图;图2是本专利技术实施例的异构数据库的实时同步的原理图;图3是本专利技术实施例的异构数据库的同步操作的异步执行的原理图;图4是本专利技术的实施例的系统结构图。具体实施例方式下面,本专利技术通过具体实施例来进一步说明如何来实现异构数据库的数据同步。首先,描述下本专利技术实施例的具体原理。数据库系统都支持一些标准的数据库访问接口(ODBC,JDBC,OLEDB等),基于异构 数据库的实时同步技术正是利用了这些标准接口,以JDBC接口为例,其基本原理是假设 有异种数据库A和B,A为用户应用所使用的数据库,数据库访问接口使用JDBC,B是进行 数据同步的目的数据库,则需要开发符合SUN规范的JDBC驱动AB,其中包含A的JDBC驱 动包和B的JDBC驱动包;在实现上,用户对AB驱动上的函数调用都被原样传递给数据库A 的JDBC驱动,而对数据库有更改的函数调用,则经过sql语法映射转换后,再传递给数据库B的JDBC驱动。基本原理图如附图2所示。如附图2所示,我们把用户的JDBC接口调用按功能划分为以下两个部分,并分别 采取不同的处理策略。1、基本功能调用和对数据库可能有更改的函数调用基本功能调用包括与后台数据库建立连接,创建语句等操作。对数据库可能有更 改的函数调用包括执行查询,语句上的属性设置,结果集上的更新操作等。由于这些操作对 数据库的内容可能产生更改,所以为了保证数据库A和B之间的同步,AB驱动程序必须同 时调用数据库A和数据库B的JDBC驱动程序,把调用传递给数据库A和B,完成它们之间的 同步。需要注意的是,因为应用程序的函数调用涉及的相关SQL语句是针对数据库A的, 而数据库B可能不支持这些SQL语句,因此必须根据数据库A和B的SQL特性来完成必要 的转化工作,比如SQL类型的转化和SQL函数的映射。2、对数据库的内容无更改的函数调用主要是一些获取操作,包括获取数据库元数据,查询提交方式和获取类型映射信 息等。由于这些操作不会对数据库的内容产生影响,出于性能考虑,AB驱动程序只会调用 数据库A的驱动程序,返回对数据库A的调用结果。下面我们以一个常见的JDBC调用例子来阐述本专利技术实施例的同步方法的具体流 程。主要功能是用户通过JDBC来更改数据库中的部分数据。原来调用步骤如下,用户程序通过JDBC驱动直接调用数据库A :1)建立连接;2)创建语句;3)取得元数据;4)执行更新操作;5)关闭语句;6)关闭连接;实现符合JDBC标准的AB驱动后,用户程序调用AB驱动程序,在每个步骤AB驱动 程序同步工作如下1)建立连接分别调用数据库A和数据库B的JDBC驱动,建立和数据库A的连接CormectionA 以及和数据库B的连接CormectionB ;2)创建语句同时在 Connec本文档来自技高网
...

【技术保护点】
一种实现异构数据库数据同步的方法,其中异种数据库包括数据库A和数据库B,数据库A是用户应用所使用的数据库,数据库访问接口使用JDBC接口,数据库B是进行数据同步的目的数据库;还包括符合SUN规范的JDBC驱动AB,所述驱动AB包含A的JDBC驱动包和B的JDBC驱动包;对驱动AB上的函数调用都被原样传递给数据库A的JDBC驱动,而对数据库有更改的函数调用,则经过sql语法映射转换后,再传递给数据库B的JDBC驱动,其中数据同步的步骤如下:步骤1、建立连接,驱动程序AB分别调用数据库A和数据库B的JDBC驱动,建立和数据库A的连接ConnectionA以及和数据库B的连接ConnectionB;步骤2、创建语句,驱动程序AB分别在ConnectionA上建立StatementA和在ConnectionB上建立StatementB;步骤3、转发应用程序对JDBC接口的函数调用,而根据该调用是否对数据库的内容有更改,又分为两种处理方式,其中:对于对数据库的内容无更改的函数调用,驱动程序AB只将该类调用转发给数据库A,当取得元数据时,取得元数据信息的操作不影响同步目的数据库B的数据,驱动AB只是将该操作转发给数据库A的驱动程序,取得数据库A的返回结果;对数据库的内容有更改的函数调用,驱动程序AB把该类调用同时转发给数据库A和数据库B,当执行更新操作时,其中更新数据的操作对同步目的数据库B的数据有影响,驱动程序AB会同时调用数据库A和数据库B的驱动程序,同步两个数据库之间的数据;步骤4、关闭语句,驱动程序AB同时关闭语句StatementA和StatementB;步骤5、关闭连接,驱动程序AB同时关闭连接ConnectionA和ConnectionB。...

【技术特征摘要】

【专利技术属性】
技术研发人员:周宇徐岩何清法冯柯顾云苏蒋志勇李阳谢卫平孟勃荣关刚
申请(专利权)人:天津神舟通用数据技术有限公司
类型:发明
国别省市:12

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

1