国家明确提出了以信息化带动工业化的方针政策,大力发展信息化建设。随着我国各行各业信息化工作的快速发展,各行业逐渐建设了行业内部许多独立的信息系统,这样就产生了信息孤岛问题:对这些行业数据的存储和管理基本上处于独立和封闭的状态,不能满足行业内部和行业间信息共享的现实需求。随着信息孤岛数量的不断增多,连接关系呈现为越来越复杂的网状,问题日益严重。
传统集成技术主要包括数据抽取、转换、清洗、装载(ETL)、企业应用集成(EAI)。ETL可以称为第一个真正意义上的集成工具,它主要为构建数据仓库或数据集市而使用的,可以完成从多个孤立的数据源抽取数据、转换、清洗、装载到一个数据仓库或数据集市。它的缺点是响应数据变化的时间长,用户查询是预先定义好的。EAI和ETL相似,它可以集成数据到一个应用中,而不是数据库,但它设计为一种小数据量或者单条记录消息的推送机制,不能有效地支持大数据量的发布。然而,由于数据表示形式复杂、异构系统互联缺乏统一标准,造成传统的数据集成如数据仓库等存在一些不足,主要表现在数据不实时、查询只限于那些预先选择好用于归档的数据、实施和维护成本较高、技术复杂和实施比较困难、项
XML技术中的XML语言是计算机信息交换的规范、标准,提供了规范的统一的数据表示;基于XML技术的Web服务语言描述一些操作(利用标准化的 XML 消息传递机制可以通过网络访问这些操作)的接口,使应用程序能够通过 Internet 进行通信,方便的实现应用的集成,为异构系统互联提供统一标准协议。因此,XML技术的发展弥补了传统EAI技术的不足,为信息孤岛问题的解决提供了契机,促成了EAI走向面向服务架构(SOA)。
EII工具可以按需、实时地从建立在多种异构数据源上的综合视图中获得集成后的数据,极大的简化了数据集成的工作,降低了成本,缩短了项目周期。
系统分析与设计
本章针对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:XDIM系统结构
系统结构设计
图2展示了XDIM的系统结构:
XDIM中间件可分为三大部分:开发平台、管理平台、运行平台。其中运行平台可以分为连接器、XML视图引擎、XML服务器、适配器部分等,其中,连接器是XDIM负责连接目标应用的部分,处于系统的上游;适配器是XDIM负责连接数据源和源应用的部分,处于系统的下游;XML视图引擎是存储XDIM虚拟数据库数据的重要核心、是目标应用从上游能看到XDIM系统的最深处(一个个视图),换句话说,目标应用是看不见源数据和源应用的,是“Many to One”和“One for Many”的两功能的衔接部位和分界线;XML服务器则是实现XML数据处理中心。
系统可以分为7个相对独立的子系统:连接器connecto
其中,连接器提供运行平台的对客户端应用连接应用的API和开发平台的对可视化工具连接的API;XML服务器则提供XML数据处理;适配器则提供对数据源的连接;框架是各部分衔接的基础;可视化工具则是XDIM展现给用户的窗口,包括开发平台和管理平台。XML数据视图则是本系统的核心部分,实现对底层数据源的包装和对外展示,下面详细说明。
XML数据视图引擎采用XML技术,可以简化数据集成,屏蔽数据源来自不同物理位置、不同应用系统,为集成应用提供一致的,虚拟的数据视图。
它为各种异构数据源提供统一的数据视图,为企业应用集成提供单一的虚拟数据库,集成应用只需与这个虚拟的XML数据库中的数据进行交互,虽然这些数据存储在不同的应用系统中。同时还提供维护数据一致性和有效性的方法,并且支持分布式操作。
XML视图引擎主要由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体系,使得模块之间松耦合。其中面向服务体系决
而服务的创建的时间和开销会比较大,所以,为了保证服务的响应速度和性能,我们需要建立服务池,保证服务的并发执行的性能。
为了保证服务接口的一致性,服务之间通过XML消息格式相互通信。其中请求消息格式为:
Content in XML (e.g.
具体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的通用的数据