一种基于分布式知识搜索的数字图书馆架构,本文主要内容关键词为:分布式论文,架构论文,数字图书馆论文,知识论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
1 引言
近年来,有关数字图书馆的研究已经在国内外学术界中引起了广泛的关注。数字图书馆实际上就是有组织的信息馆藏和相关服务,信息以数字化的形式保存并通过网络访问[1]。数字图书馆是知识的重要载体和国家信息基础设施建设的重要组成部分,它已成为评价一个国家信息基础水平的重要标志和各国文化、科技竞争的焦点之一[2]。数字图书馆在技术上的研究主要是针对网上信息资源的组织与管理方式、信息的搜索方法等,其目的是使网络真正成为便于用户使用的数字化信息库。目前,关于数字图书馆技术方面,已见到的研究成果主要集中在数字图书馆实现技术和数字图书馆应用分析两个方面[3-8],其中文[3]和[4]分别从搜集服务和体系结构方面研究了数字图书馆,文[5]给出了一种查询中介的数字图书馆模型,文[6]用服务的观点阐述了数字图书馆的构建和使用,文[7]将知识管理引入到数字图书馆资源优化配置中,文[8]从技术实现的角度探讨了数字图书馆。这些成果都各有其特点,但很少有从分布式知识搜索角度去研究数字图书馆的。本文则是构造了一种基于分布式知识搜索的数字图书馆架构,并使其具有智能交互和智能搜索等特点,并实现了该数字图书馆实例系统。依据这个模型框架,用户可以利用现有的计算机网络,通过人机交互界面从数字图书馆中学习自己所需要的知识,以达到提高数字图书馆的有效性的目的。
2 数字图书馆及其实现技术
数字图书馆是一个新的知识资源的管理模式,它将从根本上改变以前知识分散、不便使用的问题。数字图书馆是以某种格式去存储大量的数字化知识并能对这些知识资源进行高效的操作,它涵盖了从知识资源的创建、访问和使用到存档、维护的整个生存周期。
2.1 数字图书馆的特点和体系结构
数字图书馆具有收藏数字化、操作电脑化、传递网络化、知识存储自由化、资源共享化和链构连接化的特点[6]。目前流行数字图书馆的体系结构有[8]:(1)开放的体系结构。采用这种体系结构的数字图书馆系统,其功能应由一组相互区别的功能单元(也称服务)来体现,这些功能单元通过开放协议来实现操作语义。(2)联邦结构。采用这种体系结构的数字图书馆系统,可以通过加值服务(value-added services)将新的功能单元加入系统,这些新加入的服务可以通过已定义的协议与其他已有服务进行通信,使其具有更好的灵活性、可扩展性及更易于升级、更易于信息共享的优点。因此目前在Web环境下多使用分布的联邦系统体系结构。(3)分布式结构。分布式是指数字图书馆系统的各组成部分可以分布在Internet的任意位置,查询请求可以被分配到多个处于不同物理位置的服务器。在实际应用中,无论采用何种体系结构来实现数字图书馆,都要以保证系统的可用性和检索性能为原则[3,10]。
2.2 数字图书馆的实现技术
数字图书馆中包括许多相关技术[2],例如:知识资源数字化、存储与压缩及分类、检索、索引、传输与保护等。其中,如何对知识文档进行有效的组织和实现分布式的高效知识搜索的技术是构建数字图书馆的关键技术[10]。
存储于数字图书馆中的知识资源由描述知识的数据和元数据(元知识)组成。数据是用来描述数字编码信息的一般性词汇,而元数据是关于数据的数据。元数据的组织设计目标是:(1)提高Internet信息资源检索的准确性;(2)对包括计算机专家、图书馆员、数据提供商在内的所有Internet用户开放,而不是仅仅局限在参考书目领域;(3)既可以嵌入现有文档,又可以作外部连接。元数据的规范有许多,例如都柏林核心集(DC)[1]、MARC标准和RFC1807等。
XML(eXtensible Markup Language,可扩展标记语言)在数字图书馆实现过程中扮演着重要角色。XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它是元标记语言,即定义了用于定义其他与特定领域有关的、语义的、结构化的标记语言的句法语言。作为一种通用数据格式,XML强大的功能使其在Web上不同类型的数据交换方面日益扮演重要角色。电子商务、电子出版和远程教育等一些基于Web的应用领域的全面兴起,使得传统的Web资源变得更加复杂化、多样化。数据量的日趋庞大对网络的传输能力也提出较高的要求。同时,人们对Web服务功能的需求也达到更高的标准,这些需求越来越广泛和迫切。XML技术为这些需求的实现提供了有力的支撑。XML不仅保持了原有的功能性和可扩展性,而且更加易用。XML的新技术为一些特殊的任务提供了标签和属性或者指导方法。
3 基于分布式知识搜索的数字图书馆架构
依据上述分析和参照国际主流的数字图书馆技术的研究成果[5-9],这里给出了一种基于分布式知识搜索的数字图书馆架构。该架构由一个统一的知识门户和若干分布式的知识文档服务器组成。统一的知识门户可以屏蔽系统的实现细节,使知识搜索操作对用户透明。知识文档服务器对用户请求进行响应,完成知识搜索功能。图1给出了基于分布式知识搜索的数字图书馆的架构。
图1 基于分布式知识搜索的数字图书馆架构
3.1 知识文档服务器的功能
知识文档服务器是基于分布式知识搜索的数字图书馆架构的最重要的部分,其特点有:(1)知识文档服务器之间是平等关系,在处理知识搜索请求时由某一个知识文档服务器作为调度者,完成与其他知识文档服务器的相关进程联系工作,并对结果做整合处理。调度者的选择由知识门户的分派策略决定。(2)知识文档服务器由功能组件集、服务集及知识文档集组成。服务集中包含响应由知识门户转来的用户请求所必须的所有服务,通过这些服务完成对知识文档的操作。知识文档集中包含源知识文档、元知识文档和索引文档。(3)服务集中的服务应是各自独立的,它们之间通过预先定义好的开放协议进行通信,相互通信的两个服务可以位于不同的知识文档服务器中。系统构建在这些分布于各个知识文档服务器中各自独立的服务之上,完成对用户请求的响应和实现系统目标。(4)各服务之间进行通信是建立在传输层之上的,用户(或其他服务)通过调用定义在每个服务中的若干动词来实现其服务功能。但是动词肝定义的只是概念性的操作,其具体实现要以知识文档模型为基础。
3.2 各部分的关系和工作过程
在图1中,知识门户可选择任意一个知识文档服务器作为调度者,索引服务对索引查询器是调用关系,索引查询器对知识文档集是查询关系。整个架构分为离线和在线两部分,其中,离线处理不占用用户的请求时间,主要完成:(1)启动元知识生成器,对每一个源知识文档生成一个格式统一的,便于用户浏览的,且有较好扩展性的元知识文档,供以后查询使用。(2)启动索引生成器,对每一个源知识文档建立用于全文检索的索引,索引项的指针指向该源知识文档所对应的元知识文档的地址。在线处理是指各个服务之间为响应用户请求而进行协调工作,其详细步骤如下:
步骤1 用户通过知识门户提出查询请求;
步骤2 一个知识文档服务器充当调度者,调度者中介服务接收请求;
步骤3 该中介服务与本服务器上的聚集服务联系,取得索引服务的信息;
步骤4 该中介服务向其他知识文档服务器上的各索引服务转发请求;
步骤5 索引服务收到请求后,在各自的知识文档集中查询,并将结果返回给调度者的中介服务;
步骤6 该中介服务将各索引服务返回的结果整合,生成知识文档主题列表;
步骤7 通过知识门户将该列表以HTML格式返回给用户。
3.3 各构成部分的功能
数字图书馆的主要功能就是对知识资源(数字文档)的存储与访问,这些功能的实现要依赖于一组相互独立的服务与功能组件,即知识门户、中介服务、聚集服务、索引服务、知识文档集服务、索引生成器、索引查询器及元知识生成器。其中,(1)知识门户旨在对用户屏蔽系统内部的分布式操作,并为用户提供友好的界面,从而使他们能够方便地使用该系统进行查询与浏览。要为不同类型的用户提供不同级别的服务,要提供多种检索方式,在检索过程中应允许用户进行交互,自由选择所需的知识文档类型及内容。(2)中介服务的主要作用在于构造分布查询,即对查询请求进行合理的分派。事实上,构造分布查询的功能最初是知识门户的一部分,但是为了提高系统的组件化与可维护性并减小Web服务器的负担,本架构中将这一功能独立出来,形成中介服务。(3)聚集服务是将所有知识文档按类别分组。在数字图书馆领域中还没有完全统一的分类方法[2]。可以按学科或专业进行分组,每个组构成了一个子知识文档空间。聚集服务提供必要的信息来记录每个子知识文档空间中包含哪些具体的服务提供者,即索引服务。该信息至少要包含服务器地址与服务端口号两项。另外在系统中还有一个中心聚集服务器,负责新的知识文档服务器的注册和与其他各知识文档服务器上的聚集服务定期联系,更新聚集信息。(4)索引服务的主要功能是接收中介服务的查询请求消息,根据事先定义的开放协议解析消息格式,提取出查询语义,并调用索引查询器实现查询操作,然后将得到的结果信息进行组织,并返回给中介服务程序。一个查询请求将会由中介服务发送给多个与之相关的索引服务,每个索引服务只能提供其所在的知识文档服务器中的知识文档的信息。这些索引服务与中介服务一起完成分布式查询操作。(5)知识文档集用于存储数字化的知识文档。其中,知识文档服务器中用于对外发布的所有原始知识文档组成了源知识文档库。元知识文档与源知识文档之间是一一对应关系,元知识文档中记载对应源知识文档中的元知识。所有的元知识文档组织在一起构成元知识文档库。索引数据库是用来保存所有源知识文档及元知识文档的索引信息。建立索引的目的是为了提高查询效率,缩短等待时间。(6)索引生成器用于对源知识文档进行创建索引操作,处理结果(索引表)形成索引数据库,该索引库为索引查询操作提供必要的信息依据。可以先将元知识返回给用户,用户根据元知识判断是否真的需要该源知识文档。如果不需要则不必下载整个文件,这样可以节省大量时间。(7)索引查询器作为一个独立的模块被索引服务调用,完成用户请求中的语义查询。查询操作有两类:全文检索和主题检索。主题检索的目标文档是元知识文档,而元知识文档都是以固定的数据模型进行组织的(如XML、MARC等),其数据具有一定的结构,因此可以先规定整个系统都采用一种固定的文档格式来组织元知识文档,然后对这一固定的格式定义查询语言,再使用该查询语言直接在元知识文档中进行查询,这样可以提高查询的效率与准确性。(8)元知识生成器用于生成源知识文档的元知识文档。每一篇源知识文档都有唯一的元知识文档与之对应。数字图书馆中的大部分图书都包含一个以MARC格式描述的元知识,但这种文档格式是为机器读取而制定的,普通用户很难理解其含义,因此我们采用XML格式代替MARC格式描述元知识。
3.4 架构的特点
基于分布式知识搜索的数字图书馆采用的是以知识文档模型为基础、以服务为框架、以协议为脉络的分布式架构。其特点有:(1)分布性。服务资源和知识文档资源可以位于分布于各地的多个知识文档服务器中。(2)可扩展性。各个服务组件之间是相互独立的,每个服务组件定义一组动词,每个动词都有其所能识别的固定的消息格式。可以通过增加服务组件来增添系统的功能及满足新的需求,还可以方便地增加知识文档服务器,并通过聚集服务进行文档的逻辑划分。(3)开放性。用户可以按预先定义的通信协议开发出自己的服务组件,进行相互通信,交换数字化知识文档。(4)鲁棒性。知识文档的冗余存放,使当一个服务器损坏时,不会对搜索结果产生太大的影响。
4 实例分析
依据上述架构,这里实现了一个基于分布式知识搜索的数字图书馆的实例。其中,知识文档组织方式为:(1)每个知识文档都有一个与场所无关的名称,它可以在系统范围内唯一标识该文档。实例系统中,以文档的编号作为名称。(2)每个知识文档服务器上都有一个记载知识文档标识和存储地址之间的对应关系的表,它由各文档服务器的管理员维护,采用层次化分级命名管理策略,以保证每一个知识文档的标识都是系统内全局唯一的。这种标识设计有良好的可扩展性,若将标识作为本地句柄名,再向全球Handle System进行注册,就可以将该标识扩展成具有全球唯一性的句柄标识[13,14]。层次化目录结构中的每个文件都放在一个起始于知识文档标识目录的子目录下。在实例系统中,首先在每个文档服务器上创建目录/db,将文档统一存放在该目录下,然后建立下一级目录,以提供文档的单位名作为目录名。例如,工商管理学院为nesba,这时目录结构为/db/nesba。再对每个文档以文档编号建立子目录,目录结构变为/db/nesba/0001,/db/nesba/0002等。该目录已经指到具体文件,接下来创建子目录/bib、/pdf、/ps、/tiff等,分别存放元知识文件及不同格式的文档文件。对于有分解的文件格式,在该子目录下要有对应的分解文件。
另外,服务与协议也是基于分布式知识搜索的数字图书馆的重要方面。在实例系统中,知识门户是采用JSP和Java Servlet实现的,中介服务、聚集服务及索引服务是采用Java语言实现的[11]。
(1)知识门户由两部分程序构成:一个HTML页面与一个Servlet程序。HTML页面为用户提供一个界面,用户使用该界面输入搜索条件,然后由Servlet程序将这些条件进行请求分派,转发给一个调度者服务器。
(2)中介服务作为一个守护进程运行,在固定的端口A上侦听知识门户的请求。实例系统中构造了四个类来实现中介服务的功能,分别是中介守护类、中介处理类、索引通信类和共享对象类。服务启动后,中介守护类首先创建侦听端口并进入侦听状态,每当有用户请求时就创建一个中介处理类的对象。这些中介处理对象之间以多线程方式运行。中介服务的主要工作是由连接处理线程来完成的,在进行索引请求时,它又要对聚集信息中的每一项创建一个索引通信类对象。这些对象之间也以多线程方式运行。各个索引通信类对象与其创建者之间通过共享类对象完成主线程与子线程之间的通信,此时在父线程中采用时间渐增算法对等待时间进行控制。索引通信类功能比较简单,它扩展线程类完成与索引的通信。该类的对象以父进程中的共享对象为参数创建,然后建立Socket与索引服务联系,取得索引信息后通过共享对象的同步方法改写共享区域。
(3)索引服务的实现。各文档服务器上的索引服务作为守护进程运行,在固定的端口B上侦听中介服务的请求。在处理用户请求时采取多线程机制,即一旦发现连接请求,立刻产生一个连接处理线程进行下一步的处理,而主线程仍旧保持侦听状态,等待其他请求的到来。因此其主要工作是由连接处理线程来完成的。索引连接处理的流程如图2所示。索引服务是通过一个索引处理类来实现的。
图2 索引服务流程
(4)聚集服务也作为守护进程运行,在固定的端口C上侦听中介服务的请求。在处理用户请求时采取多线程机制,即一旦发现连接请求,立刻产生一个连接处理线程进行处理,将所需聚集信息返回。而主线程仍旧保持侦听状态,等待其他请求的到来。其功能由一个聚集处理类来完成。
实例系统中各种服务中的类的定义及通信框架的实现细节,这里不赘述。
5 结束语
本文针对如何实现数字图书馆的分布式知识搜索问题,给出了一种架构。采用这个架构,可实现对知识文档有效的组织和高效的搜索。但需要指出,数字图书馆是一个多学科、多技术的集合体,本文的研究只是针对Web环境中的一个局部问题,所以还需要进一步的深入研究与实践。本文的研究工作只是对数字图书馆技术在中国的实践做初步的尝试。