第39卷 第9期西南师范大学学报(自然科学版)2014年9月
Vol.39 No.9 Journal of Southwest China Normal University(Natural Science Edition)Sep.2014
DOI:10.13718/j.cnki.xsxb.2014.09.018
异构数据库高效数据交换引擎设计①
黄学彬1, 赵 春2, 郑 伟1
1.四川大学锦城学院教务部,成都611731;2.四川大学锦城学院计算机科学系,成都611731摘要:针对异构数据库之间数据交换软件的数据交换不规范、网状数据不通畅、数据同步无保证等问题,设计了一个通用安全高效的数据交换引擎.该设计采用影子表法获取数据,利用文本差异比较得出变化的数据量,并运用差异分析算法解析出数据变化结果集.设计中的数据交换规则与数据更新结果存储均采用了XML文件格式作为媒介,为了保证数据的安全性与可靠性,设计要求对需要传输的数据进行加密处理,并采用可靠的TCP作为数据传输协议的载体.实验表明,该文设计的异构数据库交换引擎可以高效率地完成异构数据库之间可靠、安全的数据交换.
关 键 词:异构数据库;高效数据交换;XML;差异分析;
影子表法
中图分类号:TP391 文献标志码:A 文章编号:1000-5471(2014)9-0100-09
在信息化不断发展的过程中,企业用户的应用也在不断扩充,企业自己的新应用也在不断增加,进而都会面临不同软硬件平台、不同类型的数据库之间的数据交换问题[1].不同软硬件平台、不同语义设计、不同网络环境等多种模式的并存造成了不同数据库之间的数据交换不规范、数据同步与数据安全无保证等问题,并由此产生了“信息孤岛”的现象[2].
现有的软件已经很难解决这种异构数据库之间的数据交换难题[3].数据库管理系统(DBMS,Database
Management System)为了最大程度地解决这个难题,一般都提供了相应的数据交换工具,但因与具体的
DBMS耦合性太强,以至于失去了通用性[4];中间件技术虽然可以很好地解决这个难题,但是中间件技术由于本身比较复杂,不容易实现,而且还需要昂贵的软硬件资源[5-6],对于一般的企业来说负担太重,
从而
很难实现普及;中间数据法采用一种公共的数据格式作为媒介进行数据交换,通过双方既定的协议完成最终的功能,该方法成本较低,可扩展性强[7-8],但是实现中必须考虑网络环境、
运行效率以及数据的安全
性[9-10].本文将采用中间数据法设计一个灵活高效、简洁透明的异构数据交换系统,该异构数据库数据交
换引擎(HDEDEE,Heterogeneous Database Efficient Data Exchange Engine)
只需要简单的配置即可准时
性地完成异构数据库之间数据安全可靠的互相访问.
为了设计出简单易用、成本低廉、并且通用的数据库交换引擎,我们有必要对其进行适当的分析,从而了解其基本特性,以找出合适的解决方案.
1
异构数据库系统分析
异构数据库系统是对分布式数据库系统的集成和发展[10],
它们最根本的区别是分布式数据库系统拥
有自己单独的逻辑数据库,只有一个DBMS
,该DBNS为其整个系统提供一致的插入、查询、删除、更新等
①收稿日期:2014-02-29
基金项目:四川省应用基础项目“基于互联网应用的企业智能消息系统EIMS研究与实现”资助(10JC0335).
作者简介:黄学彬(1968-),男,四川蒲江人,博士,副研究员,主要从事计算机软件及互联网应用研究.操作;而异构数据库系统则是由多个自主的数据库系统通过适当程度的集成而构成的一个数据库系统.
异构数据库系统物理分布整体上可以概括为以下2种情况:同一个局域网内以及在不同的局域网内.
无论异构数据库系统是处于同一个局域网内还是在不同的局域网内,都具有分布性、异构性、自主性等3
个主要的特征.
1.1
分布性
异构数据库系统的各个组成部分并不在同一个地理位置,而是分布在不同的地理位置,它们通过各式各样的网络建立连接.数据保存在各个数据库系统中,这些数据可以以各种不同的方式保存,没有严格的逻辑要求.
1.2
异构性
1)不同的计算机体系结构:独立的数据库系统可以运行在大型机、工作站、微机等系统中.2)不同的计算机操作系统:独立的数据库系统可以被安装在不同的操作系统中,如Unix,Windows等.3)不同的DBMS:独立的数据库系统可以是MySQL,Oracle,SQLServer等,也可以是Redis、Monogdb等.4)不同的语义:数据库设计人员对数据定义、描述的二义性,会造成命名、数据存储类型、关系表达
等的二义性.
1.3
自主性
各个子系统都拥有自身系统内对应资源的使用权,包括增加、删除、修改、查询等,同时拥有与系统内其他子系统交互的权利,包括加入、退出、提供服务等.
从上面的分析可以看出,异构数据库系统中各子系统情况相当复杂,各子系统之间的数据共享会遇到各种各样的困难,针对这个难题,本文设计了一个数据交换引擎,用于同步多个同构或者异构的数据库之间相关的数据,该引擎具有通用性,并且操作简单易用.
图1 异构数据库数据交换网络2
高效数据交换引擎设计与实现
由于系统运行在网络环境下,所以文件格式的通用性、数据的安全性以及数据传输的高效性就成为了设计必须要考虑的前提.为此,本文提出的设计方案遵循如下原则:采用通用的数据存储格式存储数据;采用差量分析法分析数据;对差量数据进行加密传输;并且对大数据采用多线程断点续传来保证数据传输的高效性.
2.1
总体设计方案
如图1所示,有多个异构的数据库,它们之间彼此需要获取对方的数据,DBMS的差异和不同局域网内数
据库之间网络线路不通的问题,使得彼此之间无法正常完成交换数据的功能.因此,要完成彼此之间的这种数据交换必须依靠第三方的应用程序来完成.本文设计的数据交换引擎就可以很好地实现这个功能.
如图1所示,局域网LAN-1中有4个数据库系统,分别为DB1
,DB2,DB3,DB4,局域网LAN-2中也同样有
4个数据库系统,分别为DB5,DB6,DB7,DB8.DB1要与DB2,DB4交换数据;DB3也要与DB2,DB4交换数据;DB5要与DB6,DB8交换数据;DB7也要与DB7,DB8交换数据;另外,有些交换关系图上并未画出,如DB1要与DB5
,DB6等交换数据.由图1可以看出,它们之
间数据交换的关系错综复杂,需要一个良好的中间媒介来辅助完成这种交换功能.
本文设计的HDEDEE就是要充当这个良好的中间媒介.HDEDEE的部署及其使用相当简单,数据库
101第9期 黄学彬,等:异构数据库高效数据交换引擎设计图2 数据控制流程设计维护人员只需要简单地配置彼此之间需要交换的数据规则,然后将HDEDEE部署在与交换数据双方数据库相关的服务器上即可,HDEDEE会根据配置文件以及数据
规则,运行对应的客户端程序或者服务器程序,完成彼此之间数据的推送与更新功能.如图2所示,数据控制流程设计,概括来说有以下几个步骤:1)数据的获取:客户端读取本地配置文件,根据配
置文件从响应的数据库中获取当前时刻既定规则的数据;2)数据差异分析:分析当前时刻的数据与前一个时
刻获取的数据,获得这2个时间段内的数据差量,对差量进行进一步的分析,进而得出新增数据集、删除数据集以及更新数据集,差异分析法的使用,使得只有变化的数据才会被传输,从而可以很好地保证数据传输的高效性与数据的一致性;3)数据加密:为了增强网络数据传输的安全性,对新增数据集、删除数据集以及更新数据集进行加密
处理;4)数据传输:包括数据发送与数据传输,即将新增数据集、删除数据集以及更新数据集分别传输至指
定的目的服务器上;5)数据解密:对加密的数据,必须解密后才能由目的服务器上的HDEDEE服务器程序对其进行操作,将数据更新至对应的数据库中;6)数据更新:HDEDEE服务器程序解密后的数据集,根据配置文件的既定规则,将数据集更新至指定的目的数据库.
已经实现的加密解密算法有很多,在本设计的实验中,采用了DES算法;数据发送与接收采用TCP/IP协议,使用socket套接字进行网络编程,实现了数据的传输功能.加解密算法与网络传输已经十分普遍,不再作为本文的重点.本文重点集中在数据获取方案的设计、差异比较算法的设计以及数据更新算法的设计上,并详细介绍了获取当前数据设计方案、变化结果集设计方案以及数据更新方案的方法.
2.2
数据获取方案设计
需要获取什么数据都是预先设定的,本小节的目的就是设计如何设定待获取数据的方案.
程序需要的所有限制都记录在XML文件中,程序从XML配置文件读取信息,根据信息指示完成预定的功能.由于程序需要支持各种各样的异构数据库,而不同的DBMS有着不同的驱动接口,所以程序需要知道数据库类型,当然连接数据库所需的基本信息也必不可少.程序根据数据库类型调用不同的驱动接口,然后再依次读取XML配置文件中需要执行的查询命令,并将执行结果存储在XML配置中指定的文件内.另外,为了获得数据需要发送的目的地,还需要配置服务器所在的主机IP与端口.
HDEDEE客户端基本配置格式如图3所示.从这个配置文件设计可以得出,该客户端会将从数据库中获取的变化数据,发送至2个不同的服务器上,供2个服务器上的服务程序使用,从而将这些数据更新至服务程序所指定的数据库中.
2.3
变化结果集获取方案设计
如图4所示,首先对比当前时刻获取的影子表数据与前一个时刻获取的影子表数据,获取差异数据,并将差异数据写入2个差异文件;然后利用差异分析算法对差异文件进行分析,从而获取3种不同类型的变化结果集,并将这3类变化结果集分别存储在对应的文件中.
201西南师范大学学报(自然科学版) http://xbbjb.swu.cn 第39卷