版权信息
主管单位:北京电子控股有限责任公司
主办单位:北京电子控股有限责任公司
出版地区:北京
国际刊号:1003-9767
国内刊号:11-2697/TP
出版周期:半月刊
期刊开本:A4
审稿周期:1-2天
所在栏目:电信技术
综合影响因子:0.125
复合影响因子:0.05
期刊级别: 省级期刊
杂志社地址:北京市东城区北河沿大街79号万科·北河沿甲77号

《信息与电脑》录用通知

您的当前位置:首页 >> 录用通知

基于Web服务异构数据库智能集成的研究
  随着计算机的和信息系统的发展,计算机网络与数据库的关系日益紧密,很多企业的部门根据自身业务和功能需要,建立了许多相互隔离的异构数据源,但由于缺乏统一的信息规划,各信息管理系统开发时间和来源不一致,采用的开发平台、数据结构和数据库管理系统也各不相同,造成了各系统间相互独立,信息无法互联互通,逐渐形成了“信息孤岛”[3]。

传统的分布对象技术分别有OMG的CORBA、 Microsoft的DCOM 以及SUN的RMI。然而CORBA缺少方便的开发工具和强有力的厂商支持,门槛稍高,入门较困难;DCOM 跨平台性较差;RMI对多语言融合的支持却很弱。同时,这几种技术都有相似的缺陷:①CORBA、DCOM和RMI虽然能调用实现的系统,但均要求服务器和客户端必须紧密耦合,并且体系结构相同;②CORBA、DCOM和RMI依赖于特定的对象模型协议,目前只在企业内部使用广泛,都不太适合在Internet环境下进行多源异构数据库融合的设计开发。

Web服务的出现满足了信息化服务所要求的基本功能,它是微软.NET 框架下多源异构应用的典型方案,并在中间件基础上,采用XML和Web服务技术实现了各异构数据库的融合,提供了一种全新的以松耦合的方式在Internet环境下部署分布式应用的解决方案。任何操作系统、任何语言编写的客户端都能够访问服务器提供的Web服务,其客户端与服务器端之间以XML消息作为联系,解决异构数据库集成的难题,弥补了CORBA、DCOM和RMI方法的不足。本文提出的基于Web服务分布式异构数据库B/S三层架构的智能集成方法优化了传统的集成方法和数据模式映射,同时还利用Spring 框架的Quartz定时任务调度实现集成系统的智能更新,整个系统具有实时性、可扩展性、高响应性等特点。

本文的第二部分介绍Web服务和异构数据库系统,第三部分提出基于Web服务的分布式异构数据库集成系统总体架构和各功能模块,第四部分对描述系统设计与实现,第五部分进行测试验证,第六部分对本文进行总结。

1 相关理论与技术概述

1.1 Web服务体系结构

Web服务是一种面向服务的分布式计算体系结构,相比传统的分布对象技术和集成技术,能够提供面向Internet的标准程序接口,具有跨防火墙、软件和数据重用、良好的封装性、松散耦合性和高度可集成性等优点[4]。

Web服务作为一个新型的分布式计算模型,具有自包容和自描述的优点。由三个角色和三个操作组成。三个角色分别为服务提供者、服务请求者和服务代理,三个操作为发布、查找和绑定。Web服务的关键技术包括SOAP(Simple Object Access Protoco1)、WSDL(Web Service Description Language)、UDDI(Web Service Description Language)、XML。XML是Web服务的技术基础,Web服务中各种信息的描述都是基于XML。SOAP提供了一种通信机制,它是分布式环境中交换信息的通用协议,保证了Web服务和其它应用程序之间可靠通信;WSDL是以XML的格式来描述Web服务。UDDL用来创建Web服务注册中心,它是Web服务注册和发现的技术规范[6]。Web服务体系结构如图1。

1.2 异构数据库

图1 Web服务结构

异构数据库实现数据共享的同时,每个数据库系统保持着自己的完整性、自治性和安全性。异构数据库系统中的异构性主要表现为数据异构、系统异构和语义异构[5]。

(1)数据异构。异构数据库系统中数据异构表现在不同数据源对同一数据有不同的定义,例如格式、数据类型或精度等等。比如在SQL Server中用int、float、double等类型,而在Oracle中用Number统一表示数值型的属性。因此在异构数据库之间共享数据时,需要对数据异构加以考虑。

(2)系统异构: 异构数据库系统中系统异构主要指数据所依赖的应用系统存在的差异,比如硬件平台(大型机、PC机)、数据库管理系统(MySQL、SQL Server) 和操作系统(Unix、Windows)等的不同。

(3)语义异构: 语义异构是指属性含义相同,但是属性名的接口模式不同。从简单的命名冲突(如同名异义,同义异名)到复杂的结构语义冲突,语义异构在数据库中主要表现在属性异构。比如属性“姓名”,有的用“Name”,也有的用“XingMing”,属性名“type”,有的表示车型,也有的表示食物类型等。数据库的语义异构是数据集成过程中需要解决的关键问题。

1.3 异构数据库集成的常用技术

异构数据集成的常用技术为:联邦数据库、数据仓库和中间件方式。

(1)联邦数据库采用模式集成的方法,其基本思想是在数据库系统集成时,从各异构数据库中获取数据源的数据视图,并将其集成为全局模式。用户就可以直接通过全局模式透明地访问各数据源中的数据。各数据源间互相独立,通过数据转换接口实现相互访问。联邦数据库优点是容易操作实现,缺点是当异构数据源变化时,种类复杂,工作量大,扩展性差,仅适合数据源较少的情况下使用[8]。

(2)数据仓库概念始于上世纪 80 年代中期,其基本思想是将各个数据源的数据复制到同一数据仓库中,用户可以直接访问数据仓库进行集中查询获取数据。数据仓库优点是便于控制,容易处理,缺点是当数据信息重复存储时,无法将数据源的更新信息及时准确地反映到数据仓库中。数据仓库仅适合数据源比较稳定,并且数据访问较频繁的情况,不适合于用户实时查询。

(3)基于中间件的数据集成模式是目前最典型的数据集成方法。中间件由中介器(Mediator)和包装器(Wrapper)组成。中间件方式并不改变数据原来的存储方式和位置,它为异构数据源提供一个统一的虚拟视图[7]。中间件模型适用于变化频繁、结构多样且数据源较多的情况。本文的系统结构就是采用中间件的方式。

2 基于Web服务的分布式异构数据库数据集成系统

2.1 用户需求分析

在该异构数据查询系统中,共有三种用户参与,分别是各异构数据库管理员、集成系统管理员和普通用户。其中集成系统管理员享有最高权限,可以创建和管理用户、审查和批准需要加入的异构数据源、获取异构数据源的元数据、合成并管理全局数据库模式等;各异构数据库管理员能够登陆数据源注册系统,根据需要填写注册信息,选择需要共享的表和字段并注册;普通用户只能登陆查询系统,根据相关的查询权限对数据进行查询。系统用户如图 3所示。

图 2 系统用户

2.2 体系结构

Web服务集成中间件系统体系自下而上包括数据库层、数据集成层和统一应用层。其中,底层的各个异构数据源构成了系统的数据库层;数据集成层采用中间件技术,封装了异构数据库集成系统的业务逻辑;各种应用程序和对应的访问接口构成了系统的统一应用层。数据库智能集成系统框架图如图2所示。

图3 基于Web服务的分布式异构数据库智能集成系统框架图

该系统采用 B/S模式,构成了客户/服务器三层架构。采用这种设计有以下几种优势:

(1)安装升级简便。通过浏览器访问数据库简化了客户端。在升级软件的时候,不需要对客户端升级。

(2)易扩展维护。所有应用程序均在服务器端,开发维护过程可集中在服务器端,不需要考虑数据库端和客户端。

(3)可移植性强。本文采用JavaBean技术,可以在不同Web服务器、不同操作系统上运行,而且可以在不同的平台间移植,不需要重新编译。

(4)可靠性强。多层体系结构可以有效地优化系统总体性能,提高系统的可靠性和伸缩性。

(5)数据智能更新快。综合包装器中的智能更新模块采用Spring框架,该方法中Quartz任务定时扫描更新各异构数据库上传的XML描述文档,充分保证了抽象数据表的实时性、智能性和有效性。

2.3 功能模块设计

(1)客户端功能模块

统一应用层也就是用户界面,即异构数据库集成系统的使用者。用户可以通过数据集成层来访问异构数据库的共享数据资源。本系统不需安装客户端软件,直接利用浏览器作为客户端用户的界面,可以把XML表示的数据转换成为Html格式,直观方便,非常适合异构数据集成系统[8]。

(2)服务器端功能模块

本文采用Tomcat作为Web服务器。Tomcat作为一个优秀的开源Web应用服务器,是Apache Jakarta的子项目之一。其性能稳定、技术先进,而且免费开源,因而深受软件开发商和Java爱好者的认可,Web应用服务器目前使用广泛。

数据库服务器主要是提供实际的数据管理功能,为数据站点存储数据集。该系统主要支持的数据库服务器有Oracle、SQL Server、MySql、Access 等。

(3)数据模式转换功能模块

数据集成层是实现异构数据库中数据转换的核心,目的是访问各个数据源,集成数据源信息,协调各数据源间信息。数据集成层在各局部数据提供的共享数据的基础之上建立一个全局的虚拟视图,并不存储实际的数据。具体包括:元数据DB、元数据管理器、综合包装器、中介器、应用层访问统一接口、异构数据库统一接口,下面分别对各模块加以介绍。

元数据DB负责储存各异构数据库的元数据库信息。元数据库信息包括注册信息、连接信息URL、各元数据库用户与全局用户的匹配关系、模式映射信息、访问策略信息等。元数据DB支撑整个系统的运行[9]。

元数据管理器负责制定集成系统的全局模式与局部数据库的模式之间的转换规则。

中介器负责异构数据库的注册、公共模型的生成和全局查询请求的接收。中介器由三个组件构成,包括:异构数据注册模块、查询规划模块和结果合并过滤模块。其中,异构数据注册模块的主要功能是:在共享数据注册阶段,负责公共模型的建立以及异构数据库的共享注册;查询规划模块的主要功能是:在数据集成阶段,将客户端提交的基于全局数据库的标准查询分解成针对各个异构数据库的子查询,并提交到相应的包装器;结果合并过滤模块的主要功能是:将各异构数据库查询返回的 XML文档进行合并,形成完整统一的查询结果,反馈至客户端浏览器。

综合包装器的功能是实现数据位置和访问的透明,对异构的数据进行包装。综合包装器由智能更新模块、查询结果转换模块和数据库操作模块三个组件构成。智能更新模块采用spring框架的quartz任务定时的扫描由不同的异构数据库上传的XML描述文档,通过解析这些XML文档,实现数据自动更新,从而保证抽象数据表的有效性、实时性、智能性。查询结果转换模块负责将SQL查询的结果转换为XML文档。数据库操作模块负责连接后台各个异构数据库,包括初始化数据库连接、分配连接、封装数据库基本操作、关闭连接等功能。

数据集成层对外提供了两个统一接口,即应用层访问统一接口和底层异构数据库访问接口。其功能是屏蔽各数据库的差异,提供数据的透明访问,使得使用者无需知道数据的数据源模式及具体的物理位置等信息,只需通过系统定义的与具体数据源无关的SQL语句进行访问。

3 关键技术分析

3.1 数据映射

数据转换是中间件层的首要任务,数据转换的目的是将不同数据源转换成统一格式,为各异构数据源的局部模式提供统一的全局模式。关系数据库是目前市场上的主导,XML文档的结构和关系数据库的数据结构的差异较大。关系数据库用二维表存储数据,用主键和外键的方式体现数据之间的关系;而XML文档采用层次嵌套结构,数据类型、数据长度都不规则,通过子元素与父元素嵌套的形式体现数据间的关系。为了采用SQL工具操作XML数据,在关系数据库和XML之间架起桥梁,或将XML转换成表格式的表单,必须解决XML与关系数据库间的映射[6]。

(1)关系模式到XML 模式映射

转换的算法可如下描述:

Input:关系数据库

Output:XML 模式

Step 1:将关系模式从关系数据库中提取出来。

Step 2:用 SQL 语句来重构数据库中的约束。

Step 3:由关系模式重构映射结构。

Step 4:由映射结构和重构的结果生成 XML Schema 模式。

Step 5:将从在XML文档中嵌入从数据库提取出的数据。

Step 6:对XMLSchema 格式文档及所表示的数据 XML 文档进行输出。

整个流程如图3所示。

图 4 关系模式到XML模式的映射

(2)XML 模式到关系模式的映射

转换算法如下:

Input:XML Schema文档

Output:关系模式

Step 1:形式化描述XML Schema文档。

Step 2:从 描述的XML Schema 文档中,提取元素组成元素树。

Step 3:映射转化元素树,输出关系数据数。

Step 4:将得到的关系数据树动态合成为SQL语句。

Step 5:使用 SQL 语句将 XML 文档中的数据嵌入到关系数据库.

关系模式在转化前后必须保持一致,其转换流程如图5所示。

图 5 XML模式到关系模式的映射

3.2 Quartz定时调度法

Spring框架的Quartz作为流行的企业级任务调度技术,任务调度为应用系统请求的特定任务执行操作安排,Spring为Quartz的重要组件提供Bean风格的扩展类。Spring容器生命周期和其环境下创建的组件对象,争对具体任务可以执行停止或启动。在Spring的开发应用中可以充分利用不同形式的任务定时调度功能。

包装器的智能更新模块,就是采用Spring的任务定时调度方法,扫描各异构数据库上传的 xml 描述文档,实时更新抽象数据表。更新抽象数据表可直接通过调用JDK Timer中schedule来执行,执行过程中的重要参数有间隔时间、启动时间延迟、任务对象[3]。

Spring引入了TaskScheduler,不同形式的任务定时调度。按某个时间间隔重复执行任务,也可以在给定时间点执行一次任务,该方法中的Cron触发器可以灵活定义执行时间[3]。

例如:scheduler.schedule(task, new CronTrigger(″* 206-15 * * MON-FRI″));在每周星期一到星期五的6点20分至15点20分执行设定的任务。
假设定义一个服务,根据各异构数据库上传的XML文档,配置定义服务的执行时间点。服务定义如下: 

Importorg.springframework.stereotype.Service;

@Service

public class TaskOne {

public void OnePrint() {

System.out.println(″One测试打印″); } }

XML配置规定抽象数据表主要表达如下,即1秒后开始更新,每隔3秒执行一次。



cron=″1 / 3 * * * *?″ />



4 系统的部署

由于集成系统中各异构的数据源是自治的,这些资源分属于不同的部门,有些数据需要一定的权限才能访问,有些数据甚至不能共享,所以需对可共享的内容进行设定。系统的具体部署包括以下两个阶段:

4.1 数据注册阶段

由中介器中的注册管理器来完成,主要任务是完成对各异构数据源在数据集成层中的注册,选择集成的内容(共享的表和字段)和访问的权限,并建立数据库集成的模型。在这个阶段,主要有各异构数据库管理员和集成系统管理员两类角色参与,他们的主要任务如下:

各异构数据库管理员:主要完成登录数据集成系统,选择数据库中共享的内容,对共享的数据的访问权限进行设定。选择自己欲注册的数据库类型,向集成系统管理员注册信息,如数据库主机名、IP地址、用户名、密码。

数据集成系统管理员:主要审核各注册的异构数据源,确定访问权限和集成内容。由数据集成层建立共享的公共模型,并收集各注册的数据库信息。

4.2 系统运行阶段

此阶段的主要任务是接受用户提出的查询请求并对请求做出相应的解答。图5为系统的数据查询流程图,包括以下四个步骤:

步骤1:用户从浏览器利用HTTP协议,向应用层统一接口发出查询请求,接口收到用户查询请求后进行分析执行,转化为查询参数;

步骤2:中介器得到查询参数后,到元数据中查找目标数据库及数据表,并通过查询规划模块进行SQL分解,生成异构数据库相对应的SQL子查询语句SQL1 ,SQL2,…,并放入队列之中准备执行;

步骤3:综合包装器通过数据库操作模块,从查询队列中将SQL子查询语句SQL1,SQL2,…发送到相应的异构数据库中执行;

步骤4:异构数据库将数据查询响应后数据发送给综合包装器,通过查询结果转化模块,把各异构数据库的查询结果DATA1 ,DATA2…转化成XML1,XML2…文档;

步骤5:中介器再对各个数据库提供的查询结果XML1,XML2…文档作集成处理,即将XML1,XML2…经由结果合并过滤模块的处理,合并不完整的数据和过滤重复的数据。将完整统一的查询结果XML发送给客户端浏览器,经由浏览器呈现在用户面前。

图5 系统数据查询流程图

5 系统测试

5.1 系统测试环境的搭建

数据库访问中间件技术采用Visual Studio2010作为开发工具,对多数据库在异构环境下的访问,采用数据库为SQL Server2005、Oracle、MySql和Access, Web服务器使用Tomcat,操作系统采用Windows XP Professional SP2。整个系统的实验环境如图6所示。

5.2 测试内容与结果

本文对异构数据的智能集成系统及其关键技术点做了详细的分析和设计,并且给出了整个系统实现的详细流程方案,现通过实现一个简单的数据源注册功能来验证上述的系统[10]。

由图7知,实验环境部署包含一台数据集成中心服务器、一台客户机端和四台数据库服务器。数据集成中心Server是本系统的核心Server,实现了对异构数据源的访问和注册,各异构数(下转第90页)(上接第70页)据库的元数据和中间件都位于该服务器上;客户机端是通过浏览器访问数据集成层统一接口,以实现对异构数据的透明访问;数据库Server存储了具体的查询数据,用来实现对异构数据库数据源的管理和存储。

图 6 系统实验环境部署图

每台机器上都部署着自己的运行环境,从系统部署流程可知,从各异构数据库Server登陆数据集成中心的数据源注册系统,数据集成中心根据所填的信息,与相应的数据库进行连接,获得元数据。异构数据集成中数据源注册系统界面如图7所示。

图 7 数据源注册系统界面

6 结束语

本系统在现有的异构数据库集成解决方案的基础之上,对原有的模式集成方法的进行了多方面的扩展,使用XML、Web服务等技术实现了基于中间件的B/S模式下异构数据库的集成,本文重点分析了XML与关系数据库之间的映射,提出了通过spring框架的quarzt定时任务,实时的对集成系统全局数据表进行更新,以达到系统的智能集成。该系统成功解决了异构数据库集成时操作复杂、需要人工干预等问题。由实验结果可以看出,该设计方案较为合理且简单实用,可以被复用,效果良好,具有高实时性、可扩展性、高响应性能等特点。

推荐资讯