基于Java和XML的异构数据库集成研究*
Heterogeneous Database Integration Research on Java and
XML
陈凤岩 唐振宇 步兆军
(哈尔滨工业大学图书馆 哈尔滨 150001) (哈工大华德应用
技术学院 哈尔滨 150001)
摘 要 分析了图书馆异构数据库集成的意义及相关技术,介绍了Java和XML在数据库集成中的应用,在此基础上
实现了异构数据库集成的原型系统。由于采用Java和XML技术,该集成系统具有可移植性和可扩展性等特点。
关键词 异构数据库 集成 Java XML
在当今信息化、知识化的社会,信息的重要性日益凸显出来。 图书馆服务水平的提高越来越多地依赖于查询、发布、采集、处理 信息的能力。人们对于信息的集成程度要求越来越高,对于信息 获取的便利要求也越来越高。如何更好地解决信息获取的难题, 是图书馆普遍面临的问题。 1 异构数据库集成的意义
近年来,高校图书馆为加强信息资源建设,提高服务质量,通
过集团采购、自主购买、自建数据库等多种形式,引进和建设了多 种不同的数据库资源,使得图书馆的电子图书、电子期刊、网络数 据库等数字化信息资源显著增加。这些数字信息资源往往是由 不同的数据商提供的异构数据库,系统运行环境各不相同,数据 库的检索界面存在差异性和复杂性[1]。不同的数据库使用不同 的检索软件,每个数据库支持的检索算符和使用的检索语言也不 尽相同。当用户在检索某个课题时,为提高查全率,首先需要了 解在图书馆提供的众多数据库中哪些数据库涵盖的学科内容与 自己的检索课题有关系;其次,需要逐一登录所有有关数据库分 别进行检索。在检索时,需要掌握不同数据库的检索规则和检索 方法,以便正确地检索;各个数据库的检索结果往往具有不同的 全文数据格式(如caj、pdf、pdg等),需要安装各自的阅读器,才能
阅读全文。这些因素造成的后果是:检索效率低下,增加了用户 检索的难度,浪费了用户大量的时间和精力,给使用者带来诸多 不便。因此,图书馆迫切需要对所拥有的数字信息资源进行统一 的组织和处理,即在引进、自建数据库的同时,对这些资源进行集 成,构建一个异构数据库信息共享平台,实现不同数据库之间的 数据信息资源、硬件设备资源等的合并和共享。
异构数据库的集成就是要将不同数据库系统、不同操作系
统、不同计算机平台或者不同的底层网络进行屏蔽,使得用户通 过一个检索平台可以同时对多个数据库进行检索,用户访问异构 数据库集成系统如同访问一个数据库系统一样[2]。从而提高信 息资源整体使用效率,有利于实现信息资源的共享。 2 异构数据库集成技术分析
异构数据库集成可以通过转换和标准化来实现。一般而言, 解决异构数据库集成的主要技术有以下几种:
a.数据转换程序。利用数据转换程序,对数据格式进行转换, 从而能被其它的系统接收。它是通过周期性的同步更新数据库 内容,简单地实现在数据库级分享信息。b.使用中间件。中间件 是软件实现的功能层,它的作用是将查询请求分解,把查询请求 转换成相应数据库的查询语言和检索方法,分别对各个数据库发 出检索请求,再将来自各个数据库的命中结果集成在一个界面中 显示给用户。c.多数据库系统。它是一个能够兼容多个异构数据 库的系统,它对外呈现出一种集成结构,对内又允许各个异构数 据库的“自治性”。这种多数据库系统和分布式数据库系统有所 不同。其区别是多数据库系统不存在一个统一的数据库管理系 统软件,而后者是在一个统一的数据库管理系统软件的管理与控 制之下运行的。
3 Java和XML在数据库集成中的应用
3.1 Java Java语言是一种适用于网络编程的语言,它的基本 结构与C++极为相似,但却简单得多。它集成了其它一些语言 的特点和优势,又避开了它们的不足之处。它的主要特点是简
单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移 植、高性能、多线程以及动态性。
Java中连接数据库的技术是JDBC,很多数据库都带有JDBC 驱动程序。SUN公司还开发了JDBC-ODBC桥,用此技术Java 程序可以访问带有ODBC驱动程序的数据库。JDBC API(Java Database Connectivity Application Programming Interface)是一种可 用于执行SQL语句的Java API,由Java语言编写的类和接口组 成,为数据库应用开发人员、数据库前台工具开发人员提供了一 种标准的应用程序设计接口。JDOM(Java Document Object Mod- el)是基于Java2的API,利用JDOM可生成与处理XML文档,并 可用于快速开发XML应用程序。JavaBeans是基于Java的组件模 型,是一种Java类,通过封装成为具有某种功能或处理某个业务 功能的对象。JavaBeans可以被修改或与其他组件结合以生成新 组件,是完整的程序。
3.2 XML XML(eXtensible Markup Language)是一种可扩展 的标记语言,也是一种独立于操作系统以及网络系统的、与平台 的、用来描述任意数据的置标语言。XML描述数据本身,其
显示要通过XSL来实现。一个XSL样式表集合了一系列设计规 则以用于将信息从XML文件中取出,并将其转换成HTML或其 它格式。由于数据显示与内容分开,XML定义的数据通过指定不 同的显示方式,使数据更合理地表现出来。
目前用现有的搜索引擎技术搜索多个不相容的信息库,实际 上是不可能的。对于信息集成问题而言,关系数据模型太过严 格,以致无法用它来有效地表示半结构化和非结构化数据。XML 比关系数据模型能够表示更多样化的数据格式,它能使不同来源 的结构化、非结构化数据可以很容易地进行合并。中间层服务器 上的软件程序能够整合来自后端数据库和其它应用程序的数据, 然后将这些数据传递到用户端或其他服务器,以进一步汇总、处 理和分发[3]。因此XML的出现导致了新一代的数据库和数据集 成方案的诞生。
3.3 Java与XML在集成中的应用 Java语言被认为是最适 合进行XML编程的语言之一。在众多编程语言中,Java是支持 XML的优秀平台,XML又是Java应用的优秀数据表示方法。目 前Java和XML已经成为可移植代码和可移植数据的实现手段。 为了适应变化,数据库供应商已能够利用数据库可扩展性和抽象 数据类型方面的发展成果快速提供对象关系数据模型、将关系数 据作为XML文档存储和检索的机制以及SQL的XML扩展[4]。 将Java技术与XML相结合,构建异构数据库的集成系统,可
使系统具有可移植性及可扩展性。数据库集成机理是通过JDBC 提取不同数据库中的数据,并通过JDOM把它们转换成XML文 档数据。利用Java的无平台性,在Web服务器与数据库之间建立 一个中间层(中间件),通过中间件将来自各异构数据库的数据集 成起来,即把若干个XML文档根据一定的规则集成为一个文档, 实现各异构数据库中数据统一的XML文档的转换[5]。XML以 一种统一的数据模式描述来自不同数据源的数据,从而屏蔽数据 源中应用环境和数据结构的异构性,实现异构数据源的集成。 4 基于Java和XML的异构数据库集成原型系统设计
4.1 系统模型设计 本系统设计的目标是:建立一个异构数 据库信息共享平台,构建一个统一的检索系统和用户界面,实现 用户单一的检索表达,在一个涵盖各种不同数据库的集合中得到 响应,从而实现多个异构数据库的统一检索。用户界面基于 Web,采用Weblogic Server作为系统应用服务器,Tomcat为Web 服务器,系统运行环境是Windows2000。开发模型如图1所示。 图1 开发模型
各个JavaBeans通过JDBC访问不同的数据源,并返回XML
格式的查询结果。Data JavaBeans相当于中间件,一方面它能够被 JSP和Servlet调用,接受JSP和Servlet的数据处理请求;另一方 面它负责处理查询的分解以及查询结果(XML数据)的合成。
4.2 系统体系结构设计 在B/S三层架构的基础上结合
XML和Java的特点、原理,将本系统分为四层体系结构:第一层 是表示层,接受用户的信息请求并返回请求结果;第二层是Web 服务器,实现信息的发布、交互和处理的功能;第三层是应用服务 层,用于数据的处理及与数据库的交互;第四层是数据服务层,主 要是采集网络上的多种异构数据源。基于XML的多层系统体系 结构如图2所示。
图2 基于XML的多层系统体系结构
客户端通过浏览器向Web服务器发出请求后,由Servlet负责 接收,然后Servlet根据用户的动作调用相应的JSP页面与Jav- aBean,而与数据库交互工作由JavaBean负责,JSP页面生成动态 XML反馈给客户。在客户端用XSL样式表对XML文档进行处 理,并将处理的结果以HTML的形式展现给用户。
4.3 程序设计 本系统以三个异构数据库为例,通过一个统 一的检索平台,实现对三个异构数据库的同时检索,生成集成的 检索结果。数据库系统分别为XML文件系统、关系型数据库Or- acle和Sybase。由于篇幅所限,各数据库的数据结构不在这里列 出。其中查询XML文件系统的JavaBean程序部分列举如下: package com.orient.query; import javax.xml.parsers.* ; import org.w3c.dom.* ; import java.util.* ;
public class SearchXmlRecord{
private Vector recordElements=new Vec- tor();
private Hashtable searchCondition; public SearchXmlRecord(){ }
public SearchXmlRecord(Vector recordElements){
this.recordElements=recordElements; }
public void setSearchXmlRecordElement (Vector recordElements){
this.recordElements=recordElements; }
public Vector searchRecordsElement(String searchKey,String searchVaule) throws RecordNotFoundException(下转第21页) 17
Journal of Information No.7,2006 情报杂志2006年第7期 物业费用、文档、投诉信息及系统用户等等。基于当前系统 的设计规模及后台数据库要处理大量的小区数据、费用数据及 用户数据等要求,同时也考虑到数据库的易于维护性,后台数 据库选用Microsoft SQL Server 2000 SP3。Microsoft SQL Server
相关推荐: