一种异构数据库平台数据的同步方法

文档序号:6633640阅读:226来源:国知局
一种异构数据库平台数据的同步方法
【专利摘要】本申请提供了一种异构数据库平台数据的同步方法,包括以下步骤:在PostgreSQL数据库中分别安装与源数据库和目标数据库对应的第一外部数据交换模块和第二外部数据交换模块,并建立第一外部数据交换模块扩展及第一外部服务器、第二外部数据交换模块扩展及第二外部服务器;所述源数据库和所述目标数据库为异构数据库;创建分别与源数据库和目标数据库建立映射关系的第一外部数据表和第二外部数据表,再分别建立捕捉数据变更的触发器。本申请创新性的将PostgreSQL数据库和相应的数据交换模块作为中介,来实现外部多源异构数据库之间的数据同步/复制。
【专利说明】一种异构数据库平台数据的同步方法

【技术领域】
[0001] 本申请涉及数据库数据同步领域,特别地,涉及一种异构数据库平台数据的同步 方法。

【背景技术】
[0002] 现有技术中,国外大多数数据库厂商提供了数据复制的功能,而且一般都支持异 构数据库间的复制,如MS SQL Server、Oracle、Sybase等,也开发了能作为数据导入导出 工具的产品,如SQLServerfOOO的DTS。有一些软件商开发的复制中间件应用于数据复制 领域,如比较知名的有PeerDirect公司的roRE、SynchroLogic公司的SyncKit、Syware公 司的DataSync等。这些方法的优点在于它们独立于数据库系统本身,能够解决各种异构问 题;能够适应主从复制和同步复制;能够提供丰富的API,可扩展性好。
[0003] 但现有产品仍然存在一些缺陷:
[0004] 1、异构数据库数据的同步/复制大都依赖于数据库管理系统的支持,普遍存在着 符合某种体系结构或标准的前提,因此兼容性欠缺,故应用范围受到一定的限制;复制中间 件只针对一部分应用领域或者只针对某些特定的异构平台,并不能广泛应用。
[0005] 2、数据库厂商提供的异构数据库间的复制对异构的支持程度比较有限:
[0006] 例如:MSSQLServer的复制方案对网络要求高,如果因网络故障或其他原因找不 到目标数据库则复制功能会直接down掉,需要复制的表在使用过程中不能经常变动表结 构;Oracle的复制方案配置和管理比较复杂,需要有专业的技术人员处理;Sybase的复制 方案数据和网络的流量大,且配置困难;DB2复制方案CCD表要占用较多的系统资源,如存 储空间和进程等,需要安装各种数据库的客户端,通过客户端连接到其他类型的数据库。
[0007] 3、数据库数据同步/复制的方法存在针对性较强,缺乏普遍的适用性,难以进行 二次开发以及不能进行持续的数据集成的问题。


【发明内容】

[0008] 本申请目的在于提供一种异构数据库平台数据的同步方法,以解决现有技术的多 源、分布式、异构数据库平台数据同步/复制的局限性和兼容性不足的技术问题。
[0009] 为实现上述目的,本申请提供了一种异构数据库平台数据的同步方法,包括以下 步骤:
[0010] A、在PostgreSQL数据库中分别安装与源数据库和目标数据库对应的的第一外部 数据交换模块和第二外部数据交换模块,并建立第一外部数据交换模块扩展及第一外部服 务器、第二外部数据交换模块扩展及第二外部服务器;
[0011] 所述源数据库和所述目标数据库为异构数据库;外部数据交换模块包括预定义的 数据类型映射文件;
[0012] B、基于第一外部服务器和第二外部服务器,创建分别与源数据库和目标数据库建 立映射关系的第一外部数据表和第二外部数据表;
[0013] C、基于第一外部数据表和/或第二外部数据表,分别建立捕捉数据变更的触发 器。
[0014] 优选的,在所述源数据库和所述目标数据库需要更新的数据表上,建立捕捉数据 变更的触发器。
[0015] 优选的,步骤B中建立映射关系为:
[0016] 创建PostgreSQL数据库角色与所述源数据库、目标数据库角色的映射。
[0017] 优选的,所述映射关系以文件形式保存。
[0018] 优选的,所述源数据库和所述目标数据库为MSSQL Server、Oracle、DB2、Sybase、 MySQL、PostgreSQL 中的任意一种。
[0019] 优选的,所述源数据库和所述目标数据库的基础操作系统为Unix、Windows NT、 Linux中的任意一种。
[0020] 本申请具有以下有益效果:
[0021] 本申请创新性的采用开源数据库PostgreSQL为中间数据库,综合利用开源DBMS 及其外部数据交换模块实现多源、分布式、异构数据库平台业务数据的同步/复制,包括 PostgreSQL数据库相应外部数据交换模块的安装、外部数据交换模块的建立、映射用户 的创建、外部数据表的创建;能够实现多种异构数据库平台数据的同步,包括但不限于: Oracle、MSSQLServer、MySQL、PostgreSQL 0
[0022] 本申请的同步方法由于采用的是开源数据库PostgreSQL作为中间数据库,各异 构源数据库或目标数据库需同步/复制的表在PostgreSQL中分别对应不同的外部数据表, 异构数据库之间数据的同步/复制是通过在PostgreSQL中映射的外部数据表来实现的,只 要保证源数据库和目标数据库相对PostgreSQL数据库的正常连接和访问即可实现异构数 据库数据的顺畅同步/复制。
[0023] 并且,本申请综合利用开源DBMS及其外部数据交换模块实现异构数据库平台业 务数据的同步/复制,将需要数据同步/复制的内容以外部数据表的形式在中介开源DBMS 中实现,无需对生产DBMS和生产服务器进行特殊的操作,不会对源或目标数据库系统平台 和操作系统平台产生较大的负载,不会对业务系统产生不良影响。
[0024] 具体的优势有:
[0025] (1)扩展性
[0026] 本申请中,异构数据库间的连接都是通过PostgreSQL的外部数据交换模块进行, 所以在更换DBMS的情况下,换个相应的外部数据交换模块,修改些配置文件,对程序进行 少量的修改便可以适用于新环境,故而扩展性较好。
[0027] (2)传输的数据量
[0028] 该发明传输的捕获到的变化数据,相对于SQL Server和Sybase的传输事务日志 的复制方案,传输量减小了。
[0029] 本申请中数据传输主要体现在源数据库与PostgreSQL数据库及目标数据库与 PostgreSQL数据库外部数据表的数据同步,同步的是SQL语句。而SQL Server和Sybase 本质上同步的是事务日志,事务日志相对于SQL语句添加了很多其他信息,数据量大得多。
[0030] (3)传输稳定性
[0031] 本申请使用PostgreSQL数据库作为中介,可以通过PostgreSQL控制触发器来控 制每次处理的数据量,防止在大数据量传输的情况下出现程序消耗内存过大而出现"内存 不足"的错误。因此即使在大数据量传输的情况下,也能稳定传输。
[0032] (4)提高系统可用性和可靠性
[0033] 数据库同步复制是一种实时远程存取和实时更新数据的分发复制技术,最基本的 功能是提高数据库工作的性能,通过将远程数据库中的数据复制到本地,使得应用能够就 近访问数据,避免了远程读取数据,从而降低网络传输负载,提高效率。降低网络传输开销 和缩短响应时间,在节点和通信发生故障时仍可保证系统依然正常运行,能够起到数据备 份的作用。
[0034] (5)配置部署
[0035] 配置简单方便,非常容易操作。
[0036] 本申请的异构数据库平台数据同步/复制的方法可以集成多源、分布式、异构的 各个信息系统中的数据,消除"信息孤岛",保证信息系统之间信息交换的畅通,保障数据 传输中的一致性和安全性,真正实现数据共享,在数据仓库、应用集成,到移动办公、电子商 务,从高可用性系统、负载均衡,到嵌入式系统、互联网设备等多个领域都可以发挥重要作 用。
[0037] 除了上面所描述的目的、特征和优点之外,本申请还有其它的目的、特征和优点。 下面将参照图,对本申请作进一步详细的说明。

【专利附图】

【附图说明】
[0038] 构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实 施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0039] 图1是本申请优选实施例的结构示意图;
[0040] 图2是本申请优选实施例的流程不意图;
[0041] 图3是本申请优选实施例的数据同步流程示意图;
[0042] 其中,1、源数据库,2、P〇stgreSQL数据库,3、目标数据库,4、第一外部服务器,5、第 二外部服务器。

【具体实施方式】
[0043] 以下结合附图对本申请的实施例进行详细说明,但是本申请可以根据权利要求限 定和覆盖的多种不同方式实施。
[0044] 参见图1、图2和图3,本申请提供了一种异构数据库平台数据的同步方法,包括以 下步骤:
[0045] A、在PostgreSQL数据库中分别安装到源数据库和目标数据库的外部数据交换模 块,并建立源数据库的外部数据交换模块扩展及外部服务器、目标数据库的外部数据交换 模块扩展及外部服务器,以支持外部数据表的建立功能。
[0046] 需要指出的是,源数据库和目标数据库是异构数据库平台的多源数据库。异构数 据库是指数据定义模型、表示方法、管理系统和基础操作系统都存在差异的数据库,例如 MSSQLServer、Oracle、DB2、Sybase、MySQL、PostgreSQL 中的任意一种相对于其他数据库均 为异构数据库。
[0047] 外部数据交换模块一般是通过源码安装,如果源数据库是Oracle,目标数据库是 MySQL就需要在PostgreSQL中安装Oracle外部数据交换模块和MySQL外部数据交换模块, 以实现由Oracle到MySQL数据同步/复制。
[0048] 现有技术已经存在Oracle和MySQL的外部数据模块,但还没有专门针对DB2、 Sysbase、MSSQLServer等常用数据库的外部数据模块。
[0049] 源码安装的过程采用的是现有技术,即在Iinux系统中进入源码包的目录,执行 以下命令即可:
[0050] ?/configure [_ prefix = /usr/local/pgsql/share/extension/](中括号内容可 选)
[0051] make
[0052] make install
[0053] 针对本申请特定技术而开发的创新点在于开发了一种基于PostgreSQL数据库的 异构数据库平台数据同步/复制的系统,该系统不仅综合了所有现有技术支持的多源数据 库外部数据交换模块,而且开发了专门针对MSSQLServer、DB2数据库的外部数据交换模 块,以实现其他多源数据库与MSSQLServer、DB2数据库的同步/复制。现有技术只是实现 了部分外部数据库与PostgreSQL数据库的映射外部数据表数据的同步/复制,本申请在此 基础上更进一步的实现了多个外部数据库与PostgreSQL数据库的同步/复制,并创新性的 将PostgreSQL数据库和相应的数据交换模块作为中介(中转),来实现外部多源异构数据 库之间的数据同步/复制。
[0054] 本申请中MSSQLServer数据库的外部数据交换模块采用C语言基于PostgreSQL 数据库内核开发实现,主要包含如下大类模块:
[0055] MSSQLServer_fdw_validator :验证使用MSSQLServer外部数据交换的通用选项, 包括外部服务器、用户映射和外部数据表,如果其选项或值被验证是无效的将会给予报错 或提示选项缺失。
[0056] MSSQLServerPlanForeignScan :进行外部扫描,获取 MSSQLServer 外部数据交换 的状态。MSSQLServer外部数据交换计划及其状态是在外部数据交换私有域中创建和序列 化保存的。
[0057] MSSQLServerBeginForeignScan :用于恢复序列化的连接信息,以支持远程查询; 从执行计划的外部数据交换私有域中获取MSSQLServer数据表的描述与参数列表;也可用 于重新建立到MSSQLServer数据库的连接。
[0058] MSSQLServerlterateForeignSacn :迭代外部扫描模块,在第一次调用时,从 MSSQLServer中获取实际参数并执行远程查询,获取第一行数据,之后进行迭代获取更多的 数据直到没有数据。
[0059] MSSQLServerEndFore i gnScan :停止当前 MSSQLServer 语句的执行。
[0060] MSSQLServerReScanForeignSacn :如果已经存在 MSSQLServer 语句,则停止 MSSQLServer语句的执行,并触发下一个MSSQLServerlterateForeignSacn调用,执行重新 扫描。
[0061] MSSQLServerGetForeignRelSize :获取当前外部扫描的 MSSQLServer 外部数据交 换状态;构建远程SQL查询语句,并预估可能产生影响的数据量及其平均成本和代价。
[0062] 本申请还创新性的研究并实现了多源异构数据库各种数据类型映射关系,并将该 映射关系以文件形式保存在系统后台方便异构数据库平台数据映射时调用,以保证异构数 据库数据同步的顺利执行。
[0063] 本申请映射关系实现的难点在于需要对所涉及的所有源或目标数据库系统的数 据类型都有深入的理解,能够在PostgreSQL中找到相同的数据类型或能够代替原数据类 型的数据类型,并将这些映射以文件形式保存在系统后台,在PostgreSQL创建外部数据表 时调用该映射文件,自动生成创建外部数据表的DDL语句。
[0064] 在本申请的实施例中,用到了 Oracle到PostgreSQL的数据类型映射文件、MySQL 到PostgreSQL的数据类型映射文件。其中Oracle到PostgreSQL的数据类型映射文件内 容可以如下表:
[0065]

【权利要求】
1. 一种异构数据库平台数据的同步方法,其特征在于,包括以下步骤: A、 在PostgreSQL数据库中分别安装与源数据库和目标数据库对应的的第一外部数 据交换模块和第二外部数据交换模块,并建立第一外部数据交换模块扩展及第一外部服务 器、第二外部数据交换模块扩展及第二外部服务器; 所述源数据库和所述目标数据库为异构数据库;外部数据交换模块包括预定义的数据 类型映射文件; B、 基于第一外部服务器和第二外部服务器,创建分别与源数据库和目标数据库建立映 射关系的第一外部数据表和第二外部数据表; C、 基于第一外部数据表和/或第二外部数据表,分别建立捕捉数据变更的触发器。
2. 根据权利要求1所述的一种异构数据库平台数据的同步方法,其特征在于,在所述 源数据库和所述目标数据库需要更新的数据表上,建立捕捉数据变更的触发器。
3. 根据权利要求1所述的一种异构数据库平台数据的同步方法,其特征在于,步骤B中 建A映射关系为: 创建PostgreSQL数据库角色与所述源数据库、目标数据库角色的映射。
4. 根据权利要求1所述的一种异构数据库平台数据的同步方法,其特征在于,所述映 射关系以文件形式保存。
5. 根据权利要求1所述的一种异构数据库平台数据的同步方法,其特征在于,所述源 数据库和所述目标数据库为MSSQLServer、Oracle、DB2、Sybase、MySQL、PostgreSQL中的 任意一种。
6. 根据权利要求1所述的一种异构数据库平台数据的同步方法,其特征在于,所述源 数据库和所述目标数据库的基础操作系统为Unix、WindowsNT、Linux中的任意一种。
【文档编号】G06F17/30GK104376062SQ201410631561
【公开日】2015年2月25日 申请日期:2014年11月11日 优先权日:2014年11月11日
【发明者】范志龙, 吴松林 申请人:中国有色金属长沙勘察设计研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1