一种异构数据库间数据同步模型的研究
2016-05-21王晓瑞黄祥志沈夏炯周珂
王晓瑞+++黄祥志+++沈夏炯+++周珂+++王栋
摘 要: 针对地理信息在异构数据库之间的同步传输问题,基于XML节点映射模型,结合Web Service分布式远程调用方式,在异构数据库之间建立一种数据同步模型。该模型结合数据库模式匹配的特点,将异构数据库间的数据信息进行节点映射,降低XML查询的扫描代价,提高中心服务节点查询匹配集合的速率。实际应用表明,提出的基于XML节点映射模型可以有效的解决异构数据库之间的同步传输问题。
关键词: SOA; 异构数据库; 数据同步; XML; Web Service
中图分类号:TP391 文献标志码:A 文章编号:1006-8228(2016)05-12-04
Abstract: Aiming at the synchronization problem between heterogeneous databases for geographic information, this paper establishes a data synchronization model based on the XML node mapping model and combined with the Web Service distributed remote call method. This model combines the characteristics of database schema matching, maps the data information between heterogeneous databases, reduces the scan cost of XML query, and increases the speed of query matching set of the central service node. The practical application shows that the proposed XML based node mapping model can effectively solve the problem of data synchronization between heterogeneous databases.
Key words: SOA; heterogeneous database; data synchronization; XML; Web Service
0 引言
随着航天技术的发展,发射卫星数量逐渐增多,地理数据信息也随之俱增,需存储的数据信息量越来越大。地理信息往往分散存储于同构或异构的数据库,这是为了有效整合分散、异构的地理数据信息资源,缓解地理科研行业间的“信息孤岛”问题,有些传统数据库厂商提出中间件方案,但这种方式无法满足分布式同构或异构数据库间的同步问题。有些研究提出基于文件传输的同步技术,但是这种方式需要通过云盘或其他方式拷贝文件,存在严重的安全隐患。也有些研究提出基于管道同步技术,即通过数据管道同步数据,但这种方法对数据通道依赖大,需要建立专门的数据管道管理平台,开销大,对网络条件要求较高,不适合广域网[1]。林源、陈志泊提出的分布式异构数据库同步系统,它基于WCF 构建的应用程序服务,针对异地数据库表的数据结构定义一致时,提出使用存储过程完成数据同步,若更新时发现数据库表字段不一致,则优先选择在该数据库中添加新的表字段,但这种方法使用前需要为每张表建立一套元数据表、触发器和存储过程,因此,其仅限于在同构数据库之间完成数据同步,在面对异构数据库之间同步问题时,会耗费大量的时间,且会带来数据库之间数据不完整的问题[2]。
本文基于Web Service的数据同步,采用XML数据格式封装数据库中的数据,凭借XML半结构化、自描述性等特点突破传统数据模型对数据模式的严格约束,适用于异构数据库之间的数据同步,能够解决跨平台等问题[1]。针对地理信息在异构数据库之间的同步传输问题,设计一种异构数据库之间数据同步模型,其结合数据库模式匹配的特点,采用XML节点映射模型,减少XML文档的扫描代价,并快速获取查询模式中节点匹配的集合。基于节点映射与树匹配的处理方式主要依赖于XML文档索引的设计,通过对异构数据库中存在的有效字段,根据属性特征进行分层且有效的映射投影,达到提高XML的查询和解析速率的效果。
1 异构数据库同步和数据同步模型
地理数据信息存在存储时分散、逻辑上统一的问题,为解决地理数据信息在异构数据库间的同步问题,结合SOA架构,设计出基于XML节点的映射模型,与Web Service远程访问技术相结合,使分散的异构数据库中地理数据信息分层分级的汇总至统一的中心数据库中,实现中心数据库数据信息的统一,为用户提供“一站式”的数据共享服务,便于信息的检索与分配[3]。
1.1 异构数据库同步
异构数据库同步是异构数据库集成技术的一种应用,其中各个数据库均具有自身的自治性,同步主要实现数据库间的数据信息资源的共享和数据库间的透明访问,且实现数据同步的同时,每个数据库系统仍保有自己的应用特性、完整性控制和安全性控制[4-5]。
1.2 XML映射模型
XML映射模型借鉴目前常用的关系型数据库数据映射的思想。数据映射(Data Mapping,DM)是在源数据模型与目标数据模型之间建立对应关系[6]。常见的DM有手工编码和可视化操作两种方式。手工编码是利用常用的编码技术手段手动获取数据并将其封装成XML,便于数据迁移;可视化操作是数据库支持用户自定义数据项之间的对应关系。但这两种都需要将该应用转化成可运行的程序[7]。
⑴ 基于表结构映射
数据库通常存在一些基本表,一个基本表描述着一个事物,一个事物具有多个属性,一条记录是多个属性对应的值的集合,根据不同集合对应的域值的不同,可以针对表结构来映射节点。以常用日志表结构为例来组织XML,结构如图1所示。
这种基于表设计的XML封装优点是简洁明了,方便编程,伸缩性强,适合于关系型数据库中两个数据模型一致的情况[10],特别适合单个表结构且无外键关联的关系型数据库表的情况。
⑵ 基于对象的节点映射模型
鉴于表设计具有的局限性,不能满足存在多个外键的表结构。针对“一对多,多对多”具有多个外键相互关联的表结构,为了方便用户解析,提出基于对象的节点映射模型。该设计是将数据库表的一个基本表描述成一个事物,并以XML树形结构的形式表示出来,且XML的节点允许有多个,能够形象的表现出多张外键关联表的之间的从属关系。同样以软硬件信息表结构为例,如图2所示为基于对象的软硬件节点映射。
基于XML对象化设计具有层次感,直观形象,伸缩性强,易扩展和易解析等优点。适合描述关系型数据库中具有多个外键关联的数据库表结构的情况,同样也适用于描述无外键关联的单个表数据结构的情况。
1.3 数据同步模型
为了研究异构数据库之间数据同步技术,本文结合数据库模式匹配的思想,建立基于XML节点映射的数据同步模型,并在实际应用中验证该数据同步模型的有效性。
传统数据库均不提供将数据库表数据自动映射为自定义XML的功能,但存在将关系型数据库表数据映射为XML的中间件,然而这些中间件不能有效完成分布式数据库同步模型的XML节点映射。所以在此设计一种异构数据库间数据同步模型如图3所示。
⑴ 首先分析源数据库表结构和目标数据库表结构。基于对象建立节点映射模型,充分利用了XML自身的优势,从而达到最优的结构化的模式映射,实现了数据信息在多源数据库和不同目标数据库之间的安全高效灵活的传输。
⑵ 其次,当同步代理模块A和B之间同步时,为方便传递XML,并在分布式情况下达到高效、可靠、灵活的效果,需要借助于中间件。中间件是一种介于操作系统和应用程序之间的软件,具备管理计算机资源和进行网络通信的功能。常用的中间件主要有远程过程调用中间件(Remote Procedure Call,RPC)、面向消息的中间件(Message-Oriented Middleware,MOM)、请求代理中间件(Object Request Brokers,ORB)和实物处理监控中间件(Transaction processing monitors)[11]。考虑源数据库和目标数据库可能在同一个计算机上,也有可能位于两台计算机上或者是两个不同的操作系统上,本文使用远程访问中间件。Web Service是一种常用的RPC,它能够完全结合XML、XSD等具有跨平台性、互操作性的文件结构创建分布式应用系统的新平台;能够实现跨防火墙通信、应用程序的集成、B2B的集成以及软件和数据的重用。它提供了一种松散的粗粒度的分布计算模式,由Web Service组成的中间层,无疑可以缩短开发周期、减少程序的逻辑复杂度并提高代码的利用率。Web Service可以实现跨域访问,它是SOA的一种实现技术,使用该技术,可以构造标准化程度极高的Web服务。所以我们搭建了Web Service平台,提供一个供同步代理模块A调用的接口,便于使用标准的HTTP(S)协议来传送XML数据。
⑶ 建立一个定时器,系统将自动定时触发同步代理模块A,实现其自动化,无需同步系统使用者的任何操作,减少对系统操作者的技术要求。
⑷ 以上三步是实现基于XML同步模型的先期准备工作,当启动定时器时,计时器触发同步代理模块A使其通过SQL语句查询源数据库并返回新的数据源,接下来执行下面的第⑸步。
⑸ 同步代理模块A在接收到返回的数据集后,按照第一步中确定的数据转换模式,通过一定的技术手段使数据集转化成基于节点映射的标准结构的XML,将XML以转换为字符串形式后自发的调用中间件中对应的同步服务。
⑹ 同步代理模块B将获取的XML数据按照对象封装的特点,逐步解析,并将解析后的同步信息插入到目的数据库中。
至此,异构数据库之间数据同步已经完成,此后,系统将按照计时器中设定的时间,定时触发同步代理模块A,继续下一次的数据同步。
2 数据同步模型实验分析
异构数据库之间数据同步不仅受环境因素的影响,也受服务资源及软硬件性能指标的影响。当一个服务节点同时接收多个站点的同步信息时,由于网络带宽等因素,造成的网络拥塞,同样会影响数据同步的效率[8-9]。而当同时有多个站点同时同步信息时,会形成一个控制队列。在此不再对控制队列作介绍,只关注利用XML技术解决异构数据库之间的同步问题,尤其是如何减少XML的查询扫描时间,并快速获取查询模式中节点匹配集合的问题。
目前,我们设计的异构数据库数据同步模型已投入实际应用。在实际应用时,采用Java技术,服务部署在Linux平台下Tomcat容器中,通过公共服务端口,完成Web Service服务间数据通信。系统实际应用中,每天的数据同步量已到达10万条之多,在网络服务带宽为4Mbps的场景下,设定中心节点接收同步数据并开始计时,至解析结束所消耗的时间记为Ta,从解析后将数据插入到数据库中的用时记为Tb,分别测试1万、5万、10万条数据同步量下的Ts、Ta、Tr的值。改进前后的实验数据如表1、表2所示。
通过对图4、图5、图6、图7中数据同步模型改进前后所消耗时间的对比分析可知,随着同步数据量的增多,改进后的模型对XML树结构查询时间减少,因为改进后的模型减少了查询时对无关节点的匹配次数,数据解析时间的增长率也逐渐减小。数据入库时间和改进前相比,也有减缓的趋势。实际应用表明,本文提出的异构数据库间的数据同步模型能有效的提高数据同步的效率。
3 结束语
针对地理信息在异构数据库之间的同步传输的问题,本文结合Web Service提出了一种基于XML的节点映射模型,它结合数据库模式匹配的特点,将异构数据库间的数据信息进行节点映射。针对一个或多个对象节点的映射,分层分级设计XML,降低查询时无关节点标签的匹配次数,提高查询匹配集合的速率,有效的减缓解析数据时间花费的增长率,方便对象化数据的入库,减少对应的入库时间,从而提高数据同步的效率。实际应用表明,本文提出的同步模型能有效的提高异构数据库之间的数据同步效率,解决了当前异构数据库间的数据同步效率低下的难题。进一步提高了异构数据库间的数据同步速率。
然而本文在数据查询方面对数据同步的效率的影响并没有作进一步研究,接下来的研究是,在进一步完善降低标签匹配度方案的同时,逐步提高设计模型中数据查询的效率,找出一种实际平均性能良好的查询处理和优化技术,进而提高异构数据库间的数据同步速率[12]。
参考文献(References):
[1] 田淼.分布式异构数据库同步中间件的设计与实现[D].地理信息科学学报硕士学位论文,2012.
[2] 林源,陈志泊.分布式异构数据库同步系统的研究与应用[J].计算机工程与设计,2010.31(24).
[3] 诸云强,冯敏,宋佳.基于SOA的地球系统科学数据共享平台架构设计与实现[J].地理信息科学学报,2009.3.
[4] 李铁军,郝文宁,王伟一.一个轻量级的异构数据库同步系统[J].计算机与信息技术,2007.
[5] 陈为民,文学东.分布式地理数据库同步更新系统设计与实现[J].测绘通报,2012.11.
[6] 黎建辉,吴威,阎保平.一个基于XML元数据映射与转换方法[J].微电子学与计算机,2008.
[7] http://www.cnblogs.com/GaoJunTao/archive/2010/01/22/1653848.html.
[8] 卢宇,龚忠友,吴进营等.基于Web服务的分布式异构数据同步设计[J].微计算机应用,2011.32(12).
[9] 卢宇,吴进营,乐仁昌等.基于SOA架构的分布式异构数据同步通信控制策略分析[J].计算机应用,2012.32(5).
[10] 杨柳,蔡英蔚.基于XML格式异构数据同步模型的研究[J].中国电力教育,2008.32(5).
[11] 百度百科.http://baike.baidu.com/link?url=_URd0bJHHbuSr8k_jcYOonUEAzcCMVkPbEGlM1FuDQURVGdgr6qBbdioYaKhgIjFwCDY-MYXXxn8XLQ2Ln-2aa
[12] 毕鑫,王国仁,赵相国等.XML数据中Twing查询处理与优化技术研究综述[J].计算机科学与检索,2013.7(9).