基于Java技术的数字图书馆异构平台数据库访问_数字图书馆论文

基于Java技术解决数字图书馆异构平台数据库访问,本文主要内容关键词为:数字图书馆论文,异构论文,数据库论文,平台论文,技术论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。

[分类号] TP311

国内数字图书馆的建设自90年代以来,在理论和实践方面均取得了巨大的进展。而今天,伴随着Internet/Intranet和Web技术迅速壮大与成熟,图书馆资源的数字化、网络化是满足越来越多的图书馆用户渴望通过网络来获取他们所需的知识信息的必然要求。

然而,由于实际存在的数据资源多种多样,图书馆往往保存有大量的诸如全文期刊库,书目数据库、学位论文库、会议记录库等众多的专题数字资源。它们的存储和读取方式不尽相同,有些是以数据库形式存放(Sybase、Oracle),有的直接以文件形式保存在计算机硬盘上,另有一些是以文件形式存放在光盘(塔)中,需要在Internet浏览器中以各自专有的客户端检索界面进行数据读取和检索,这就需要图书馆用户面对千变万化的检索要求来获取相应的数据资源,这对广大的图书馆用户,尤其是对计算机环境不太热悉的人来说,是一个不小的困难。因此,建立这些不同平台,不同存储读取方式的数字资源的统一的检索查询界面,从而方便广大图书馆用户对图书馆丰富数字资源的有效查询和充分利用就成为现代图书馆建设中重要而且必要的事情。各种异构数据源的访问技术,尤其是基于JDBC的数据存取技术,由于其继承Java技术平台无关和移植性好的特性,正越来越成为实现异构数据源访问的重要选择。

1 目前几种常见的数据库动态访问技术方案分析

1.1 CGI(Common Gate Interface)公共网关接口

这是一种基于Web服务器的外部程序接口标准。传统的基于Web的应用中,是通过CGI程序实现动态页面的。用户的请求传给Web服务器时,由Web服务器通过HTML页面调用相应的CGI脚本程序来访问后台数据库以响应和处理用户请求,获取数据结果。由于几乎所有的Http Server均支持CGI,且C、C++、perl、VB、VC等编程语言和工具均可以用于实现CGI程序的编程故其通用性较强。但是其最大的缺陷在于运行效率不高。用户的每一个请求都需要启动一个独立的CGI进程来运行相应的CGI程序。而且由于每一个进程对系统资源消耗比较大,如果采用这种方式,则一旦图书馆用户的并发访问数量大时,将会占用服务器端大量的系统资源。而图书馆业务的特点往往决定了在某个时间段图书馆用户量是很大的,高峰时刻常会有许多用户同时联机请求检索,这巨大的负荷必将造成服务器性能的急剧下降。同时,CGI程序是基于临时请求的非持久性连接。对一个Client端的导致的服务器端CGI进程的运行在将处理请求的结果返回给客户端就立即终止。这种非持久性连接特性使得每一次运行CGI程序都要从头至尾的完整建立一次与数据库的连接。这一进程的巨大资源开销也会导致基于CGI程序的图书馆检索业务整体性能的下降。其运行机制如图1所示:

图1

1.2 采用扩展服务器应用程序接口(Web Serverr API)

许多Web服务器内置了一套API(Application Programming Interface).API采用了直接调用Server端集成API的高级程序设计方法。基于API的应用程序在Windows下以DLL的形式存在,并以线程的方式运行。API通过Microsoft的ODBC来访问后台数据库。数据库应用程序开发者可以通过VC的MFC类库的ODBC类或DAO类.VB/DELPHI集成开发工具的数据引擎(Database Engine)来访问后台异构数据源。目前普遍采用的有基于Windows NT平台的IIs所支持的ISAPI和Netscape Commerce Server提供的NSAPI。但是由于其与特定的服务器产品捆绑的特性,决定了Web Server API解决方案的可移植性差,不能跨平台应用和编程的复杂性,难以适应异构平台效据源的存取。比如对于基于Linux平台的Appache Server,IIS的ISAPI则无能为力。而Web Server API,该方式通过API直接访问数据源,可以明显提高效率。但是由于其与Web服务器捆绑过紧,缺乏通用性,而且其具体实现也是大都依旧于平台有关。以Microsoft的IDC为例,其运行机制如图2所示:

图2

1.3 ODBC技术

ODBC(Open DataBase Connectivity)作为微软提出的通用的异构多数据源存取的开放互联标准,提供了一个CLI(Call Level Interface)调用级接口,供数据库应用开发者实现可互联大多数关系型数据库的API调用。使用ODBC API时,ODBC通过Driver Manager来判断用户的应用程序所要连接的数据库类型,并自动从已向其注册的ODBC驱动程序中相应载入,使得基于ODBC API的应用程序和基于ODBC Driver的数据库之间相互独立。ODBC目前提供的是32位版本。多数ODBC驱动均直接集成在商品化的DBMS中或者由第三方独立的驱动程序供应商提供。但是由于其缺乏兼容性和过分依赖和捆绑于微软的开发环境,移植性差也是其缺点。

1.4 基于ASP和PHP技术的动态数据库访问技术

作为根植于微软Windows的IIS Server平台上的服务器端脚本运行环境。能运行高性能和交互式的动态网页。ASP使用Axtivex组件技术来帮助ASP完成服务器应用程序的功能。同时,ASP采用在HTML代码中插入脚本以构成ASP页面。在服务器接收到对驻留其上的ASP页面的请求后,将对页面的脚本代码采用边解释边执行的方式,然后通过HTTP方式将结果传回给客户端。高安全性,面向对象和良好的可扩展性是其优点。但是作为Microsoft的产品,其与微软的特定服务器端产品IlS脚本运行环境相绑定,因此基于Windows平台开发的ASP应用很难移植到其它平台下。同时由于ASP的解释执行特性,决定了其执行效率的低下。面图书馆查询检索业务的用户量大,并发访问的可能性高,故需要高效的运行效率和执行速度来支持多用户进程的并发,这是ASP解释执行的效率难以做到的。

PHP是另外一种可选的基于Unix/Linux系统的跨平台的服务器端脚本运行环境。它也是采用HTML的代码内嵌脚本语言。该种语言中混合了C、Java、PERL以及它自己独有的语法。同时PHP也采用了与ASP类似的边解释边执行内嵌的脚本代码以访问后台数据库并与用户交互。PHP公开源代码以支持不断加进来新的东西。PHP对几乎所有的数据库如Oracle、MS SQL Server、Sybase、Mysql等,均提供良好的支持,同时,PHP提供众多的协议支持,如HTTP、IMAP、POP3及NNTP等,使得PHP在跨平台方面有很好的表现。但是PHP没有象JSP和ASP那样有对内置组件的支持,使其与以上二种技术相比缺乏竞争力。

1.5 JSP/Servlet和JDBC技术

JSP是由SUN Microsystem公司开发的一种全新动态页面技术。JSP技术类似于ASP和PHP,也是在传统的HTML页面代码中利用HTML特定的扩展功能来嵌入JSP脚本代码(通常为Java语言),构成在服务器端(server-Side)的JSP页面(扩展名.JSP)。但是其脚本的处理,摈弃了常用的解释执行方式,而是采用一种全新的先对代码进行转换,编译,而后再执行的方式,可以大大提高运行效率。其运行过程如下:配置了JSP/Servlet执行环境的服务器在遇到客户端发来的一个JSP页面请求时,首先由JSP引擎把对应的JSP页面代码(HTML和JSP脚本代码组成的混合码)转换成Servlet代码,然后由JSP引擎调用Server端的编译器对Servlet代码进行解释成为字节码(.CLASS),最后由JVM(Java Virtual Machine)执行该字节码文件并返回给Client端相应的结果。其中编译Servlet代码生成的字节码(.CLASS)将一直停留在服务器端的相关目录内供后续客户端对它的请求重用。这种服务器端的驻留程序功能将极大的提高对客户端的请求执行效率。而Servlet是在Java基础上的一种技术和标准。它是为进一步提高Java服务器端的开发能力而发展起来的。Servlet程序基于Servler API而开发的,在JSP服务器的JSWDK中提供这种API包。Servlet程序能响应各个不同的客户端,并且可以提供THREAD SYNCHRONIZE(同步)机制。JSP技术作为一种全新的服务器端使用技术,具有良好的跨平台使用性和与协议无关性。它继承Java应用程序的优点,在一种平台的机器上编写的JSP代码只要做很少的变动就可以原封不动的在另一台运行有JVM的机器上编译通过。同时,JSP只是在第一次被请求的时候才编译.后续请求将直接使用驻留在服务器端的经过编译后的字节码(.CLASS),其访问速度将会大大提高。特别地,对于访问率非常高而且短时间又不会有什么改动的页面,JSP将会有比ASP速度上有较大的提高。

JSP/Servlet与后台数据库的连接使用了JDBC接口技术。JDIBC技术(Java DataBaseConnectivity)是由Javasoft公司推出的独立于具体DBMS的数据库API。JDBC具有两层结构:JDBC API和JDBC Druver API.JDBC API提供了应用程序(Java Applet和Java Application)到JDBC Driver Manager(驱动程序管理器)的通信,这部分API是为面向数据库应用的开发人员提供的编程接口。而后者则提供了JDBC Driver Manager与后台各异构数据库驱动程序的接口。第三方的数据库驱动程序开发人员和数据库集成产品销售商则利用该接口为各种数据库产品生成相应的Driver模块。目前使用的JDBC驱动程序类型有:

·JDBC—ODBC桥程序:该驱动程序作为JDK的一部分提供,并且目前许多的数据库厂商均为其产品提供基于ODBC的驱动程序。

·Native—API Party—Java Driver:通过使用客户机的API把JDBC调用转换成客户端本地数据库的调用

·NET—Protocal ALL—Java Driver:将JDBC调用转换为独立的DBMS的网络协议,再由应用程序将网络协议转换为DBMS协议。

·纯Java驱动程序:由各个数据库供应商提供的原始的Java JDBC类与用户自定义的应用程序类(Applet、Servlet)提供一种独立于本地代码的纯Java的可移植的数据库访问驱动程序。

以上各种驱动程序在程序运行时由JDBC Driver Manager动态载人。这是直接由JDBC API类库里的相应类来自动完成的,只要在机器上安装有该API类库。实现该功能的API类库包含在Java.sql包中,同时该包中还包含有与数据库建立连接、传送用户查询请求和接收查询结果的用于实现与数据库连接的的其它功能的类,如Driver Manager类、 Connection类、Statement类和Resultset类。JDBC数据库接口技术为推动后台数据库访问技术的发展起到了有力的支持,提供了独立于特定数据库系统而实现对异构平台多数据源的透明访问。该机制实现结构图如图3所示。

图3

2 Java技术与数字图书馆异构平台数据源

现代数字图书馆具有信息的数字化,系统开放、高效率、资源共享、服务内容广泛的特性,使得广大的图书馆用户可以在任何地方、任何时间,通过各种计算机平台,实现对图书馆数字资源信息的共享。要实现这一目标现今仍然有许多的困难,诸如图书馆的基于异构平台的数字资源的多种多样,并发访问用户量大等,这些都是迫切需要解决的问题。而由SUN Microsystem公司推出的Java技术,作为一种较为纯粹的面向对象技术,有着良好的对象封装、动态多态和继承等面向对象的特性,提供诸如Javabean等可重用组件技术。并且其支持安全性和同步机制,摈弃了极易导致安全性问题的C/C++等编程语言的指针技术。Java特有的内置字节码解释执行功能使得其在跨平台运行上独树一帜。基于Java技术的数字图书馆异构平台数据源的存取可以充分利用Java在服务器端的使能技术(Server—Enabled)及其提供的安全多线程特性,可跨平台以及JDBC接口提供的供Java应用程序对后台数据库的通用访问机制来实现对图书馆的众多关系型数据库系统的无缝平滑的和可扩展的集成和访问,以高效优质的服务与图书馆用户。

3 基于Java技术的图书馆异构平台数据源访问的系统解决方案

3.1 总体系统架构

系统采用目前通用的基于Java平台的Browser—Server多层体系架构。相对于常见的针对多数据源访问而采用的将SQL查询语句进行分解优化的实时分布查询技术。

图4 总体系统架构图

本系统采用了系统数据库和独立的数据采集模块来透明动态和无缝的后台多数据源采集方案。应用服务器中的JSP/Servlet程序接收客户端请求并且返回相应的结果。另一部分Servlet程序作为专用的数据采集模块在后台适时透明的采集和集成多数据源到统一的系统数据库中去。B(瘦客户端)包含浏览器(IE或Netscape)、JDBC API、Java虚拟机。用户通过在Applet小程序中提供的用户表单(FORM)填写申请信息。系统采用了统一的用户端接口检索界面,提供一些图书馆检索业务常用的检索点和组合逻辑查询语句的书写框,来帮助图书馆检索用户通过友好、统一、方便的人机界面交互方式进行联机查询。用户提交的检索查询请求通过Web Server传送给后台的应用服务器进行处理。通过JVM中存在的沙箱(Sandbox)机制,可以禁止下载到客户端的Applet程序访问任何客户端本地资源,而只是允许其访问在其下载前本来所驻留的主机,保证了图书馆数据资源的数据安全性。进一步的,通过Web Server传到应用服务器的用户检索查询请求由装载在应用Server端的JSP/Serrvlet负责接收,一般是由Servlet Request和Servletresponse两个接收对象来实现。Servlet封装了从客户到应用服务器的通信,并且解析来自客户请求的输入流而获取客户信息。同时调用相应的JSP/Servlet程序来根据检索请求并通过JDBC接口访问系统数据库以获取有效检索数据字段信息,然后生成符合检索用户要求的HTML检索界面返回给图书馆查询用户,从而完成一次完整的用户请求处理。但是在本次过程中被调用过的JSP/Servlet程序将一直处于激活状态,就如同应用Aerver提供的一种集成服务功能,使得该JSP/Servlet程序与多个客户端之间的连接可以共享某些持久性的信息,诸如费时而且复杂的与后台系统数据库反复建立连接等。而另一方面,驻留在应用Server的上的另外一些JSP/Servlet程序作为“虚拟”客户,定期的在后台通过与各种异构数据源对应的数据采集程序去根据适当的遍历查询算法查询数据源的更新存储情况。对发生了变化的后台数据源,获取最新数据,并将其在系统数据库作相应的增量维护或者修改。这些作为“虚拟”客户的请求的应用Server端JSP/Servlet程序和数据采集程序可以随后台异构数据源的增加而动态扩展,这一功能的实现为适应数字图书馆数据库资源的增加实现了动态地和平稳地扩展机制。

3.2 应用服务器功能模块

(1)事件管理器和事件代理 对于用户提根据系统定义好的消息格式提交的检索请求,由运行于应用服务器中的事件管理模块事先定制的事件代理模块进行监听并进行相应的功能响应。如果某个事件代理模块无法处理,则可基于消息传递机制转交消息管理器,由事件管理容器在注册到其中的事件代理模块中查找相应的功能模块进行处理。同时事件代理完成对数据源的监控。这可由Javabean等Java技术中基于组件的技术实现。

图5 APP/Webserver(应用服务器)功能模块示意图

(2)事件管理 该模块实理对APP/Web server中系统数据库的数据格式、含义、长度等属性的功能定义。根据数据采集进程发回的消息及对不同数据资源的数据采集规则来插入/更新系统数据库。返回给用户的检索查询结果也是由该模块实现。这部分人机实时动态交互可由JSP、Servlet技术实现。

(3)独立的多进程数据采集 该功能模块是APP/Web server,也是整个系统架构设想的最核心关键的部分。系统架构图中的众多的数字资源服务器就是图书馆馆藏的各种图书资源,他们也就是供用户查询的系统数据库中数据信息的真正来源。数据采集模块针对每种数据源的有效数据采用相应的数据采集规则。这些采集程序针对不同的后台数字资源采用各种适合的数据源访问技术,CGI、API、JDBC/OD8C等,在系统空闲的时候,到系统后台自动去检索数据源的更新信息,由相应的数据采集规则进行判断,是否把采集获得的数据消息发给数据管理模块并由管理模块做系统数据库的插入/更新操作。同时,数据采集模块还实现对从后台异构数据源获得的数据信息超链接定位,使检索用户能进一步获得更详细的查询信息和实现对数据源的直接访问。

4 总 结

随着计算机、通讯、多媒体、高密度存储等信息技术的发展和应用,尤其是网络的迅速普及和扩大,数字图书馆的建设将进一步朝着网络化、自动化、集成化方向发展,其中对异构数据库的统一和访问是非常重要的。但是图书馆现有数字资源在系统平台、DBMS、网络异构等方面存在较大的差异。因而实现基于Java技术的数字图书馆异构数据源访问管理系统,为广大的图书馆用户提供统一、简便的访问使用界面,将有效的整合和充分利用图书馆现有数据资源,为广大的图书馆用户提供高质有效的服务,也必将促进数字图书馆的建设。

标签:;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  ;  

基于Java技术的数字图书馆异构平台数据库访问_数字图书馆论文
下载Doc文档

猜你喜欢