
通用Web数据库系统体系结构研究.doc
9页通用Web 数据库系统体系结构研究王磊(武汉理工大学信息工程学院信研1005班,湖北省武汉市, 430070)摘 要:概述了 Web 技术和数据库技术融合的必要性,详细分析了传统的Web 数据库体系结构(WDSA)的缺点,提出了基于组件和分布式对 象技术的新一代通用WDSA, 为Web 数据库系统的研究和开发提供了效率高,易于扩展和 维护的理论框架关键词: WWW; 数据库管理系统; CGI; JDBC; 体系结构General Web Database System ArchitectureWangleiABSTRACT :The necessity of fusion of Web technology and database technology is summarized. The shortcomings of traditional Web database system architecture(WDSA) are analyzed in detail.The new common WDSA based component technology and distributed object technology is presented .It provides high efficient, easy to scalable and maintained theory frame for the study and development of WDS.KEYWORDS :WWW; DBMS; CGI; JDBC; archtectureInternet 网是目前全球最大的计算机通信网,它遍及全球几乎所有的国家与地区。
WWW(World Wide Web)系统是一个大型的分布式超媒体信息数据库,它极大地推动了Internet的发展,已经成为Internet 中最流行、最主要的信息服务方式它能够把各种类型的信息资源,如静态图象、文本、数据、视频和音频有机地结合起来,使用户能够在Internet 上浏览、查询和共享建立在WWW 服务器所有站点上的超媒体信息目前Web 技术与数据库管理系统(DBMS)相互融合领域的研究已成为热点方向之一,数据库厂商和Web 公司也纷纷推出各自的产品和中间件支持Web 技术和DBMS的融合,将两者取长补短,发挥各自的优势,使用户可以在Web 浏览器上方便地检索数据库的内容所谓Web 数据库管理系统(或DBMSWeb)是指基于Web 模式的DBMS的信息服务,充分发挥DBMS高效的数据存储和管理能力,以Web 这种浏览器/服务器(B/S)模式为平台,将客户端融入统一的Web 浏览器,为Internet 用户提供使用简便、内容丰富的服务Web 数据库管理系统必将成为Internet 和Intranet 提供的核心服务1 传统的Web 数据库系统体系结构传统的WDSA 如图1 所示。
一般实现Web 数据库系统的连接和应用可采取两种方法,一种是在Web 服务器端提供中间件来连接Web 服务器和数据库服务器,另一种是把应用程序下载到客户端并在客户端直接访问数据库中间件负责管理Web 服务器和数据库服务器之间的通信并提供应用程序服务,它能够直接调用外部程序或脚本代码来访问数据库,因此可以提供与数据库相关的动态HTML页面,或执行用户查询,并将查询结果格式化成HTML页面,通过Web 服务器返回给Web 浏览器最基本的中间件技术有通用网关接口CGI(Common Gateway Interface)和应用程序接口(API)两种1.1 基于通用网关接口CGI 的体系结构传统的DBMS Web 结构如图1 所示,用户通过Web 浏览器输入查询信息,浏览器通过HTTP(Hypertext Transfer Protocol)协议向Web 服务器发出带有查询信息的请求,Web 服务器按照CGI 协议激活外部CGI 程序,由该程序向DBMS发出SQL请求并将结果转化为HTML(Hypertext Makeup Language)后返回给Web 服务器再由Web 服务器返回给Web 浏览器。
这种结构体现了客户/服务器方式的三层模型(three tiered C/S),其中Web 服务器和CGI 程序实际起到HTML与SQL 转换的网关的作用CGI 的典型操作过程是:分析CGI数据;打开与DBMS的连接;发送SQL请求并得到结果;将结果转化为HTML;关闭DBMS的连接;将HTML 结果返回给Web 服务器基于 Web 的数据库访问利用已有的信息资源和服务器其访问频率大,尤其是热点数据但传统的Web 数据库体系结构中的CGI 程序主要的缺点是:①客户端与后端数据库服务器通信必须通过Web 服务器,且Web 服务器要进行数据与HTML文档的互相转换,当多个用户同时发出请求时,必然在Web 服务器形成信息查询和发布瓶颈②CGI 应用程序每次运行都需打开和关闭数据库连接,效率低,操作费时;③CGI 应用程序不能由多个客户机请求共享,即使新请求到来时CGI 程序正在运行,也会启动另一个CGI 应用程序,随着并行请求的数量增多,服务器上将生成越来越多的进程为每个请求都生成进程既费时由需要大量内存,影响了资源的使用效率,导致性能降低并增加等待时间;④由于SQL与HTML差异很大,CGI 程序中的转换代码编写繁琐,维护困难;⑤安全性差,缺少用户访问控制,对数据库难以设置安全访问权限;⑥HTTP 协议是无状态( stateless)且没有常连接的协议,DBMS事务的提交与否无法得到验证,不能构造Web 上的OLTP应用。
图 1基于服务器扩展API 的体系结构1.2 基于服务器扩展API 的体系结构为了克服CGI 的局限性,出现了另一种中间件解决方案是基于服务器扩展API 的结构,如图1 所示与CGI 相比,API 应用程序与 Web 服务器结合的更加紧密,占用的系统资源也少得多,而运行效率却大大提高,同时还提供更好的保护和安全性Microsoft 的ISAPI、Netscape 的NSAPI、Sybase 的Web.sql,IBM的DB2WWW 都是这种中间件的解决方案,这些API 可以提供更优异的性能,从而使开发人员开发出复杂的应用程序本文以微软提供的 ISAPI 为例说明基于服务器扩展API 的结构的工作过程微软的Web 服务器产品是Internet InformationServer(IIS),它提供了ISAPI(Inernet Server API)作为扩展Web 服务器功能的编程接口;同时提供了一个Internet 数据库连接器(IDC),可以实现数据库的查询和更新Microsoft 提供的开放的ISAPI,通过编写ISAPI 应用程序(ISA )来扩展IIS的功能IIS 和ISA 之间通过一个称为Extension_Control_Block(ECB)的结构来进行通信。
当IIS 调用ISA 时,它首先调用GetExtensionVersion 来获取有关信息;对于每一个客户端的请求,IIS 通过ECB 传给ISA , 并调用HttpExtensionProc 来响应要实现Web 数据库的应用,需要使用ODBC 技术,在ISA 的响应数中通过ODBC 来完成对数据库的查询,并将查询结果格式化成HTML 页面,通过Web 服务器返回客户IDC 的功能在于使用两类文件IDC 脚本文件(.idc)和HTML 扩展文件(.htx)来控制如何访问数据库和构造Web 页面ISAPI 和IDC 工作原理如图2 所示图 2 ISAPI 和 IDC工作原理虽然基于服务器扩展API 的结构可以方便、灵活地实现各种功能,连接所有支持32 位ODBC 的数据库系统,但这种结构的缺陷也是明显的:①各种API 之间兼容性很差,缺乏统一的标准来管理这些接口;②开发API 应用程序也要比开发CGI 应用复杂得多;③这些API只能工作在专用Web 服务器和操作系统上如ISAPI 只支持Windows NT/95 平台和IIS 及与之兼容的Web 服务器1.3 基于JDBC 的Web 数据库结构通过Web 浏览器把应用下载到客户端运行,在客户端直接访问数据库。
在这种方式中客户端应用包括:Java Applet、ActiveX、Plug-in 等,其中最典型的就是Java Applet采用JDBC(Java Database Connectivity)技术,在Java Applet 中访问数据库的优点在于:直接访问数据库,不再需要Web 数据库的介入,从而避开了CGI 方法的一些局限性;用户访问控制可以由数据库服务器本地的安全机制来解决,提高了安全性;JDBC 是支持基本SQL 功能的一个通用低层的应用程序接口,在不同的数据库功能的层次上提供了一个统一的用户界面,为跨平台跨数据库系统进行直接的Web 访问提供了方案从而克服了API 方法一些缺陷;同时,可以方便地实现与用户的交互,提供丰富的图形功能和声音、视频等多媒体信息功能其结构如图3 所示图 3 基于JDBC的web数据库结构JDBC 是用于执行SQL 语句的Java 应用程序接口API,是由Java 语言编写的类和接口组成Java 是一种面向对象、多线程与平台无关的编程语言,具有极强的可移植性、安全性和强健性JDBC 是一种规范,能为开发者提供标准的数据库访问类和接口,能够方便地向任何关系数据库发送SQL 语句,同时JDBC 是一个支持基本SQL 功能的低层应用程序接口,但实际上也支持高层的数据库访问工具及API。
所有这些工作都建立在X/Open SQL CLI(调用层接口)基础上JDBC 的主要任务是定义一个自然的Java 接口来与X/Open CLI 中定义的抽象层和概念连接JDBC 的两种主要接口分别面向应用程序的开发人员的JDBC API 和面向驱动程序低层的JDBC Driver API,其中JSBC 驱动程序又分为四类:JDBC-ODBC BridgeDriver、Native API(Partly Java driver)、JDBC/Net(Pure Java driver)、Native(PureJava driver),通过这四类驱动程序实现对多种数据库系统的访问JDBC 完成的三项工作是:建立与数据库的连接;发送SQL 语句;返回数据结果给Web 浏览器基于JDBC 的Web 数据库结构其缺陷在于:只能进行简单的数据库查询等操作,还不能进行OLTP;安全性、缓冲机制和连接管理仍不完善;Sun 承诺的完全跨平台跨数据库系统的功能和标准远未实现2 一种通用的Web 数据库系统体系结构基于Web 的应用的最佳体系结构不能仅是已有的事务型应用或基于页面的Web 站点的扩展,而应是两者最优秀部分的结合。
基于Web 的应用利用传统应用的事务性中间逻辑层和数据库访问,同时利用Web 服务器/浏览器连接模式以访问Web 客户为了使Web 模式和数据库系统能够紧密结合,以满足OLTP、OLAP 和数据仓库及挖掘的企业级服务的目标,Sybase 公司和Informix 公司分别提出了适应下一代Web 数据库系统的体系结构:ACA[1]和IUWA[2]我们在分析和总结这两种结构以及传统Web 数据库系统体系结构优点和不足的基础上,提出了一个新一代通用Web 数据库系统体系结构如图4 所示图 4 通用web数据库体系结构2.1 定义在通用Web 数据库系统体系结构下定义如下概念:(1)组件(Component):是完成某一功能的可重用的软件代码组件可用分布对象国际标准来封装,如Microsoft 的ActiveX , OMG 的CORBA 以及Sun 的JavaBean 等并通过DCOM、IIOP 和RMI组件通信协议分别访问相应的ActiveX。












