首页 > 范文大全 > 正文

关系型数据库异构数据同步系统研究与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇关系型数据库异构数据同步系统研究与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要 本文设计了一种由数据捕获,数据转换,数据传输三个过程组成的数据同步方案,详细阐述了捕获数据、转换数据、到传输数据的全过程,并对其进行了实现

【关键词】关系数据库 异构数据 数据同步

1 引言

数据同步就是借助数据复制技术将一组数据从一个数据源拷贝到不同物理地点的另一个数据源。中国石油集团搭建数据同步系统主要用于解决以下两个问题:

(1)实现中国石油集团各机构业务系统之间数据的交换与共享,这些系统由于开发时间与环境不一致,因此,所采用的数据库工具与所设计的数据库表一般差异较大。

(2)中国石油集团各机构业务系统在更新换代过程中,为了让用户拥有一段时间的适应期,出现的新旧系统同时运行的过渡阶段,这种情况下,新旧系统的数据库可能出现重构,并且旧系统中发生的数据变化需要实用同步更新到新系统中。

2 数据同步问题分析

在搭建中国石油集团的数据同步系统过程中,相关的调查现状如下:

(1)从整体上看,作为待同步数据的多个业务系统由于分别由各个机构在不同时期独立开发,缺少关联,因此,所采用的数据库系统和数据表结构差异很大。

从数据库系统上分析,位于地方县市的部门开发的系统多采用MYSQL数据库或者SQLSERVER数据库,极少数采用了ACCESS数据库;位于省级部门开发的系统多采用ORACLE数据库或者DB2数据库。

从数据表结构分析,基本上待同步的两个数据表之间不存在一致性,并且出现很多数据字段同名不同义或者同义不同名的现象。

(2)从业务逻辑上看,数据同步过程中,数据传播方向分为两类:一类是数据在同级系统间进行复制,这类业务虽然要求数据复制周期较短,但是允许存在时间延迟。一类是数据由下级系统向上级系统进行复制,这类业务主要用于分析,可接受的数据复制周期较长。

所以,系统并不像金融系统那样需要实时保证数据的紧密一致性。为了提高系统的可用性,在实际应用中,各节点之间的数据采用异步复制。

可见,数据同步的难点主要在于对数据异构性的处理和对数据复制时效性的控制。

3 数据同步方案设计

完成一次数据同步任务的过程由数据捕获,数据转换和数据传输三个标准步骤来执行。

图1展现了数据同步的标准数据复制流程。

经过调研,在现有技术中,本文发现利用这三个标准步骤来执行同步的方案仅限于数据库表字段之间彼此一对一的复制,不能支持涉及跨库跨表的多字段映射关系的复制需求,其问题就在于数据转换模块只能处理两表之间互相关联的两个数据字段之间的一对一类型转换关系,而难以处理多表之间互相关联的多个数据字段之间的复杂转换关系。

而在中国石油集团的同步应用场景中,为了在不改动当前各类应用系统的数据资源结构的基础上实现分布式数据库系统的数据同步目标,就必然涉及在同步过程中需要完成对数据字段之间复杂转换关系的处理,这就意味着数据转换模块必须能够承担足够复杂的数据分析处理任务。

为此,本文在三个标准步骤的基础上特别设计了一个智能数据转换中心,并基于该数据转换中心,将同步的源数据库和目标数据库区分为同步源区和同步目标区,每个同步源区和同步目标区都可以拥有不止一个数据库,它们之间的复杂数据转换关系依靠智能数据转换中心进行处理以便满足中国石油集团的数据同步应用场景。

3.1 数据捕获

本文通过对目前常用的七种数据捕获技术的优缺点进行对比分析发现,控制表法能够获取各种方式操纵数据库所引起的变化数据,具有普遍适用性,且不需要修改表结构,不会影响原业务系统的性能,在时效性上十分灵活,其设计思想最适用于中国石油集团各机构业务系统的数据同步应用场景。

但是,控制表法要为每个进行同步的源表T创建一个控制表C,这对拥有大量需要同步的源数据表的同步应用来说是十分占用数据库空间的。因此,本文在控制表法设计思想的基础上,做了一种改进的用于异构数据库同步的变化数据捕获方法――同步变化表法。

该方法在每个要同步的源数据库中只创建一个同步变化表,同步变化表里面包含发生变化的源数据表的表名,数据项所在源数据表的主键值,数据变化的类型(插入、删除、更新),数据变化时间和数据同步的状态(已同步、未同步)。当源数据表中的数据发生变化的时候,通过在其上建立的删除、增加和修改触发器向同步变化表里面添加相应的记录信息。这些记录信息被用于在同步过程中查找变化数据的完整信息,并且在数据被同步成功后删除,有效的减少了数据库空间的占有量。

3.2 数据转换

为解决中国石油集团异构数据之间复杂的转换关系,本文设计了一个智能数据转换中心,该转换中心利用数据整合、数据计算和一个可以自由灵活扩充的计算公式库用于处理对应复杂数据关系的转换。

智能数据转换中心会将提取的变化数据按照系统规则整合为约定格式的XML文档,该XML文档详细描述了每个数据的来源数据库、数据表名称、数据字段与数据类型。之后由数据计算中心按照配置的数据转换关系从XML文档中提取相关数据并调用计算公式库中的算子进行分析得到目标数据表要求的数据格式,并将这些数据转换为对应目标数据库的SQL脚本进行输出,从而完成复杂数据关系的转换。

3.3 数据传输

为保证传输周期的灵活性,本文采用定时器技术以自由指定周期的轮询方式进行数据传输。图2展现了本文设计的数据传输模块的处理流程。

4 数据同步方案实现

4.1 同步实例

以中国石油集团某机构下级业务系统向上级系统汇总油井数据同步应用为例。

在这一同步应用场景中,一个地区存在多个并行的下级业务系统负责管理其所分配的若干口油井。上级业务系统每天会获取一次这些下级业务系统的当日采油量数据进行汇总,从而得到某一地区每日采油量数据。

4.2 系统实现

很显然,在汇总采油量数据的同步应用中,是一个多对一的复杂数据转换关系。同步源区包含多个下级业务系统对应的源数据库,同步目标区只包含一个上级业务系统对应的目标数据库,在同步过程中,对应一个地区的采油量数据需要对地区包含的每一个下级业务系统对应数据库中的每日油井信息表数据做汇总计算得到,为此,按照本文所设计的同步方案,同步系统实现如下:

(1)需要在下级业务系统数据库中增加同步变化表如表1。

(2)为每日油井信息表dailyOil添加增删改触发器,用于捕获每日变化数据到同步变化表中。

(3)在智能数据转换中心中将这一种复杂数据转换关系配置在映射文件中如下:

可见,在数据转换关系映射文件中记录了上级业务系统每日采油量信息表AreaOil所需要的数据对应的每个地区的源数据库链接地址,数据转换的计算方式,各个字段与源数据表字段的关联关系,源数据表名称和轮询周期。在执行过程中,智能数据转换中心将根据这些信息定时提取源变化数据集合做相应计算完成复杂数据转换。最后,本文采用JAVA语言对系统做了实现。

5 结语

本文设计的多级异构数据库智能同步分析系统可以在不改变原有系统业务逻辑和数据资源结构的基础上来完成不同异构数据的同步处理任务,有效满足了中国石油集团的分布式系统数据同步应用场景。该系统采用类似插件开发的问题解决思路,具备很广的通用性,可普遍适用于不需要保持数据副本紧密一致性的各类数据同步应用场景。

参考文献

[1]杨淼淇,叶国权,孙纳新.异构数据库的变化捕捉和动态同步策略的研究与比较[J].办公自动化:综合月刊,2010(03):35-37.

[2]杨鹏,杨海涛,王正华.异构数据库变化捕捉及同步策略[J].计算机工程,2008(16):53-55.

[3]张雪洁,王志坚,许峰,李静燕.基于XML的领域异构数据库间的数据转换[J].计算机与现代化,2004(05):71-74.

作者简介

唐孝宇(1984-),男。大学本科学历。现为中国石油集团工程设计有限责任公司北京分公司工程师,从事公司网络管理及信息化建设策划、研究和实施工作。

作者单位

中国石油集团工程设计有限责任公司北京分公司 北京市 100085