首页  ·  知识 ·  
基于SOA的异构数据集成中间件的研究与设计
网友      编辑:dezai   图片来源:网络
基于SOA的数据集成方案与模式集成、数据复制数据集成方案相比,在对业务变更作出快速响应方面具有明显优势。文章结合中间件技术和SOA思想,给出了一个面向SOA的异
    引言

企业根据生产发展的需要,往往在不同时期引进了不同的信息系统。这些信息系统运行的软硬件平台各异,数据模型各异,从而使各数据源间的互操作变得困难,使它们成为信息孤岛。为了解决异构系统间的数据集成问题,人们提出了许多异构数据集成方案,总的可以归纳为三类:模式集成、数据复制和基于SOA的数据集成。模式集成是将各数据源的数据视图集成为全局模式,使用户能够按照全局模式透明地访问各数据源的数据。典型的模式集成方法有联邦数据库技术、基于本体的技术等;数据复制是将各个数据源的数据复制到与其相关的其它数据源上,并维护数据源整体上的数据一致性,提高信息共享利用的效率。典型的数据复制方法是数据仓库技术;基于SOA的数据集成是在SOA的框架下对每个数据源都为其创建一个服务,然后使用WSDL描述服务,并向UDDI注册中心注册服务。模式集成和数据复制侧重于怎样把现有的不同数据整合到一起,因此对数据需求的变更难以做出快速的响应。

中间件是一种处于操作系统、网络和数据库之上,应用软件之下的独立的系统软件或服务程序。相连接的不同系统,即使具有不同的接口,但通过中间件相互之间仍能交换信息。本文针对企业信息环境中出现的异构数据及遗留数据问题,结合中间件技术和SOA思想,提出了一种异构数据集成方法,给出了一个面向SOA的异构数据集成架构。利用该架构能有效地应对业务的快速变更,降低异构数据集成组件的内部耦合度,提高数据集成组件的复用性和可扩展性。

2 基于SOA异构数据集成架构

2.1 数据集成架构

数据集成是指把不同来源、格式、特性的异构数据资源进行统一的表示、存储和管理,实现分布的、异构的、自治的数据资源整合,形成统一的信息源,为用户提供统一的结构化信息。通过数据资源集成技术可以屏蔽各种异构数据资源间的差异,使用户以一致的方式方便快捷地进行数据交换和数据共享。基于sOA的数据集成采用面向服务的设计思想,将数据集成的主要功能按其特点进行分离、抽象,并且封装成符合标准的服务形式。图1为基于SOA的数据集成架构图。

2.2 架构分层说明

基于SOA的数据集成架构采用SOA的层次结构,分为表示层、业务层、服务总线、服务层和数据层五个层次。这样的层次划分,降低了数据集成中间件的开发难度,同时将数据集成中间件的主要功能封装成具有统一标准的服务,提高了扩展能力和业务敏捷性。

 

 

  1)表示层:这是用户与异构数据集成中问件进行交互的界面,用户可以通过表示层根据需要进行相关的数据操作,如数据的添加、删除、修改和查询等,或者进行与中间件相关的配置、管理等工作。

2)业务层:用户根据服务注册库提供的服务制定不同的业务规则,并对提供的服务进行组装从而完成不同的用户需求。

3)服务总线:服务总线是架构的核心部分,它通过开放的技术标准(如SOAP、UDDI、WSDI 和XMI 等)完成服务的注册、查询、绑定、调用、协同,以及对组合服务的编排工作;同时它还完成服务之间的信息交互。

4)服务层:服务层包含由各种功能实体和服务封装描述组成的服务,异构数据集成中间件的主要功能都是由这些服务或这些服务组成的组合服务来完成的。服务层内包含了两种不同粒度的服务:原子服务和组合服务,这些服务共同构成数据集成中间件的功能基础。

5)数据层:数据层是各种异构系统的数据存储中心,不同的异构系统采用不同的方式存储相关数据,如文本形式、层次数据库、关系数据库等。在数据集成架构中它们作为数据源对外提供用户需要的数据。

 
 
3 核心模块的设计

数据集成中间件包含了安全管理模块、存储管理模块、数据引擎模块、数据源适配器模块等功能模块,这些功能模块由多个不同的服务组成。其中安全管理模块主要是为数据集成提供安全保障,包括权限认证、加密解密和服务控制三个方面的内容;存储管理模块主要是完成对xML文档的读取和存储管理;数据引擎模块是数据集成中间件的核心模块,主要负责对用户的查询请求进行优化处理,按计划对数据操作进行分解,再将这些分解后的操作存入操作队列,按操作队列调用数据源适配器,执行最终的数据操作;数据源适配器模块主要负责与底层数据源进行连接,执行数据操作,并将操作结果从数据源的本地格式转化为统一的标准格式。

3.1 安全管理模块

安全管理模块中权限认证是关键,在数据集成过程中要规划好用户类型并且分配相应的权限,因为用户可能会对数据源中的数据进行变更操作。因此服务请求者为了执行数据集成中间件提供的服务或操作必须经过身份权限认证。在中间件中采用用户名/密码的身份权限认证方式,并把用户名/密码存放在XML文件中,每个用户的密码经过加密解密模块加密后保存到XML文件的password节点中;当需要把用户密码取出来认证时再用加密解密模块进行解密。用于存放用户信息的XMI 文件内容格式如下:

点击图片查看大图

基于SOA数据集成架构

在authority节点中规定相应用户的权限,如INSERT、DEI ETE、UPDATE、SELECT和ALI ,对于有多种权限的用户,可以并列几个权限,中间用逗号分隔。

3.2 数据引擎模块

数据引擎模块完成操作语句的优化、分解和调度,主要包括操作语句的检查、操作分解、操作调度等具体功能。操作语句检查功能完成对模块传人的SQL语句正确性进行判断,如果传人的SQL语句是错误的,则直接返回出错信息给用户,不再把SQL语句传给后续的工作模块;如果传人的SQL语句是正确的,则把SQL语句传给后续的工作模块继续执行。操作语句检查功能通过先检查sQI操作语句的关键字如INSERT、WHERE等,然后再检查操作对象的数据库表名、列名的正确性来最终判断SQL操作语句的正确性。对于操作语句检查功能可设计成具体的类,在类中完成对SQL操作语句关键字的检查,对数据库表名的检查,对数据库列名的检查等操作。

操作分解功能完成对需要进行跨库操作的SQL操作语句进行分解。对于只涉及到一个数据源的SQL操作语句不用进行分解,只需直接转发给相应的适配器即可。实现操作分解可按照如下方法进行:

1)判断SQL操作语句是否需要进行分解,这主要根据SQL操作语句中的FROM子句和WHERE子句中是否存在多个数据库表名。如果存在多个数据库表名则对该语句进行分解,而只存在一个数据库表名则无需分解。

2)把需要分解的SQL操作语句按照关键字FROM和WHERE进行分割并存放在字符串对象中。对字符串的操作可利用.Net或JAVA中的String对象。

3)根据FROM子句中存在的数据库名的个数组合相应的字符串,使每条SQL操作子语句只包含单个数据库名,并根据嵌套情况对SQL操作子语句的优先级进行判断。

操作调度功能完成对分解后的SQL操作子语句分配执行顺序,并转发给相应的适配器。对于有嵌套查询等操作的语句,操作调度功能要保证SQL操作语句的顺序,这可根据SQL操作子语句的优先级来判断。

3.3 数据源适配器模块

数据源适配器模块主要是对传人的SQL操作子语句进行执行。在对SQL操作子语句进行执行的过程中,要完成相关参数的加载、构建数据库连接字符串、加载数据库驱动程序等工作。由于后端数据源的不同,使用不同的连接方式将影响与数据库的连接质量和连接效率,因此应针对不同的数据源采用不同的连接方式。在适配器模块根据连接对象的不同加载相关的参数,如provider、dbname、username和password。相关参数的加载可与构建数据库连接字符串一起实现,因为在数据库连接字符串中要包含所加载的参数。构建数据库连接字符串可采用ConstructDB—ConnStr()方法来实现。以下是ConstructDBConnStr()方法的说明:

函数原型:public string ConstructDBConnStr(stringdbname)

参数:string dbname为要访问的数据库的名称

返回值:string类型,为最后访问该数据库的连接字符串

因为在数据源注册模块中把可以访问的数据源相关信息存储在XML文档中,因此ConstructDBConnStr()方法可以在XML文档中直接通过数据库名称dbname来获取该数据源的相关信息,包括该数据库的类型、数据库的地址、访问该数据库的名称和密码等,把这些信息进行组合从而构建完整的连接字符串。

4 结语

目前,针对数据集成已有许多研究,也出现了许多成熟的技术。尽管它们都在某种程度上解决了数据集成问题,但仍存在诸多不足,特别是在考虑开放环境下数据资源的时候。因此,需要更多自治的、协作的和灵活的方法以构造可互操作、开放的和平台独立的数据集成系统。基于SOA的数据集成中间件以面向服务的设计思想对数据集成过程中的主要业务流程进行了划分,将业务流程逻辑分离为松耦合的、自治的、可复用的功能实体,并将其封装为具有统一描述标准的服务,提高了数据集成中间件的可复用性和扩展性。本文结合中间件技术和SOA思想,给出了一个面向SOA的异构数据集成架构及其主要核心模块的开发方法,对于计划利用SOA思想开发数据集成中间件的读者具有一定的帮助。

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
    >>频道首页  >>网站首页   纠错  >>投诉
版权声明:CIO之家尊重行业规范,每篇文章都注明有明确的作者和来源;CIO之家的原创文章,请转载时务必注明文章作者和来源;
延伸阅读