基于SOA的异构数据源统一检索系统模型

日期: 2009-08-13 作者:杨世军张瑞斌 来源:TechTarget中国 英文

  基于SOA的异构数据源统一检索系统模型(1)

  面向服务的体系结构(service-oriented architecture,SOA)是新兴的粗粒度、松耦合的软件架构模式。采用面向服务的体系架构,提出了一个异构数据源统一检索系统架构,运用SOA设计模式和Web服务技术,分析SOA和JSF,并设计出异构数据源统一检索系统框架,实现了各异构数据源的集成检索。

  数字图书馆以图书馆及互联网上的各类数字资源或非数字资源为中心,为用户提供方便、快捷的知识服务机制,为数字资源的存储和管理、数字资源的访问和服务提供高效、实用的解决方案。由于数字资源数据库一般都有自己独特的检索系统,它们在数据结构、组织方式、检索方式、检索接口以及显示界面等方面都有差异,形成了“信息孤岛”,整合数字资源,使来自不同类型、不同格式的数字资源实现无缝链接,提供一站式检索服务,就成为迫切需要解决的问题。

  1 SOA概述

  面向服务的体系结构(service-oriented architecture,SOA)是指为解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件架构,它将应用程序的不同功能单元(服务)通过这些服务之间定义良好的接口和契约联系起来。

  从本质上来说,SOA是一种架构模式,它将所有功能都定义为服务,所有的服务都是独立的,服务的具体实现对于服务使用者来说是透明的,服务的使用者只需通过服务提供的接口来调用服务,服务之间通过交互、协同作业来完成整体业务逻辑,所有的服务通过服务总线来连接服务和服务请求,服务总线处理定义好的服务流,它们按合适的顺序调用所需的服务并产生最后的结果。

  JSF是为基于Java的Web应用提供的一种用户界面开发框架,它定义了良好的请求处理生命周期以及合理的组件层次结构,具有可重用、可扩展性,JSF 是web应用程序开发的标准框架,该框架集成了构建良好的MVC(模型-视图-控制器)设计模式,实现应用程序逻辑与视图的清晰分离。

  2 基于SOA的异构数据源统一检索系统架构

  2.1系统拓扑结构系统拓扑结构图如图1所示,系统在结构上主要由异构数据源、检索服务总线、统一检索平台三部分组成:该结构屏蔽各个异构数据源的位置、接口等细节,提供能够同时检索多个异构数据源的集成界面,能够有效提高检索效率。

  异构数据源是整个统一检索系统的基础,统一检索系统的检索能力和检索数据都要依赖于各异构数据源,各个数据源根据其自身特点和能力提供其内部检索的接口,并且通过Web服务技术以统一的格式将检索接口包装,然后将Web服务注册到检索服务总线,异构数据源自身的检索功能不受检索服务的影响。

  检索服务总线是统一检索系统运行的核心,其采用标准的SoAP协议作为数据传输协议,为统一检索平台提供检索服务,为数据源提供服务注册接口。检索服务总线接受来自统一检索平台的检索请求,将检索请求进行统一的处理,然后查找特定的检索服务,将处理过的检索请求转发给检索服务,接着统一调用各检索服务,返回特定格式的检索结果,之后将各检索结果合并、去除重复记录、转换为统一检索平台统一处理的格式并进行排序,最后将最终得到的检索结果返回给统一检索平台,以便进行统一的展示,检索服务总线对数据源注册的服务信息进行维护和管理,例如服务的启用和禁用等,以保证检索服务的正确调用,另外,检索服务总线提供保证其正常运行的一些基础服务,如安全服务、日志服务和事务服务等。

  图1 基于SOA的异构数据源统一检索系统拓扑结构图

  图2 基于SOA的异构数据源统一检索系统架构

  统一检索平台是用户进行检索的入口,主要提供用户管理、基于各种方式的检索、检索结果的展示、资源元数据的管理以及其他个性化服务功能,统一检索平台获得用户的检索请求后,将检索请求转发给检索服务总线进行处理,获得整合后的检索结果,然后将检索结果绑定到页面进行展示,统一检索平台存储检索到的元数据信息,并对存储的元数据进行管理,以保证其与数据源端同步。

  2.2系统架构在系统拓扑结构基础上,提出系统的分层架构模型,并给出每层的主要实现技术,系统架构图如图2所示,该架构将系统自上而下分为五层,分别是:表示层、业务逻辑层、检索引擎层、持久层、数据层,通过分层,可以降低系统各部分之间的耦合程度,便于维护和扩展。

  基于SOA的异构数据源统一检索系统模型(2)

  3 基于SOA的异构数据源统一检索系统设计

  3.1统一检索模块设计

  统一检索模块采取检索服务检索和本地元数据库检索相结合的方式进行,在用户检索的过程中不断充实本地元数据库,以尽量使得用户所需的数据能够从本地元数据库抽取,提高检索效率和检索速度,系统目前提供简单检索和复合检索两种方式,简单检索和复合检索的实现过程基本相同。

  以简单检索为例。用户输入检索词后,系统会首先判断元数据库中有无该检索词及对应的检索服务,根据判断结果来执行不同的操作,主要分4种情况。

  (1)元数据库中存在此检索词,且数据库中该检索词对应的检索服务包含用户选择的数据源对应的服务,此种情况下不必通过调用检索服务进行检索,直接从本地元数据库中抽取对应的元数据展示给用户即可。

  (2)元数据库中不存在该检索词,这种情况下只能通过调用检索服务进行检索,系统首先保存用户输入的关键词及其与检索服务的关联关系,然后依次调用检索请求处理、检索服务分发和调用、检索结果融合模块进行检索,将检索的结果展示给用户,在检索结果展示的同时,系统通过在后台执行一个线程类来保存检索到的元数据信息,而非先保存检索结果后进行展示,这样,在返同结果较大时,可以尽量减少检索结果返回和展示的时间,使用户能够尽快浏览检索结果。

  (3)元数据库中存在检索词,但数据库中该检索词对应的检索服务跟用户选择的数据源对应的检索服务无任何交叉,这种情况实际上也相当于元数据库中不存在检索词的情况,只能通过调用检索服务进行检索,系统首先保存检索词和检索服务的关联关系,然后依次调用检索请求处理、检索服务分发和调用、检索结果融合模块进行检索,然后将检索的结果展示给用户,在检索结果展示的同时,系统通过后台执行线程类来保存检索到的元数据信息。

  (4)元数据库中存在该检索词,但数据库中的检索词对应的检索服务跟用户选择的数据源对应的检索服务各自有部分交叉,这是最复杂的一种情况,既要从本地元数据库检索,也要通过检索服务检索。对于交叉的检索服务从本地元数据库中检索,对于选择的数据源对应的服务中没有交叉的部分则需通过调用检索服务来检索,系统首先会保存检索词和没有交叉的检索服务的对应关系,然后依次调用检索请求处理、检索服务分发和调用、检索结果融合模块进行检索,通过线程类保存通过检索服务检索的结果,同时根据检索词和交叉的检索服务从本地元数据库中检索,再将两者检索的结果合并、排序,最后将最终结果绑定到页面展示给用户。

  选择最复杂的第4种情况为例,时序图如图3所示。

  图3 统一检索时序图

  3.2元数据更新模块设计元数据更新时序图如图4所示。

  图4 元数据更新时序图

  进行更新操作时,系统模拟该检索词的检索请求,然后依次调用检索请求处理模块、检索服务分发模块、检索服务调用模块以及检索结果融合模块进行检索,同时检索本地元数据库中对应的元数据。调用Web服务检索和本地元数据库检索结束后,将两者返回的检索结果进行比较,保留元数据库中两者交叉的部分,将本地元数据库检索的结果中与调用Web服务检索结果不同的元数据从本地元数据库中删除(指删除元数据与检索服务的对应关系),将调用Web服务检索的结果中与本地元数据检索的结果不同的元数据添加到本地元数据库中。

  4 小结

  网络环境中的数字资源以指数速度增长,针对这些数字资源而开发的检索系统也越来越多,而这些检索系统却各自独立,它们各自只针对自己管理的数字资源提供检索,这使得用户在检索时消耗大量的时间和精力,而且查准率和查全率不高,异构数据源统一检索系统能较好的解决这一问题,它集成各检索系统,为用户提供统一的检索界面,将用户的检索请求分发给各检索系统,然后将检索结果以统一的格式展示给用户。它还可以避免用户频繁登陆各个检索系统,从而为用户节省大量的时间和精力,有效提高检索效率。

  基于SOA的异构数据源统一检索系统采用分层架构,层与层间以接口方式通信,各模块之间松散耦合,易于维护和扩展。系统集合了元数据整合模式和中间件模式的优点,采用边检索边充实本地元数据库的检索策略,有效解决检索结果融合以及元数据更新的问题,因而可以保证元数据库与数据源的同步,保证用户的查准率和查全率。该系统基于SOA进行设计和开发,具有很好的跨平台性和扩展性,可在很大范围内实现数据源的“即插即用”。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐