多源异构环境下数据库的同步复制技术研究

来源:互联网 发布:红包掉落js 编辑:程序博客网 时间:2024/05/20 09:11

参考链接:http://www.toutiao.com/i6253620263447953922/

多源异构环境下数据同步复制技术的研究

摘 要: 针对多源异构环境下数据的特点,提出一种数据同步复制新方案。该方案解决了多源异构环境下数据库的访问,数据的获取与复制,动态数据源的处理以及同步过程中数据冲突与同步的实时性等问题。最后将所提出的方案应用于某省高速公路车辆监控系统中,达到了实际应用要求,表明了该方案的正确性与有效性。

0 引言

随着计算机技术的不断发展,各种不同数据结构类型的数据库深入到不同的应用领域,尤其是那些地域上分散而管理上又相对集中的跨地域集团公司或者企业单位[1]。虽然使用数据同步技术可以提高数据信息的集中管理,提高整个分布式数据库系统的响应速度和可靠性[2],但是由于数据的异构性和多样性,数据同步复制仍存在许多问题。本文针对数据同步复制中出现的问题,提出了一种多源异构数据同步复制的方法,该方法可以解决不同类型数据库之间的访问、数据的实时获取与复制、同步过程中数据冲突以及实际应用中数据源动态产生的处理、系统中断数据丢失等问题。

1 多源异构数据同步复制技术

1.1 传统的数据同步复制技术

传统的分布式数据同步复制就是由数据库自身同构复制技术实现的,当源表发生变化时,由数据库引擎引发同步事件,把源表中变化的数据同步更新到目标数据库中,但是这种复制技术只能在同构数据库之间使用[2]。

目前各数据库开发商在各自的数据库同构复制的基础上提出了异构数据库的复制方案,例如Microsoft SQL Server提出了出版者/预订者同步方案[3-6],Oracle中采用多主复制和物化视图的方案来实现数据同步的功能[4-6],DB使用CCD表来实现异构数据库之间的复制。虽然各厂商研发出辅助工具更好地完善了数据同步复制的功能,但是复制方案仍依赖于自己的数据库管理系统(Database Management System,DBMS)核心技术,不能保证完全与DBMS无关。

1.2 多源异构数据的同步复制

多源异构环境下数据同步复制技术的研究

通常情况下,多源异构数据所在的分布式网络结构如图1所示。图中下级数据库存在多个且分布在不同的物理位置上,它们的表结构甚至采用的系统也不一样。

与传统数据同步相比,多源异构数据的同步复制存在如下几个难点:(1)多个下级服务器的数据库会因为使用各种不同的数据模型来表示和存储数据,导致数据格式的混乱,访问接口独立。(2)需同步复制的下级数据源是动态的,比如下级数据库中某些表是按日或月动态生成的。(3)某些情况下,不能对下级数据库的表结构进行任何改变。当表是动态生成时,无法修改表结构因此不能利用数据库本身的复制功能。(4)同步过程中能对重复的数据进行过滤并进行冲突处理。

2 多源异构数据同步复制方案

从多源异构环境下的数据同步特点可以看出,数据同步复制要解决的问题包括:(1)异构数据库的访问;(2)数据的获取与复制;(3)动态数据源的处理;(4)数据冲突与同步实时性。

2.1 异构数据库的访问

当前主流的数据库类型有SQL Server、Oracle、Mysql、DB2D等。针对不同类型的数据库,本文采用ADO技术访问数据库,其连接数据库的形式为:“Provider=SQLOLEDB.1/SQLNCLI10.1;Data Source=%s;Presist Security Info=False;User ID=%s;Password=%s;Initial Catalog=%s”,其中:Provider针对数据源不同,可选择SQLOLEDB.1和SQLNCLI10.1两种驱动方式。

2.2 数据的获取与复制

数据的获取与复制指从下级源数据库中读取数据,然后将所读取的数据复制到上级数据库中并标记同步完成的过程。根据下级数据源中表结构有可修改与不可修改两种情况,分别设计方案:

(1)表结构可修改时,在下级数据库的表中增加新字段int sendok,并设置字段的默认值为0。每同步成功一条数据,将sendok字段的值设置为1,若没有同步成功,仍设置为0,其流程图如图2所示。

多源异构环境下数据同步复制技术的研究

(2)表结构不允许修改时,在上级数据库中新建辅助表来记录下级数据库的同步操作过程。设置同步跟踪记录的表名为Track,表中字段定义如表1所示。

多源异构环境下数据同步复制技术的研究

在同步过程中,下级数据库中的数据是不断更新的,需要设置定时同步复制机制来完成同步。首先需要获取当前的系统时间和最近一次上传的结束时间,若当前系统时间小于上次上传的结束时间,则放弃本次更新,等待下次更新。若当前系统时间大于上次结束时间,则进行该时间段内新数据的同步操作。同步后,判断此次操作是否成功,成功置1,否则置0,并在追踪表中记录操作,流程图如图3所示。

多源异构环境下数据同步复制技术的研究

2.3 动态数据源的处理

在下级数据库中,由于不同数据库中表的创建方式不同,有些下级是按日或按月来动态生成新表,会增加上级对下级数据源的查找难度,此时需根据表形成的规律来查找。例如有些数据源中表是以固定字符加年月日作为表名,需获取表的名称,再根据表形成的规律自动拼装来获取日期信息。同步复制前,系统需要检测是否有新表,若存在新表则进行数据同步的操作,不存在则退出。

2.4 数据冲突与同步实时性

与传统数据同步复制不同,多源异构下的数据冲突主要是由于网络异常造成的重复同步,以及为了保证数据一致性而不断检查与复制下级数据源等造成的。因此在设计上级数据库中表的属性时,设定表的主键,对每条数据同步时先检查相同主键的记录是否存在,如果存在则返回。

同步的实时性取决于数据上传的时间间隔,时间间隔越短,实时性越好,但计算机与网络负荷越大;反之,实时性差,计算机与网络负荷就小。为了解决这个矛盾,可采用动态缓存机制提高同步的实时性,即将已同步数据的主键及关键字段信息,动态地保存在内存缓存中,从而有效地减少了计算机与网络的负担。

3 多源异构下数据同步复制技术的应用

为了验证所提出方案的正确性和有效性,结合某省高速公路车辆监控系统的数据同步任务进行实际应用研究。

在高速公路网络系统中,收费站出入口以及众多断面节点基本实现了全线无盲点监控,各个地点的子系统均记录了所经车辆的车牌、时间、车型等流水信息。为了实现对车辆在整个交通网络中运行情况的监控,首要的任务就是将这些分散于各子系统的车辆流水数据实时同步复制到一个中心数据库中。

3.1 软件的设计

通过分析,高速公路系统数据源可归纳为三类:收费站、主线卡口和服务区,其特点如下:(1)存在的数据库管理系统有SQL Server 2000、SQL Server 2008、Oracle 9i;(2)数据存放的方式多样,包括单一表、按月生成表、按日生成表等;(3)有些表结构可修改,有些表结构不能修改,比如按月生成表的情况,因此无法获得生成表的源代码。

为了实现对以上情况的灵活处理,软件以XML格式的方式配置数据源的情况,同时利用多线程技术实现对多个数据源的同时处理,整个软件的总体结构如图4所示。

多源异构环境下数据同步复制技术的研究

3.2 系统实现

高速公路车辆数据采集系统提供对全线各子系统中的车辆流水数据的实时收集功能,即实现对各个分散数据源的异构数据的同步复制。该软件系统以Visual C++语言进行开发,利用本文提出的多源异构下数据同步复制方案,并结合多线程技术提升软件的运行效率。整个系统的运行界面如图5所示。

多源异构环境下数据同步复制技术的研究

从图5可以看出,该系统可同时将多个下级数据源的数据同步复制到一个上级数据库服务器中,实现对车辆流水数据的集中整合。该系统经实际测试,已实现了23 h不间断运行,数据同步复制未发现多出一条记录或者少一条记录,数据正确率100%,在系统可靠性与数据完整性方面均达到了数据同步复制的要求。

4 结论

本文针对多源异构数据同步的实时性、可靠性、通用性的需求进行了研究,提出了一种数据同步复制方案,解决了异构环境下数据库之间数据共享的问题,并结合高速公路监控系统的实际项目进行了测试,验证了该方案具有可实用性并取得了预期的效果。

参考文献

[1] 胡金龙,许卫,房福龙.异构数据库同步复制技术研究与实现[J].长江科学院院报,2011,6(28):71-75.

[2] 王婉菲,张志浩.分布式数据库系统的复制机制及应用[J].计算机工程与科学,2003,25(1):88-91.

[3] 杨鹏.异构数据库同步中间件技术的研究与实现[D].长沙:国防科学技术大学,2007.

[4] 赵中华.基于XML的异地异构数据库的数据同步技术的研究[D].济南:山东轻工业学院,2009.

[5] 谭德才.基于邮件系统的远程异构数据库同步的设计与实现[D].广州:华南理工大学,2010.

[6] 姜亦学.分布式数据库系统同步技术研究[D].长春:长春理工大学,2008.

0 0
原创粉丝点击