配色: 字号:
Web数据库系统(3)
2022-02-12 | 阅:  转:  |  分享 
  
Web数据库系统(3)

胡经国



、传统的Web数据库系统体系结构

一般实现Web数据库系统的连接和应用可采取两种方法

一种是在Web服务器端提供中间件来连接Web服务器和数据库服务器

另一种是把应用程序下载到客户端并在客户端直接访问数据库。

中间件负责管理Web服务器和数据库服务器之间的通信并提供应用程序服务它能够直接调用外部程序或脚本代码来访问数据库因此可以提供与数据库相关的动态HTML页面,或执行用户查询并将查询结果格式化成HTML页面通过Web服务器返回给Web浏览器。最基本的中间件技术有通网关接口CGI和应用程序接口API两种。基于网关接口CGI

CGICommonGatewayInterface,公共网关接口是Web服务器运行时外部程序的规范按照CGI编写的程序可以扩展服务器的功能,完成服务器本身不能完成的工作外部程序执行时间可以生成HTML文档,并将文档返回Web服务器。CGI应用程序能够与浏览器进行交互作用,还可以通过数据库的API与数据库服务器等外部数据源进行通信如一个CGI程序可以从数据库服务器中获取数据,然后格式化为HTML文档后发送给浏览器也可以将从浏览器获得的数据放到数据库中。几乎使用的服务器软件都支持CGI,开发人员可以使用任何一种Web服务器内置语言编写CGI其中包括流行的C、C++、VB和Delphi等。

从体系结构上看,用户通过Web浏览器输入查询信息,浏览器通过HTTP协议向Web服务器发出带有查询信息的请求Web服务器按照CGI协议激活外部CGI程序,由该程序向DBMS发出SQL请求并将结果转化为HTML后返回给Web服务器再由Web服务器返回给Web浏览器。这种结构体现了客户服务器式的三层其中Web服务器和CGI程序实际起到了HTML和SQL转换的网关的作用。CGI的典型操作过程是:分析CGI数据;打开与DBMS的连接;发送SQL请求并得到结果;将结果转化为HTML;关闭DBMS的连接;将HTML结果返回给Web服务器。

基于Web的数据库访问利用已有的信息资源和服务器。其访问频率大,尤其是热点数据。但其主要缺点是:客户端与后端数据库服务器通信必须通过Web服务器,且Web服务器要进行数据与HTML文档的互相转换当多个用户同时发出请求时,必然在Web服务器形成信息和发布瓶颈。CGI应用程序每次运行都需打开和关闭数据库连接,效率低,操作费时CGI应用程序不能由多个客户机请求共享,即使新请求到来时CGI程序正在运行,也会启动另一个CGI应用程序随着并行请求的数量增加,服务器上将生成越来越多的进程。若为每个请求都生成进程既费时又需要大量内存,影响了资源的使用效率,导致性能降低并增加等待时间由于SQL与HTML差异很大,CGI程序中的转换代码编写繁琐,维护困难安全性差,缺少用户访问控制,对数据库难以设置安全访问权限HTTP协议是无状态且没有常连接的协议,DBMS事务的提交与否无法得到验证,不能构造Web上的OLTPOn-LineTransactionProcessing,联机事务处理应用。基于服务器扩展的应用程序接口API

为了克服CGI的局限性,出现的另一种中间件解决方案是基于服务器扩展的应用程序接口API。与CGI相比,API应用程序与Web服务器结合得更加紧密,占用的系统资源也少得多,而运行效率却大大提高,同时还提供更好的保护和安全性。

服务器API一般作为一个DLL来提供,是驻留在Web服务器中的程序代码,其扩展Web服务器的功能与CGI相同。Web开发人员不仅可以API解决CGI可以解决的一切问题,而且能够进一步解决基于不同Web应用程序的特殊请求。各种API与其相应的Web服务器紧密结合,其初始开发目标服务器的运行性能进一步发掘、提高。用API开发的程序比用CGI开发的程序在性能上提高了很多但开发API程序比开发CGI程序要复杂得多。API应用程序需要一些编程方面的专门知识,如多线程、进程同步、直接协议编程以及错误处理等。目前主要的WebAPI有Microsoft公司的ISAPI、Netscape公司的NSAPI和OReily公司的WSAPI等。使用ISPAI开发的程序性能要优于用CGI开发的程序这主要是因为ISAPI应用程序是一些与Web服务器软件处于同一地址空间的DLL因此所有的HTTP服务器进程能够直接利用各种资源这显然比调用不在同一地址空间的CGI程序语句要占用更少的系统时间。而NSAPI同ISAPI一样,给Web开发人员定制了NetscapeWeb服务器基本服务的功能。开发人员利用NSAPI可以开发与Web服务器的接口,以及与数据库服务器等外部资源的接口。

虽然基于服务器扩展API可以方便、灵活地实现各种功能,连接所有支持32位ODBC的数据库系统,但这种结构的缺陷也是明显的:各种API之间兼容性很差,缺乏统一的标准来管理这些接口;开发API应用程序也要比开发CGI应用复杂得多;这些API只能工作在专用Web服务器和操作系统上。DLL

DLL(Dynamic?Link?Library,动态链接库。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。ODBC

ODBC(OpenDatabaseConnectivity,开放数据库互连)是微软公司开放服务结构(WindowsOpenServicesArchitectureWOSA)中有关数据库的一个组成部分它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。基于JDBC的Web数据库技术

Java的推出使Web页面有了活力和动感。Internet用户可以从Web服务器上下载Java小程序到本地浏览器运行。这些下载的Java小程序就像本地程序一样,可独立地访问本地和其他服务器资源。而最初的Java语言并没有数据库访问的功能随着应用的深入,要求Java提供数据库访问功能的呼声越来越高。为了防止出现对Java在数据库访问方面各不相同的扩展,JavaSoft公司指定了JDBC,作为Java语言的数据库访问API。JDBC

JDBC(JavaDataBaseConnectivityjava数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问它由一组用Java语言编写的类和接口组成。类是一种复杂的数据类型它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。这有点像C语言中的结构唯一不同的就是结构没有定义所说的数据相关的操作数据相关的操作就是我们平常经常看到的方法因此,类具有更高的抽象性类中的数据具有隐藏性,类还具有封装性。采用JDBC技术,在JavaAppletJava小程序中访问数据库的优点在于:

直接访问数据库,不再需要Web数据库的介入,从而避开了CGI方法的一些局限性;

用户访问控制可以由数据库服务器本地的安全机制来解决,提高了安全性;

JDBC是支持基本SQL功能的一个通用低层的应用程序接口,在不同的数据库功能的层次上提供了一个统一的用户界面,为跨平台跨数据库系统进行直接的Web访问提供了方案。从而克服了API方法一些缺陷;

同时,可以方便地实现与用户交互,提供丰富的图形功能和声音、视频等多媒体信息功能。

JDBC是用于执行SQL语句的Java应用程序接口API,由Java语言编写的类和接口组成。Java是一种面向对象、多线程与平台无关的编程语言,具有极强的可移植性、安全性和强健性。JDBC是一种规范,能为开发者提供标准的数据库访问类和接口,能够方便地向任何关系数据库发送SQL语句同时JDBC是一个支持基本SQL功能的低层应用程序接口,但实际上也支持高层的数据库访问工具及API。所有这些工作都建立在X/OpenSQLCLI调用级接口基础上。JDBC的主要任务是定义一个自然的Java接口来与X/OpenCLI中定义的抽象层和概念连接。JDBC的两种主要接口分别面向应用程序开发人员的JDBCAPI和面向驱动程序低层的JDBCDriverAPI。JDBC完成的工作是:建立与数据库的连接;发送SQL语句;返回数据结果给Web浏览器。

基于JDBC的Web数据库结构其缺陷在于:

只能进行简单的数据库查询等操作,还不能进行OLTP;

安全性、缓冲机制和连接管理仍不完善;

SUN承诺的完全跨平台跨数据库系统的功能和标准远未实现。X/OpenCLI

X/OpenCLI的主要目的,是通过允许数据库应用程序独立于任何一种数据库管理系统的编程接口,以增加数据库应用程序的可移植性。

链接:OLTP

OLTP(On-LineTransactionProcessing,联机事务处理系统也称为面向交易的处理系统其基本特征是顾客的原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果。几种Web数据库连接方式的比较

CGI API JDBC 编程复杂性 对程序员的要求 开发时间 可移植性 CPU的负载 如何将Web技术和DBMS相结合,研究和开发出具有OLTP功能的动态Web数据库系统已经成为目前Internet和数据库技术热点研究领域的交叉点。传统的Web数据库系统都有着自己不同的缺点唯有充分利用基于组件和分布式对象技术的优势将Web技术和DBMS紧密结合,开发出具有扩展性强、易于维护、效率高的特点,同时提供跨平台的操作性和能访问异构数据库系统的支持的Web连接体系结构及技术,才能真正实现Web数据库的灵活方便应用。多层结构

多层结构应用软件与传统的层结构应用软件相比,有可伸缩性好、可管理性强、安全性高、软件重用性好等诸多优点如何在Internet/Intranet环境下构建应用软件体系结构就成为一个非常重要的问题,也是现今软件体系研究的一个新热点。

目前各种技术层出不穷,如最初的静态HTML页面、简单的CGI网关程序、JavaApplet程序,现在的ASP等Web数据库技术,还有动态的Java在线游戏及PHP技术等。

实际上,多层的概念是由Sun公司提出来的。Sun公司提出的多层应用体系包括4层:客户层、顶端Web服务层、应用服务层和数据库层。

其中顶端Web服务层是Sun公司多层体系结构中非常重要的一层它主要起代理和缓存的作用。顶端Web服务器的作用是缓存本地各客户机经常使用的JavaApplet程序和静态数据,通常被放置在客户机所在的局域网内,起到一个JavaApplet主机(向Web浏览器传送JavaApplet程序的计算机)和访问其他服务的代理作用。与普通代理服务器的作用相同。

构建多层结构应用软件时,选用Java平台是一个很好的选择因为它跨越各应用平台。总之,在Java平台上构建多层应用软件体系代表着今后Internet/Intranet应用的趋势。

5







献花(0)
+1
(本文系胡经国图书...原创)