CN1770151A - 异种数据库复制方法 - Google Patents
异种数据库复制方法 Download PDFInfo
- Publication number
- CN1770151A CN1770151A CN 200410088784 CN200410088784A CN1770151A CN 1770151 A CN1770151 A CN 1770151A CN 200410088784 CN200410088784 CN 200410088784 CN 200410088784 A CN200410088784 A CN 200410088784A CN 1770151 A CN1770151 A CN 1770151A
- Authority
- CN
- China
- Prior art keywords
- database
- former
- purpose interface
- general
- heterogeneous
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种异种数据库复制方法,涉及原数据库及待复制数据库,包括步骤:建立异种数据库系统通用接口驱动,所述异种数据库系统通用接口驱动包括原数据库数据库系统通用接口驱动和待复制数据库数据库系统通用接口驱动;判断对原数据库的调用是否对原数据库有更改;若对原数据库有更改,则将该调用同时传递给原数据库和待复制数据库的数据库系统通用接口驱动并调用原数据库的数据库系统通用接口驱动;调用待复制数据库的数据库系统通用接口驱动。本发明异种数据库复制方法能够实现任意种数据库间复制而且还具有实时性。
Description
技术领域
本发明涉及数据库系统应用领域,尤指一种异种数据库复制方法。
背景技术
在当前应用数据库系统的环境中,如企业级的网络环境,异种数据库同时并存的现象越来越普遍。比如,在一个公司内部,其市场部门采用微软公司的SQL Server数据库,其研发部门采用神舟软件公司的OSCAR安全数据库,而其总服务器采用甲骨文公司的ORACLE数据库,这种异种数据库同时使用的情况在许多系统集成的方案与实施中屡见不鲜,于是异种数据库之间的数据内容的复制成为人们普遍关心的问题。
目前,各大主流数据库产品都提供了在各自数据库之间进行复制的功能。现有的复制功能一般采用发布/订阅模型来实现的。如图1所示,发布服务器1用于配置发布设置及将数据库系统中的数据提取出来,以便复制到其它服务器;分发服务器2用于具体执行数据分发任务;订阅服务器3、订阅服务器4和订阅服务器5用于接收复制数据。
首先,在发布服务器1进行发布配置,例如:对复制的内容,执行复制的周期等进行设置;订阅服务器3、4、5根据需要订阅配置好的发布;分发服务器2会根据发布配置执行数据分发,将数据写入订阅服务器3或者4或者5。在这样的实现模型下,数据被写入发布数据库1后,分发服务器2根据发布配置定期去检查数据变更,然后将这些数据变更提取出来写入订阅服务器3或者4或者5。
这种复制技术存在以下两个主要缺陷:
1)不能实现任意的异种数据库间的数据复制
发布服务器1和分发服务器2的实现和数据库服务器紧密相关,各数据库厂商只开发出配合自己的数据库产品的发布服务器1和分发服务器2,也就是说发布服务器1和分发服务器2不具有可移植性;目前最多只能做到订阅服务器3或者4或者5能适宜异种数据库,这主要是通过sql(Struct QueryLanguage,结构化查询语言)标准来屏蔽不同数据库间的差异。
2)不支持实时性
分发服务器2按设定的周期去检查发布数据库1的更改,然后再写入订阅服务器3或者4或者5,而不是实时地对数据库的更改进行复制。
发明内容
本发明要解决的技术问题是提供一种能够在任意的异种数据库间进行实时地数据复制的异种数据库复制方法。
为了解决上述问题,本发明采用以下技术方案:
一种异种数据库复制方法,涉及原数据库及待复制数据库,其包括以下步骤:
10)建立异种数据库系统通用接口驱动,所述异种数据库系统通用接口驱动包括原数据库数据库系统通用接口驱动和待复制数据库数据库系统通用接口驱动;
20)判断对原数据库的调用是否对原数据库有更改;
30)若对原数据库有更改,则将该调用同时传递给原数据库和待复制数据库的数据库系统通用接口驱动并调用原数据库的数据库系统通用接口驱动;
40)调用待复制数据库的数据库系统通用接口驱动。
进一步地本发明异种数据库复制方法,在步骤30)后还包括步骤:
31)将已传递给待复制数据库的数据库系统通用接口驱动的对原数据库有更改的调用存放在队列中;
32)空闲时,触发步骤40)。
所述步骤中的数据库系统通用接口驱动为开放数据库连接或爪哇数据库连接。
与现有技术相比,本发明异种数据库复制方法的有益效果是:
由于采用数据库系统通用接口来建立异种数据库的驱动,而数据库系统通用接口是任何种类的数据库系统都支持的接口,可将异种数据库间的差异性屏蔽,故通过调用数据库系统通用接口驱动可实现任意异种数据库的数据复制。
另外还采用将对原数据库有更改的调用同时传递给原数据库和待复制数据库的数据库系统通用接口驱动,通过调用原数据库和待复制数据库的数据库系统通用接口驱动,即将对原数据库有更改的调用在原数据库上执行,同时也将该调用在待复制数据库上执行,因而能够实现实时地进行数据复制,具有实时性。
最后,本发明异种数据库复制方法的另一个技术方案,采用先将已传递给待复制数据库的数据库系统通用接口驱动的调用存放在队列中,待服务器空闲时或者在适宜的时候,再调用待复制数据库的数据库系统通用接口调用,换句话说就是待服务器空闲时或者在适宜的时候,再进行数据的复制,这样可以避免用户应用感觉数据库访问慢,但却牺牲了一定的实时性。
附图说明
图1是现有技术用于异种数据库复制的发布/订阅模型图;
图2是本发明异种数据库复制方法的流程图;
图3是本发明异种数据库复制方法的实施例的应用图;
图4和图5是另一个例子的应用图。
具体实施方式
如图2所示,本发明异种数据库复制方法,涉及原数据库及待复制数据库,包括以下步骤:
步骤10)建立异种数据库系统通用接口驱动,所述异种数据库系统通用接口驱动包括原数据库数据库系统通用接口驱动和待复制数据库数据库系统通用接口驱动;
步骤20)判断对原数据库的调用是否对原数据库有更改;
步骤30)若对原数据库有更改,则将该调用同时传递给原数据库和待复制数据库的数据库系统通用接口驱动并调用原数据库的数据库系统通用接口驱动;
步骤40)调用待复制数据库的数据库系统通用接口驱动。
上述步骤中所述的数据库系统通用接口指开放数据库连接(ODBC,OpenDatabase Connectivity)、爪哇数据库连接(JDBC,JAVA Database Connectivity)等,因任何种类的数据库系统都支持这些数据库系统通用接口,故采用建立异种数据库系统通用接口驱动,可屏蔽异种数据库间的差异。如果对原数据库的调用对原数据库有更改,也就是说该调用将会引起原数据库与待复制数据库不一致,因而将该调用也同时传递给待复制数据库的数据库系统通用接口驱动,这样步骤40)调用待复制数据库的数据库系统通用接口驱动,即将对原数据库有更改的调用在原数据库上执行,而且同时也在待复制数据库上执行,也就是说,对原数据库进行了更改,同时在待复制数据库上也进行了同样的更改,保证了原数据库与待复制数据库的一致性,也即实现了原数据库向待复制数据库的复制。
如图2所示,若步骤20)判断的结果为对原数据库的调用不会对原数据库产生更改,则执行:
步骤50)将调用传递给原数据库的数据库系统通用接口驱动;
步骤60)调用原数据库的数据库系统通用接口驱动。
从上述步骤可知,若对原数据库的调用对原数据库不会产生更改,也即表示该调用不会导致原数据库与待复制数据库的不一致性,故没有必要将该调用也传递给待复制数据库的数据库系统通用接口驱动。
如图2所示,执行完步骤40)或者步骤60)后转到步骤20),即继续判断下一个对原数据库的调用是否对原数据库有更改,根据判断结果执行相应的步骤。
下面以北京神舟软件有限公司为例来详述本发明异种数据库复制方法的技术方案。
两个异种数据库A和数据库B,数据库A为用户应用所使用的数据库,数据库B是进行数据复制的目的数据库,数据库访问接口采用数据库系统通用接口JDBC。
首先建立符合规范的JDBC驱动AB,该驱动包含数据库A的JDBC驱动包和数据库B的JDBC驱动包,并且实现标准要求的所有接口方法。
本例JDBC驱动AB的主要代码如下:
public class ABDriver implements java.sql.Driver{//实现标准接口 java.sql.Driver java.sql.Driver oscarDriver=null;//Oscar数据库JDBC Driver java.sql.Driver otherDriver=null;//其他数据库JDBC Driver static{ try{ java.sql.DriverManager.registerDriver(new ABDriver());//向驱动管理器注 册新驱动 } catch(Exception e){} } public Connection connect(String url,Properties info)throws SQLException{// 连接方法 if(url.starts With(ojava.sql.Config.DB_URL_START_CHAR)){//判断驱动 类型 ojava.sql.Connection con=null; try{ if(Config.DB_URL_START_CHAR.equals(″$″)){//获取sqlserver数据库 Driver otherDriver=(java.sql.Driver) (Class.forName(Config.DB_SQLSERVER_DRIVER).newInstance()); } else if(Config.DB_URL_START_CHAR.equals(″#″)){//获取oracle数 据库Driver otherDriver=(java.sql.Driver) ass.forName(Config.DB_ORACLE_DRIVER).newInstance()); } else if(Config.DB_URL_START_CHAR.equals(″@″)){//获取db2数 据库Driver otherDriver=(java.sql.Driver) (Class.forName(Config.DB_DB2_DRIVER).newInstance()); } else{ throw new SQLException(″illegal jdbc url″);//抛出异常 } oscarDriver=(java.sql.Driver) (Class.forName(″com.oscar.Driver″).newInstance());////获取oscar数据库Driver Properties pt=new Properties(); <!-- SIPO <DP n="4"> --> <dp n="d4"/> pt.put(″user″,Config.DB_USERNAME);//用户名 pt.put(″password″,Config.DB_PASSWORD);//用户密码 con=new ojava.sql.Connection();//创建ABDriver的连接对象 try{ con.oscarConnect=(com.oscar.jdbc3.Jdbc3Connection) (Class.forName(″com.oscar.jdbc3.Jdbc3Connection″).newInstance());//获取 OSCAR数据库连接 ((com.oscar.jdbc3.Jdbc3Connection)con.oscarConnect).openConnection(Config.D B_IP,Integer.parseInt(Config.DB_PORT),pt,Config.DB_NAME,Config.DB_URL, (com.oscar.Driver)oscarDriver);//打开连接 break; } catch(Exception ex){} con.otherConnect=java.sql.DriverManager.getConnection(url,info);//获 取其他数据库连接 if(con.otherConnect==null) return null; else return(java.sql.Connection)con;//把ABDriver的连接对象返回给用户 } catch(SQLException ex){ if(con!=null && con.otherConnect!=null){ con.otherConnect.close();//关闭其他数据库连接 } if(con!=null && con.oscarConnect!=null){ con.oscarConnect.close();//关闭OSCAR数据库连接 } throw ex; } catch(Exception e){ if(con!=null && con.otherConnect!=null){ con.otherConnect.close();//关闭其他数据库连接 } if(con!=null && con.oscarConnect!=null){ con.oscarConnect.close();//关闭OSCAR数据库连接 } throw new SQLException(″oscar.unusual″); } } else{ throw new SQLException(″illegal jdbc url″); <!-- SIPO <DP n="5"> --> <dp n="d5"/> } } }
如图3所示,用户应用(用户应用程序)创建的数据库驱动AB的连接包括一个数据库A的连接和一个数据库B的连接,故同时创建数据库A和数据库B的连接。对于调用Rollback()(回滚语句)、Commit()(提交语句)及PrepareStatement()(预备语句)等都可能会对数据库A产生更改,故将这些调用也传递给数据库B的JDBC驱动;而对于调用GetMetaData()(获取连接元数据)、GetAutoCommit()(查询提交方式)、GetTypeMap()(获取类型映射)等不会对数据库A产生更改,故只将这些调用传递给数据库A的JDBC驱动。
采用本发明异种数据库复制方法进行异种数据库复制能够对任意数据库间进行复制而且还具有很好的实时性,但是由于对原数据库有更改的调用原数据库的数据库系统通用接口驱动和待复制数据库的数据库系统通用接口驱动都要执行后,才处理对原数据库的下一次调用,因而可能会使用户应用感到访问变慢。
故,如图4所示,本发明数据库复制方法的另一个技术方案,还包括:
步骤31)将已传递给待复制数据库的数据库系统通用接口驱动的对原数据库有更改的调用存放在队列中;
步骤32)空闲时,触发步骤40)。
从上述步骤可知将已传递给待复制数据库的数据库系统通用接口驱动的对原数据库有更改的调用先存放在队列中,并不马上执行这些调用,由一个工作线程根据用户配置和服务器运行状况,在服务器空闲时,或者在合适的时候执行这些调用,即将数据复制到待复制数据库中。
如图5所示,将所有对原数据库有更改的调用都存放在函数队列中,工作线程在合适的时候再调用待复制数据库的数据库系统通用接口驱动来执行这些调用,实现原数据库到待复制数据库的数据的复制。
此种技术方案不会使用户应用感到数据库访问变慢,但牺牲了一定的实时性。
以上所述仅是本发明异种数据库复制方法的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明异种数据库复制方法原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明异种数据库复制方法的保护范围。
Claims (4)
1、一种异种数据库复制方法,涉及原数据库及待复制数据库,其特征在于,包括步骤:
10)建立异种数据库系统通用接口驱动,所述异种数据库系统通用接口驱动包括原数据库的数据库系统通用接口驱动和待复制数据库的数据库系统通用接口驱动;
20)判断对原数据库的调用是否对原数据库有更改;
30)若对原数据库有更改,则将该调用同时传递给原数据库和待复制数据库的数据库系统通用接口驱动并调用原数据库的数据库系统通用接口驱动;
40)调用待复制数据库的数据库系统通用接口驱动。
2、如权利要求1所述的异种数据库复制方法,其特征在于,所述步骤30)后还包括步骤:
31)将已传递给待复制数据库的数据库系统通用接口驱动的对原数据库有更改的调用存放在队列中;
32)空闲时,触发步骤40)。
3、如权利要求1或者2所述的异种数据库复制方法,其特征在于,所述数据库系统通用接口驱动为开放数据库连接。
4、如权利要求1或者2所述的异种数据库复制方法,其特征在于,所述数据库系统通用接口驱动为爪哇数据库连接。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410088784 CN1770151A (zh) | 2004-11-03 | 2004-11-03 | 异种数据库复制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410088784 CN1770151A (zh) | 2004-11-03 | 2004-11-03 | 异种数据库复制方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1770151A true CN1770151A (zh) | 2006-05-10 |
Family
ID=36751456
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410088784 Pending CN1770151A (zh) | 2004-11-03 | 2004-11-03 | 异种数据库复制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1770151A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521387A (zh) * | 2011-12-21 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种基于插件的数据迁移方法 |
CN101923551B (zh) * | 2009-06-12 | 2015-06-03 | Sap欧洲公司 | 信息值驱动的接近实时的决策支持 |
-
2004
- 2004-11-03 CN CN 200410088784 patent/CN1770151A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101923551B (zh) * | 2009-06-12 | 2015-06-03 | Sap欧洲公司 | 信息值驱动的接近实时的决策支持 |
CN102521387A (zh) * | 2011-12-21 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 一种基于插件的数据迁移方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8166070B2 (en) | Techniques for sharing persistently stored query results between multiple users | |
Hui et al. | Supporting database applications as a service | |
US8417740B2 (en) | Universal data management interface | |
US7895203B2 (en) | Method for deferred deletion of entries for a directory service backing store | |
KR100959473B1 (ko) | 저장 플랫폼과 애플리케이션 프로그램 사이의 애플리케이션프로그래밍 인터페이스 | |
CN1122233C (zh) | 关系数据库管理系统中用于支持动态运行时间对象定义的方法和装置 | |
KR101024730B1 (ko) | 항목 기반 저장 플랫폼 내에서 데이터 모델링하기 위한시스템 및 방법 | |
EP1903752B8 (en) | A data management system and method | |
CN1928873A (zh) | 一种实现负荷分担的数据库访问方法及系统 | |
US8438141B2 (en) | System and method for providing secure access to data with user defined table functions | |
CN1507597A (zh) | 用于管理分布式事务内跨越多个dbms的分布式保存点的方法 | |
CN1808429A (zh) | 用于处理搜索查询的方法和系统 | |
CN1281611A (zh) | 通信网络 | |
CN1866283A (zh) | 实现规则系统触发的系统及方法 | |
CN1547397A (zh) | 一种单板版本的即插即用的管理方法 | |
CN1633080A (zh) | 在网络管理系统中实现日志的方法 | |
CN1825306A (zh) | 基于关系数据库的xml数据存储与访问方法 | |
CN1770151A (zh) | 异种数据库复制方法 | |
CN100440803C (zh) | 模型化处理网格信息的方法 | |
CN1157660C (zh) | 多用户的安全性操作文件方法 | |
CN1193307C (zh) | 修改数据库内容的方法 | |
CN1570919A (zh) | 用于新建、迁入、迁出、以及删除文档的方法 | |
CN1308865C (zh) | 具有延展性的客户数据系统及其方法 | |
CN1967532A (zh) | 企业应用构架中利用缓冲技术调用数据的方法及装置 | |
Sela et al. | Oracle Transparent Gateway for Microsoft SQL Server Administrator’s Guide, 10g Release 2 (10.2) for Microsoft Windows (32-bit) B14270-01 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |