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

文档序号:6576499阅读:151来源:国知局
专利名称:异构数据库同步方法及系统的制作方法
技术领域
本发明涉及数据库数据同步技术领域,特别涉及一种异构数据库同步方法 及系统。
背景技术
目前,信息化建设正以前所未有的速度发展,各种各样的数据急剧膨胀。 现有的计算机系统主要通过数据库实现对数据的存储和维护,各应用系统通过 访问数据库获取所需数据或进行相关数据维护。很多公司都推出了自己的数据
库软件,例如美国微软公司的SQL Server、美国甲骨文公司的Oracle等。
为了保证应用系统之间数据的一致,往往需要进行数据库(例如本地数据 库与远程数据库)数据地同步。对于同一结构的数据库,可直接采用复制方式 实现多个数据库间的数据同步
然而,由于不同的数据库具有不同的存储结构并采用不同方式维护,因此 异构数据库之间无法采用直接复制的方式实现数据同步。通常,异构数据库之 间的数据交互是通过ODBC (Open Database Connectivity,开放数据库互连) 或数据库本身自带的导出导入功能或是第三方软件(例如美国甲骨文公司的透 明网关技术,美国国际商务机器公司的的CCD表(一致变化数据表)方案, 美国微软公司的出版者/订阅者方案等)进行交互。
上述异构数据库之间的数据同步方法虽然可实现数据同步,但这些方案只 能一次性进行数据的转换(例如定时转换),而不能进行实时同步操作。

发明内容
本发明要解决的技术问题在于,针对上述异构数据库之间无法实现实时同 步的问题,提供一种异构数据库同步方法及系统。本发明解决上述技术问题的技术方案是,提供一种异构数据库同步方法, 用于实现异构的源数据库和目的数据库之间的数据同步,包括以下步骤
(a) 在源数据库端根据源数据库的数据维护操作创建目的数据库的执行
语句;
(b) 目的数据库端从所述源数据库端获取所述执行语句;
(c) 目的数据库端执行所述执行语句更新目的数据库中的数据。 在本发明所述的异构数据库同步方法中,在所述步骤(a)之前还包括
初始化目的数据库,使该目的数据库中的数据与源数据库的数据一致。
在本发明所述的异构数据库同步方法中,所述步骤(a)中还包括将所述 执行语句存储到执行记录中,所述步骤(b)中目的数据库端从源数据库端获
取所述执行记录,所述步骤(C)包括
(cl)从所述执行记录中读取最早的一条执行语句并执行,并在执行完毕 删除该执行语句;
(c2)判断执行记录中是否存在执行语句,若存在则返回步骤(cl),否 则返回步骤(b)。
在本发明所述的异构数据库同步方法中,所述源数据库是美国甲骨文公司 的mysql,所述目的数据库是美国微软公司的sql server,所述步骤(b)中 目的数据库端通过mysql ODBC把所述源数据库端的执行记录拉到目的数据库 端,所述执行记录中包括多条创建最早的执行语句。
在本发明所述的异构数据库同步方法中,所述源数据库是美国微软公司的 sql server,所述目的数据库是美国甲骨文公司的mysql,所述步骤(b)中 源数据库端通过xp一cmdshell把所述源数据库端创建最早的一条执行语句推 到目的数据库端执行。
本发明还提供一种异构数据库同步系统,用于实现异构的源数据库和目的 数据库之间的数据同步,包括
触发器,位于源数据库端并用于在源数据库端根据源数据库的数据维护操 作创建目的数据库的执行语句;
传送单元,用于在源数据库端和目的数据库端之间传送所述执行语句;执行单元,位于目的数据库端并用于在目的数据库端执行所述执行语句更 新目的数据库中的数据。
在本发明所述的异构数据库同步系统中,还包括初始化单元,用于初始 化目的数据库,使该目的数据库中的数据与源数据库的数据一致。
在本发明所述的异构数据库同步系统中,还包括用于存储执行语句的执行 记录,所述传送单元为位于目的数据库端的记录获取单元,所述记录获取单元 用于从源数据库端获取包括多条执行语句的执行记录,所述执行单元从所述执 行记录中依次读取执行语句执行。
在本发明所述的异构数据库同步系统中,所述源数据库是美国甲骨文公司
的mysql,所述目的数据库是美国微软公司的sql server,所述传送单元位于 目的数据库端并通过mysql ODBC把所述源数据库端的执行记录拉到目的数据 库端,所述执行记录中包括多条创建最早的执行语句。
在本发明所述的异构数据库同步系统中,所述源数据库是美国微软公司的 sq1 server,所述目的数据库是美国甲骨文公司的mysql,所述传送单元位于 源数据库端并通过xp—cmdshell把所述源数据库端创建最早的一条执行语句 推到目的数据库端。
本发明的异构数据库同步方法及系统,通过在源数据库端创建目的数据库 的执行语句并将执行语句发送到目的数据库执行,实现了异构的源数据库和目 的数据库之间数据的实时同步。克服了已有异构数据库之间数据交互不能实时 同步的缺点,并大大提高了数据同步的实时性和一致性。


下面将结合附图及实施例对本发明作进一步说明,附图中 图1是本发明异构数据库同步系统第一实施例的示意图; 图2是本发明异构数据库同步系统第二实施例的示意图; 图3是本发明异构数据库同步方法第一实施例的流程示意图; 图4是本发明异构数据库同步方法第二实施例的流程示意图。
具体实施方式
''
本发明通过触发器在源数据库数据变化时生成目的数据库的执行语句,并
通过mysql 0DBC、 sql server的xp—cmdShell命令和dos的管道命令实现执 行语句的传送,最终在目的数据库端执行上述执行语句,从而实现了异构数据 库的实时同步,克服了已有传统异构数据库之间数据交互不能实时同步的缺 点,并大大提高了数据同步的实时性和一致性。
如图1所示,是本发明异构数据库同步系统第一实施例的示意图。该系统 由运行源数据库的源数据库服务器11和运行目的数据库的目的数据库服务器 14组成,其中源数据库服务器11和目的数据库服务器14为通过网络或类似 方式连接的两套硬件设备或者共用同一硬件设备。
在源数据库服务器11中包括有触发器12及用于存储执行语句的执行记录 13。在本实施例中,触发器在源数据库服务器11中的源数据库执行数据维护 操作(例如插入数据、删除数据或数据更新等)时,实时创建相应的可由目的 数据库执行的语句(也可称为日志)。由触发器12创建的执行语句该执行语句 的创建时间一起存储到执行记录13中。在具体实现时,执行记录可以是一个 数据表。上述执行语句例如
create DEFINER 二 ' root'@'localhost' trigger Worker—i after insert on
Worker for each row
insert into test. SyncTextLog(logSQL, writeTime, rowld) values(concat(〃insert into Worker(workerld, workerName)
values (, ", new. workerld, ", , , ", new. workerName, ", )"), now(), uuid());
drop trigger Worker—u ;
create DEFINER = ' root'@'localhost' trigger Worker—u after update on Worker for each row
insert into test. SyncTextLog(logSQL,writeTime,rowld)
values (concat("update Worker set workerName 〃, new. workerName, 〃' where workerld二, ", new. workerld, ", ") , now () , uuid ());create DEFINER 二 ' root'@'localhost' trigger Worker_d after delete on Worker for each row
insert into test. SyncTextLog(logSQL,writeTime,rowid)
values(concat(〃delete Worker where
workerld二, ", Old. workerld, ", "), now(), uuid())
在目的数据库服务器14中包括有记录获取单元15以及执行单元16。其 中记录获取单元15用于从源数据库服务器11中获取执行记录,每次获取的执 行记录可以包括创建时间最早的多条执行语句(执行语句的数量可根据需要设 定),并在源数据库服务器11上的执行记录中对获取的执行语句进行标记。执 行单元16为目的数据库系统的一部分(例如数据库代理),其依次执行记录获 取单元15获取的执行记录中的执行语句(按时间顺序从最早创建的开始),以 对目的数据库中的数据进行维护操作。
例如,在该实施例中,若源数据库是美国甲骨文公司的mysql,目的数据 库是美国微软公司的sql server,则记录获取单元15通过安装于目的数据库 服务器14上的mysql ODBC实现,通过mysql ODBC把源数据库端的执行记录 拉到目的数据库端。
如图2所示,是本发明异构数据库同步系统第二实施例的示意图。该系统 同样由运行源数据库的源数据库服务器21和运行目的数据库的目的数据库服 务器24组成,其中源数据库服务器21和目的数据库服务器24为通过网络或 类似方式连接的两套硬件设备或者共用同一硬件设备。
在源数据库服务器21中包括有触发器22、用于存储执行语句的执行记录 23以及记录推送单元25。在本实施例中,触发器22在源数据库服务器21中 的源数据库执行数据维护操作(例如插入数据、删除数据或数据更新等)时, 实时创建相应的可由目的数据库执行的语句。由触发器22创建的执行语句该 执行语句的创建时间一起存储到执行记录23中。在具体实现时,执行记录可 以是一个数据表。记录推送单元25用于将执行记录23中的执行语句按时间顺序依次推送到目的数据库服务器24中。 "
在目的数据库服务器24中包括有执行单元26。执行单元26为目的数据
库系统的一部分,其用于执行记录推送单元25推送过来的执行语句,以对目
的数据库中的数据进行维护操作。
例如,在该实施例中,若源数据库是美国微软公司的sql server,目的
数据库是美国微软公司的my sql,则记录推送单元25可通过sql server本
身的xp一cmdshe11实现,从而把源数据库端创建最早的一条执行语句推到目的
数据库端。
在上述实施例中,还可包括一个初始化单元,用于初始化目的数据库(利 用ODBC或数据库本身自带的导出导入功能或是第三方软件),使该目的数据库 中的数据与源数据库的数据一致,然后再由触发器针对后续的源数据库操作创 建执行语句。
图3是本发明异构数据库同步方法第一实施例的流程示意图,本实施例用 于实现美国甲骨文公司的mysql (源数据库)与美国微软公司的sql server (目的数据库)之间的数据同步。该方法包括
步骤S31:实时监测源数据库的数据操作,并在源数据库存在数据操作时 执行步骤S32。
步骤S32:根据源数据库的数据操作创建目的数据库可直接执行的执行语 句,例如插入数据(insert)、删除数据(delete)、更新数据(update)等, 并将创建的执行语句与创建时间一起存储到一个执行记录(例如一个位于源数 据库本地的数据表)。上述步骤S31、 S32可独立地连续执行,后续步骤不影响 该步骤的执行。
步骤S33:目的数据库端使用mysql ODBC从源数据库端将执行记录拉到 目的数据库,该获取的执行记录包括时间最早的多条执行语句,其中执行语句 的数量可根据需要设定。在源数据库端可将已经被拉到目的数据库的执行语句 进行标记或者删除。
步骤S34:目的数据库从步骤S33中获取的执行记录中读取并执行一条最 早的执行语句对目的数据库中的数据进行相应操作,并在执行完毕删除该执行语句。例如可通过以下语句执行 。:
exec master., xp一cmdshell 、cho delete from 日志表where | mysql -h IP地址 -u username, -p password'
步骤S35:判断从步骤S33中获取的执行记录是否为空,若非空则返回步 骤S34,若为空则返回步骤S33。
图4是本发明异构数据库同步方法第二实施例的流程示意图,本实施例用 于实现美国微软公司的sql server (源数据库)与美国甲骨文公司的mysql (目的数据库)之间的数据同步。该方法包括
步骤S41:实时监测源数据库的数据操作,并在源数据库存在数据操作时 执行步骤S42。
步骤S42:根据源数据库的数据操作创建目的数据库可直接执行的执行语 句,例如插入数据(insert)、删除数据(delete)、更新数据(update)等, 并将创建的执行语句与创建时间一起存储到一个执行记录(例如一个位于源数 据库本地的数据表)。上述步骤S41、 S42可独立地连续执行,后续步骤不影响 该步骤的执行。
歩骤S43:源数据库端使用xp_cmdshell命令把执行记录中最早的一条执 行语句推送到目的数据库端执行,并在执行完毕删除上述执行语句。例如可通 过以下语句执行
exec master., xp—cmdshe 11 scho 日志 i mysql - h IP 地址 -u
username, -p password
上述步骤S43反复执行,只要源数据库端的执行记录非空。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局
限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易
想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护
范围应该以权利要求的保护范围为准。
权利要求
1、一种异构数据库同步方法,用于实现异构的源数据库和目的数据库之间的数据同步,其特征在于,包括以下步骤(a)在源数据库端根据源数据库的数据维护操作创建目的数据库的执行语句;(b)目的数据库端从所述源数据库端获取所述执行语句;(c)目的数据库端执行所述执行语句更新目的数据库中的数据。
2、 根据权利要求1所述的异构数据库同步方法,其特征在于,在所述步 骤(a)之前还包括初始化目的数据库,使该目的数据库中的数据与源数据库的数据一致。
3、 根据权利要求1所述的异构数据库同步方法,其特征在于,所述步骤 (a)中还包括将所述执行语句存储到执行记录中,所述步骤(b)中目的数据库端从源数据库端获取所述执行记录,所述步骤(C)包括(cl)从所述执行记录中读取最早的一条执行语句并执行,并在执行完毕 删除该执行语句;(c2)判断执行记录中是否存在执行语句,若存在则返回步骤(cl),否 则返回步骤(b)。
4、 根据权利要求1所述的异构数据库同步方法,其特征在于,所述源数 据库是美国甲骨文公司的mysql,所述目的数据库是美国微软公司的sql server,所述步骤(b)中目的数据库端通过mysql ODBC把所述源数据库端的 执行记录拉到目的数据库端,所述执行记录中包括多条创建最早的执行语句。
5、 根据权利要求1所述的异构数据库同步方法,其特征在于,所述源数 据库是美国微软公司的sql server,所述目的数据库是美国甲骨文公司的 mysql,所述步骤(b)中源数据库端通过xp—cmdshell把所述源数据库端创建 最早的一条执行语句推到目的数据库端执行。
6、 一种异构数据库同步系统,用于实现异构的源数据库和目的数据库之 间的数据同步,其特征在于,包括触发器,位于源数据库端并用于在源数据库端根据源数据库的数据维护操作创建目的数据库的执行语句;传送单元,用于在源数据库端和目的数据库端之间传送所述执行语句; 执行单元,位于目的数据库端并用于在目的数据库端执行所述执行语句更新目的数据库中的数据。
7、 根据权利要求6所述的异构数据库同步系统,其特征在于,还包括初始化单元,用于初始化目的数据库,使该目的数据库中的数据与源数据库的 数据一致。
8、 根据权利要求6所述的异构数据库同步系统,其特征在于,还包括用于存储执行语句的执行记录,所述传送单元为位于目的数据库端的记录获取单 元,所述记录获取单元用于从源数据库端获取包括多条执行语句的执行记录, 所述执行单元从所述执行记录中依次读取执行语句执行。
9、 根据权利要求6所述的异构数据库同步系统,其特征在于,所述源数 据库是美国甲骨文公司的mysql,所述目的数据库是美国微软公司的sql server,所述传送单元位于目的数据库端并通过mysql ODBC把所述源数据库 端的执行记录拉到目的数据库端,所述执行记录中包括多条创建最早的执行语 句。
10、 根据权利要求6所述的异构数据库同步系统,其特征在于,所述源数 据库是美国微软公司的sql server,所述目的数据库是美国甲骨文公司的 mysql,所述传送单元位于源数据库端并通过xp—cmdshell把所述源数据库端 创建最早的一条执行语句推到目的数据库端。
全文摘要
本发明涉及一种异构数据库同步方法,用于实现异构的源数据库和目的数据库之间的数据同步,包括以下步骤(a)在源数据库端根据源数据库的数据维护操作创建目的数据库的执行语句;(b)目的数据库端从所述源数据库端获取所述执行语句;(c)目的数据库端执行所述执行语句更新目的数据库中的数据。本发明还提供一种对应的系统。本发明通过在源数据库端创建目的数据库的执行语句并将执行语句发送到目的数据库执行,实现了异构的源数据库和目的数据库之间数据的实时同步。
文档编号G06F17/30GK101615199SQ200910109190
公开日2009年12月30日 申请日期2009年7月31日 优先权日2009年7月31日
发明者亮 徐, 思 陈, 陈英飞, 黄东喜 申请人:深圳市珍爱网信息技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1