Web数据库中间件技术
曾晓金
(云南工业大学计算机应用重点实验室 昆明 650051)
摘要:介绍了Web数据库的几种中间件解决方案,并比较了它们的特色与不足,以及Web数据库出现的相应最新技术。
关键词:中间件 CGI ASP ISAPI NSAPI JDBC
随着Internet/Intrranet的兴起与发展,Web服务器与数据库服务器的连接显得越来越重要,许多厂家不断推出新技术、新产品,使得连接更加简洁、迅速和方便。Web与数据库连接技术已成为基于Web的信息管理系统的核心,为Internet上的电子商贸打下了基础。
一般来说,通过Web页实现对数据库访问的基本框图如图1,在整个系统中关键的技术是中间件的解决方案。
图1、Web页面访问数据库示意图
中间件负责管理Web服务器和数据库服务器之间的通信并提供应用程序服务。由于驻留在Web服务器上,因而中间件软件能够调用作为Web服务器和数据库服务器间"传输机制"的外部程序或"编码",并将执行查询等以HTML页面或纯文本的形式将信息返回给最终用户。数据库服务器负责管理驻留在数据库服务器中的数据。
一、现对当前几种流行的中间件的解决方案作一讨论。
1.通用网关技术(CGI)
CGI是一种Web站点上可以用来访问Web站点的用户交互的各种程序的标准,使用CGI脚本允许用户在浏览器中等服务器上的数据库交互,完成对数据库的各种操作。
几乎使用的服务器软件都支持CGI,开发者可以使用任何一种Web服务器内置语言编写CGI,包括Perl语言,C,C ,VB和Delphi等。
CGI的工作原理是浏览器通过Web页面的表单搜索参数,这些参数通过HTTP传递Web服务器,在服务器通过CGI脚本分析参数(命令行参数或环境变量),同时启动通路程序,把分析后的参数转化为SQL命令,交数据库服务器执行,然后CGI程序返回处理结果给Web服务器,最后向客户机返回HTML或纯文本格式的结果并断开连接。
CGI缺点是执行速度较慢,Web服务器每启动一个数据查询服务,就必须启动一个新的CGI进程,相对服务器资源代价比较高。
2.ASP(Active Server Pages)
ASP是一种开放的,可以将HTML脚本及可重用的Active Server组件结合在一起以建立高效的动态的基于Web的应用程序环境,利用ASP,可以增加运行在服务器端的脚本的新特性,如访问数据库。
ASP支持Active Server组件的使用,Active Server组件通过组件对象模型(COM)为ASP提供了可编程的界面,其中组件之一Active Data Object(ADO)提供了与数据库相连的机制。且使用ASP可以直接在HTML文件中包含可执行的脚本,HTML开发和脚本开发可以变为一个过程,而不象CGI、ISAPI以及其他方法一样,程序和HTML文件要求在不同的设计环境导致程序产生和修改困难。
3.应用编程接口(API)
鉴于CGI的一些缺陷,Microsoft和Netscape开发了专用的Web服务器中的程序代码(如动态链接库DLL),且一般与Web服务器软件处在内存的同一地址空间中,因此每次调用时是在内存中运行相应的程序段,而不是像CGI那样需要启动新的进程,因而效率要比CGI高得多。
API技术主要缺点是开发难度大,且可移植性差,开发出的应用程序只能在相应的Web服务器上运行,缺乏通用性。
为了减轻开发应用程序的困难,Netscape和Microsoft在其各自的服务器中提供了基于API的编程接口。Netscape提供了基于NSAPI的Livewire,它是专门设计的全面开发方案,开发人员可以开发和管理WWW界面、WWW网点,并且可以利用SQL语句或ODBC直接访问数据库。Microsoft则提供了基于ISAPI的IDC模块,它是IIS的一个动态连接库(httpodbc.dll),并通过ODBC访问各类数据库。
4.JDBC技术
Java是一种简单、面向对象、易传送、稳固安全、多线程执行控制及3D空间设计的语言,它为Internet注入了交互性。Java支持数据库的访问,是因为SUN公司提供了一种标准的SQL访问数据库的Java语言应用程序编程接口(JDBC)。构成Java语言的基础是一系列类库,而JDBC正是定义了Java与数据库之间的接口类库(Java.sql包),它是Java语言中执行SQL语句的API,它由一系列类和接口所组成,这些类和接口均是由Java语言写成的,通过它一个程序开发者可以在Java语言中建立与数据库的链接,执行SQL语句和处理SQL语句返回的结果。
采用JDBC很容易用SQL语句访问异构数据库,如通过JDBC API,只需编写一个JDBC API,就可以把SQL查询语句送往Sybase,Oracle或 Informix数据库,同时采用Java语言编写应用程序,具有平台无关性,不要为不同的平台编写不同的应用程序。
图2、JDBC技术工作示意图
采用JDBC技术其工作方式为:客户端首先访问Web服务器,下载Java字节码文件,并将Applet相关类的字节码文件和JDBC接口字节码文件下栽到客户端,然后与Web服务器脱离,接着Applet根据数据库地址,端口号和帐号与数据库服务器连接进行交互,这样用户与数据库服务器的交互是由浏览器直接完成的。由于JDBC技术的可操作性、可维护性和安全性及事务处理能力、使用效率都比较高,因此具有很大的优势。
Java与数据库的连接机制与CGI和API有所不同,在客户机上运行Java Applet通过JDBC技术可以绕过Web服务器直接和数据库服务器连接,并直接把带有结果的HTML页返回客户机浏览器。
象ODBC一样,JDBC提供给程序员的编程接口是由两部分组成,一是面向应用程序的编程接口JDBC API,它是为应用程序员提供的,二是供底层开发的驱动程序接口JDBC Driver API,它是各个商业数据库厂商提供的。目前,JDBC已经得到了许多厂商的支持,包括 Borland,IBM,Oracle和Sybase等公司,当前流行的大多数数据库系统都推出了自己的JDBC驱动程序。
二、结束语
数据库在Web上的应用无疑增强Web的功能和吸引力,我们可以采用不同的中间件解决方式把Web与数据库相集成,达到综合信息服务的目的。值得关注的是JDBC技术,JDBC作为新的联结Web服务器与数据库的桥梁,同时仍保留着Java本身许多引人注目的特性,大多数流行的数据库系统都已推出了自己的JDBC驱动程序,其主要的问题则是代码的执行效率问题,同时,还面临着微软公司的ActiveX的有力挑战。
参 考 文 献
1、[美]Jeffry Dwight等著 ,CGI开发使用手册,机械工业出版社
2、[美]Daniel J.Berlin,etal著,清华大学出版社
3、张世永编,数据库与WWW,复旦大学出版社
4、陈品德,基于Web的信息系统的开发,计算机工程(1998、3)
5、邵立兵,Sybase数据库与Web的互连,计算机工程(1998、3)
6、陈喃,Java的远程数据库访问模型及其实现,计算机系统应用(1998、9)
7、刘东等,基于WWW的数据库应用,计算机系统应用(1998,4)
8、罗东川,JAVA语言与DataBase 之间的接口--JDBC,计算机系统应用(1998,3)
9、罗娟等,Web 与数据库技术,计算机工程(1998,8)
10、谭郁松等,基于Web环境下的异构数据库连接技术的研究与实现,计算机工程(1998、8)

ACID属性包括原子性、一致性、隔离性和持久性,是数据库设计的基石。1.原子性确保事务要么完全成功,要么完全失败。2.一致性保证数据库在事务前后保持一致状态。3.隔离性确保事务之间互不干扰。4.持久性确保事务提交后数据永久保存。

MySQL既是数据库管理系统(DBMS),也与编程语言紧密相关。1)作为DBMS,MySQL用于存储、组织和检索数据,优化索引可提高查询性能。2)通过SQL与编程语言结合,嵌入在如Python中,使用ORM工具如SQLAlchemy可简化操作。3)性能优化包括索引、查询、缓存、分库分表和事务管理。

MySQL使用SQL命令管理数据。1.基本命令包括SELECT、INSERT、UPDATE和DELETE。2.高级用法涉及JOIN、子查询和聚合函数。3.常见错误有语法、逻辑和性能问题。4.优化技巧包括使用索引、避免SELECT*和使用LIMIT。

MySQL是一种高效的关系型数据库管理系统,适用于存储和管理数据。其优势包括高性能查询、灵活的事务处理和丰富的数据类型。实际应用中,MySQL常用于电商平台、社交网络和内容管理系统,但需注意性能优化、数据安全和扩展性。

SQL和MySQL的关系是标准语言与具体实现的关系。1.SQL是用于管理和操作关系数据库的标准语言,允许进行数据的增、删、改、查。2.MySQL是一个具体的数据库管理系统,使用SQL作为其操作语言,并提供高效的数据存储和管理。

InnoDB使用redologs和undologs确保数据一致性和可靠性。1.redologs记录数据页修改,确保崩溃恢复和事务持久性。2.undologs记录数据原始值,支持事务回滚和MVCC。

EXPLAIN命令的关键指标包括type、key、rows和Extra。1)type反映查询的访问类型,值越高效率越高,如const优于ALL。2)key显示使用的索引,NULL表示无索引。3)rows预估扫描行数,影响查询性能。4)Extra提供额外信息,如Usingfilesort提示需要优化。

Usingtemporary在MySQL查询中表示需要创建临时表,常见于使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通过优化索引和重写查询避免其出现,提升查询性能。具体来说,Usingtemporary出现在EXPLAIN输出中时,意味着MySQL需要创建临时表来处理查询。这通常发生在以下情况:1)使用DISTINCT或GROUPBY时进行去重或分组;2)ORDERBY包含非索引列时进行排序;3)使用复杂的子查询或联接操作。优化方法包括:1)为ORDERBY和GROUPB


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版
视觉化网页开发工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3汉化版
中文版,非常好用

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具