>
首页 » 业界动态 » 一种基于XML的通用数据集成中间件设计

一种基于XML的通用数据集成中间件设计

作者:  时间:2007-11-18 11:30  来源:

国家明确提出了以信息化带动工业化的方针政策,大力发展信息化建设。随着我国各行各业信息化工作的快速发展,各行业逐渐建设了行业内部许多独立的信息系统,这样就产生了信息孤岛问题:对这些行业数据的存储和管理基本上处于独立和封闭的状态,不能满足行业内部和行业间信息共享的现实需求。随着信息孤岛数量的不断增多,连接关系呈现为越来越复杂的网状,问题日益严重。

传统集成技术主要包括数据抽取、转换、清洗、装载(ETL)、企业应用集成(EAI)。ETL可以称为第一个真正意义上的集成工具,它主要为构建数据仓库或数据集市而使用的,可以完成从多个孤立的数据源抽取数据、转换、清洗、装载到一个数据仓库或数据集市。它的缺点是响应数据变化的时间长,用户查询是预先定义好的。EAI和ETL相似,它可以集成数据到一个应用中,而不是数据库,但它设计为一种小数据量或者单条记录消息的推送机制,不能有效地支持大数据量的发布。然而,由于数据表示形式复杂、异构系统互联缺乏统一标准,造成传统的数据集成如数据仓库等存在一些不足,主要表现在数据不实时、查询只限于那些预先选择好用于归档的数据、实施和维护成本较高、技术复杂和实施比较困难、项目周期通常很长。

XML技术中的XML语言是计算机信息交换的规范、标准,提供了规范的统一的数据表示;基于XML技术的Web服务语言描述一些操作(利用标准化的 XML 消息传递机制可以通过网络访问这些操作)的接口,使应用程序能够通过 Internet 进行通信,方便的实现应用的集成,为异构系统互联提供统一标准协议。因此,XML技术的发展弥补了传统EAI技术的不足,为信息孤岛问题的解决提供了契机,促成了EAI走向面向服务架构(SOA)。

EII工具可以按需、实时地从建立在多种异构数据源上的综合视图中获得集成后的数据,极大的简化了数据集成的工作,降低了成本,缩短了项目周期。

系统分析与设计

本章针对XDIM做详细地分析和介绍,重点集中在系统架构方面。

XDIM系统总体功能

图1:XDIM系统总体功能

系统分析

XDIM就是为了解决信息孤岛问题、采取XML技术实现、面向EII市场开发的基于XML的数据集成中间件。

XDIM的总体功能可以用图1表述出来:

XDIM集成分布式环境(如 CORBA、J2EE和.NET等)下的应用软件及数据,提供给多类应用(GUI应用、WEB应用等)使用。这样,XDIM实现了两大部分功能,即:“Many to One”集成 、“One for Many”共享发布。从目标应用来看,XDIM提供的是XML数据库—共享发布的功能;但从XDIM自身来看其实是集线器—集成的功能。

XDIM针对三个使用角色可以划分为三个平台:针对应用及其用户提供基于不同数据源XML视图的运行平台,为基于XDIM的应用的运行提供通用的支撑环境;针对数据集成员提供开发平台,为运行平台提供开发环境;针对XDIM系统管理员提供集成管理平台,完成可视化的配置、管理。

为了保证这些功能的顺利完成,XDIM中间件的开发需要解决好如下关键技术问题:

■ 系统如何进行多类异构数据源的数据访问?数据一致性如何保证?系统需提供一个即插即用的适配器体系,完成多种类型的数据源的热部署。

■ 系统如何共享集成后的数据?系统需提供一个统一的XML视图,指向真实的数据,用户直接使用XML视图,不需要关心底层的数据库表,保证了与数据库的松耦合。此外,视图引擎在视图之上还支持对视图进行XQuery查询。

■ 数据集成过程可能很复杂,如何保证系统的灵活性?系统需支持客户化定制系统流程,提高系统各模块的独立性,保证系统适应不同的集成需求。XDIM提供一个工作流引擎,保证系统能够同时集成同步、异步数据源。

■ 系统如何提高集成效率,保证系统实时访问的效率能满足企业应用的需求?为此,XDIM提供一个优化器,保证集成效率。

这些问题的解决,将在下面的设计中详细描述。

图2

图2:XDIM系统结构

系统结构设计

图2展示了XDIM的系统结构:

XDIM中间件可分为三大部分:开发平台、管理平台、运行平台。其中运行平台可以分为连接器、XML视图引擎、XML服务器、适配器部分等,其中,连接器是XDIM负责连接目标应用的部分,处于系统的上游;适配器是XDIM负责连接数据源和源应用的部分,处于系统的下游;XML视图引擎是存储XDIM虚拟数据库数据的重要核心、是目标应用从上游能看到XDIM系统的最深处(一个个视图),换句话说,目标应用是看不见源数据和源应用的,是“Many to One”和“One for Many”的两功能的衔接部位和分界线;XML服务器则是实现XML数据处理中心。

系统可以分为7个相对独立的子系统:连接器connector、数据视图引擎dataview engine、XML服务器xmlserver、适配器体系adaptor、可视化开发工具、可视化管理工具、框架framework(包括系统运行控制管理器、常用工具等其他),分别进行独立开发。

其中,连接器提供运行平台的对客户端应用连接应用的API和开发平台的对可视化工具连接的API;XML服务器则提供XML数据处理;适配器则提供对数据源的连接;框架是各部分衔接的基础;可视化工具则是XDIM展现给用户的窗口,包括开发平台和管理平台。XML数据视图则是本系统的核心部分,实现对底层数据源的包装和对外展示,下面详细说明。

XML数据视图引擎采用XML技术,可以简化数据集成,屏蔽数据源来自不同物理位置、不同应用系统,为集成应用提供一致的,虚拟的数据视图。

它为各种异构数据源提供统一的数据视图,为企业应用集成提供单一的虚拟数据库,集成应用只需与这个虚拟的XML数据库中的数据进行交互,虽然这些数据存储在不同的应用系统中。同时还提供维护数据一致性和有效性的方法,并且支持分布式操作。

XML视图引擎主要由XQuery解析器、XQuery优化器、XQuery执行器三部分构成。XQuery解析器,主要完成解析XQuery语法、拣出数据视图、生成查询计划;XQuery优化器则完成查询计划的优化:合理安排优先级、合并重复的查询过程、通过提前使用查询条件缩小视图查询出来的数据集;XQuery执行器则完成查询计划的执行:调用适配器完成外部数据源数据的转换与获取、构建视图及执行基于视图的查询。

可视化开发工具提供可视化开发设计环境,在可视化开发环境中可以快速开发XML视图,在设计时,商务分析人员和开发人员可轻松创建XML 视图定义文档,并可以在开发环境中进行调试和测试并将其部署到共享资源库上,在开发环境中还可以进行转换规则、商业处理规则、和工作流处理的可视化开发。可视化管理工具提供可视化管理环境,在可视化管理环境中,可以动态配置系统参数,提供集中统一的基于角色的安全用户管理和访问控制,提供对运行平台的运行监控能力。

可视化开发工具是集成中间件平台的开发环境,用来创建,测试和部署XML视图。它提供一系列的向导,模板,用户只需通过简单的鼠标操作就可以将实际的数据源映射到XML视图,这种映射是可重用的可以被多个视图共用。

用开发环境开发,部署XML视图分为三个阶段:

1.设计阶段

完成XML视图的定义, 转换规则,业务规则, 流程定义。通过一些向导来完成各种数据源到XML的基本映射。

2.测试和调试阶段

确保定义的XML视图,转换规则,业务规则, 流程定义是正确可执行的。在部署之前可以在开发环境中预览XML视图动态生成的结果,以验证设计的映射,当与预期不符时可以通过调试器设定断点,在运行时控制输入参数,单步执行处理流程,以确定是在那一个环节出现了问题。

3.注册和部署阶段

在设计好XML视图后,可以在开发环境中利用部署向导将XML视图相关的元数据发布到共享资源库,部署到XDIM服务器中。

适配器体系是中间件与各种数据源进行交互的桥梁,完成与任何一种源应用或数据源基于任何平台的数据交换,包括关系型数据库、企业大型主机系统、XML数据库等等。它主要由一个适配管理器和一系列的适配器组成,适配器是一些Plug-in的组件,可以通过适配管理器进行动态加载。

适配器实现与多种数据源的适配功能。提供多种接口方式JMS、API、Web Services等,连接多种类型的数据源如RDBMS、文件、WebServices等。

适配器将数据源的数据加工成XML格式,通过映射规则,形成数据视图。

数据源的类型有关系数据库, XML数据库,ERP, CRM等等,我们为不同类型的数据源提供相应的适配器。如DBMS适配器通过ODBC, JDBC等接口将DBMS的数据转化XML或者相反。DBMS适配器支持关系数据库如Oracle, Sybase, MS SQL Server, Access, DB2等。适配器在使用时可通过管理平台将其注册到资源库中。我们以DBMS适配器为例介绍适配器的设计。

DBMS适配器结构见图3。

图3 DBMS适配器结构

系统由SQL/XML转换引擎负责处理由Adapter Manager发送来的XQuery查询语句,并根据定义好的映射关系将其转换为相应数据库的SQL语句,通过JDBC或者JDBC/ODBC桥操作数据库并将相应的结果返回给Adapter Manager。

系统支持一个适配器管理器,多个不同版本或不同类型的适配器同时并存。他们构成了一个完整的适配器体系。

框架是一个基于SOA的服务框架,它内含工作流引擎,通过采用SOA体系,使得模块之间松耦合。其中面向服务体系决定了系统内部各主要模块之间松耦合的关系,这些模块像独立的点,便于维护。而工作流引擎决定流程流转的控制机制,像一根线,把这些模块联系起来,支持自定义流程。基于SOA体系的运行平台服务框架(SSF):XML视图引擎、工作流引擎都被实现为一个个松耦合的服务,分别加上部分服务功能,包装为XML视图服务、工作流服务。其中服务之间还可以递归调用,实现最大程度的服务复用。

而服务的创建的时间和开销会比较大,所以,为了保证服务的响应速度和性能,我们需要建立服务池,保证服务的并发执行的性能。

为了保证服务接口的一致性,服务之间通过XML消息格式相互通信。其中请求消息格式为:

Content in XML (e.g. g>Hello world!)

具体XML内容与服务的特定功能相关。

为了保证各服务相互之间能够通信,必须符合上面的公共约定。这些公共约定以服务框架的形式存在。所有的服务都必须基于服务框架实现。

系统性能优化设计

性能优化设计

性能方面的优化考虑,主要是从两个方面着手:提高视图引擎的XQuery解析器解析速度;提高视图引擎的XQuery执行器的执行效率。其中,最关键的是提高执行效率。

■ 要提高XQuery解析器的解析速度,采取了如下措施:

利用Cache缓存查询计划,重用以前的解析。

合并重复的解析过程:对于同一查询过程中相同的视图,不用重复解析。

解析出来的查询计划内容要进行排序:按数据源、数据集排序,便于查询计划进一步优化。

■ 要提高XQuery执行器的执行效率,要采用查询重写这一关键技术,由XQuery优化器重新生成优化的查询计划,可以采取如下措施:

利用Cache缓存查询中间结果,重用以前的查询,新的查询计划中不再进行查询。

合并查询过程:对于本次查询过程中,针对相同的数据源的查询语句就合并一起,一次查询得到结果。

并行查询:采用多线程技术,对多个数据源同时并行处理。

合理安排查询优先级:对于大数据量、耗时的查询,不在同一数据库的可以并行的优先查询;对于同一库的查询,小查询优先进行,否则大查询将导致数据库整体性能下降。支持自定义查询优先级顺序。

通过参数化查询和提前使用查询条件缩小视图查询出来的数据集:对于数据视图的数据可能数据量很大,但不是最终查询所需的数据可以先用外层的查询条件过滤掉一部分,这样,数据集会比较小,后续的处理会加快。

优化前后系统性能对比测试

在系统完成后,我们编写了基于WEB的测试程序,模拟了200个客户端,通过安装在1G内存、Pentium4的PC服务器上的XDIM中间件,集成配置为2G内存、1颗CPU的多台IBM PC服务器上的2个Oracle数据库数据源的4G数据。在优化前、后分别进行了两次完全相同的测试。测试结果表明:优化前,大部分响应超时(超过两分钟)失败;优化后大部分响应时间在10秒内。这个结果是令人满意的,它满足了企业级客户的要求。

行业项目应用XDIM中间件的开发

在XDIM软件主体部分开发、测试完成后,我们很快地将其应用到一个具体的应用项目中。下面介绍在某市防汛指挥系统我们应用XDIM的情况。防汛指挥系统总体建设目标是:以通信和计算机技术为基础,系统收集、整理水、雨、工、旱、灾情信息等防汛信息资源,并进行综合的信息管理、分析和利用,为防汛管理和决策实施提供现代化手段,迅速、准确地预测和统计实际灾情,尽可能减少灾害损失,并使其对环境的不利影响最小。

防汛系统水情、雨情、灾情信息来源包括:覆盖该市20个区(市)县的防汛专网、防汛信息采集系统、处理分析、辅助决策系统等多个系统。

由于系统的数据结构复杂,来源广泛,数据集成任务异常繁重。

一个典型的例子:水情实时预警查询的数据来源,防汛信息采集系统、防汛专网系统在这两个各自独立的系统中,这些生产系统系统情况如下:

防汛信息采集系统:负责采集该市20个区(市)县的水位站实时水情信息,sqlserver数据库。

防汛专网系统:存储防汛水位站的预警信息,oracle数据库。

这样,我们知道为了完成这个实施查询,需要抽取的数据来源一共有2个系统共21个两种异构数据库。

采用XDIM可以提供直接的集成和访问三个系统的不同形式的接口,实时地获得系统最新的数据信息。它提供了基于标准的XML视图,可以直接以虚拟XML文档的形式提供,也可以提供对虚拟文档的XQuery再加工的接口,方便用户的使用。

现在,如果我们想得到水情实时预警查询这样一个实时查询,我们需要从的数据来源防汛信息采集系统、防汛专网系统中提取水文站信息、实时水位信息情况和水位预警信息。这样,系统集成员先定义一个实时水文预警信息的XML视图,它映射到防汛信息采集系统的商业API接口、防汛专网的数据库,并提供给报表系统作为数据来源。系统开发人员就可以从报表系统中的数据来源中找到新生成的实时水文预警信息的XML视图,就通过市面上任意一款流行的报表自动生成工具,生成报表样式:加上表头、表尾,预览直到满意为止,再将报表发布到浏览器中。用户就可以从浏览器中打开这张报表。当用户浏览报表时,系统实际是从XDIM虚拟的数据中心取出数据,XML视图引擎根据系统缓存是否命中,命中的缓存是否与真实数据一致,来决定是否调用XML服务器实时取出数据,如果不命中或者不一致,则从并行调用防汛信息采集系统和防汛专网系统的各自的Adaptor从对应的系统取出数据,在组装成结果集送出XDIM,返回报表系统的客户端浏览器。

这样,解决了报表系统最头疼的数据来源问题,极大提高了报表系统报表的生产率:原来几天做一张报表,现在一天就可以做几张报表。

在本论文中,我们主要完成了设计一个基于XML的通用的数据集成中间件产品XDIM,该软件最大的特点是采用SOA体系结构思想,以工作流引擎为基础,集ETL、EAI、EII工具于一身,以较低的成本、简便的操作,就可以满足客户复杂的数据集成需求,解决了本文开头所提到的传统数据集成面临的成本高、周期长的问题。而SOA体系结构思想下的XDIM运行平台服务框架是论文工作成果之二,它代表了最新的中间件平台的发展方向,可以应用在其他中间件系统开发过程中,对于提高系统结构的灵活度、降低系统各个模块之间的耦合度、最大程度地复用各个模块有很大的好处。通过引入的工作流机制,平台服务可以不用编程、方便的自定义在不同的业务实现流中,实现系统按任务需要定制。

相关推荐

基于XML链式结构的研究

基于XML链式结构的研究

在Java中实现DOM文档和XML文件互相转换

Java  DOM  XML  2008-10-15

一种基于XML的通用数据集成中间件设计

XML;数据集成;EAI  2007-11-18

基于车载网络嵌入式浏览器的设计

基于车载网络嵌入式浏览器的设计

在线研讨会
焦点