1.4 Web数据库技术
在众多的计算机应用中,数据库应用占有重要的地位。随着Internet技术的飞速发展,基于Web交互界面的数据库应用需求大量涌现。越来越多的Web站点建立在数据库的基础上,很难想象没有数据库支持的BBS、新闻网站、电子商务是如何实现的,数据库应用始终是动态网页的焦点应用。
1.4.1 Web数据库访问技术
通过Web页面访问数据库与传统的应用程序访问数据库在访问机制上有很大的不同,Web技术借助于浏览器、Web服务器和数据库之间良好的交互性,使得用户能够在异构网络环境中获得高效的Web数据库系统的链接和应用。Web数据库系统的链接和应用一般可采取两种方法。
第一,在Web服务器端提供中间件来链接Web服务器和数据库服务器。中间件起着管理Web服务器和数据库服务器之间的通信并提供应用程序服务的作用,能够在复杂的异构网络环境下直接调用外部程序或脚本代码来访问数据库。
第二,把应用程序下载到客户端并在客户端直接访问数据库。两种链接数据库的访问方式分别基于服务器和客户端的数据库访问机制。以下将从服务器端和客户端两个方面来阐述Web数据库的访问原理。
(1)基于Web服务器中间件访问数据库。
基于Web服务器中间件访问数据库是指用户通过Web服务器与数据库之间的交互性关系进行访问的B/S模式,和传统的Client/Server模式相似,是一种数据库三层结构,但Web服务器是在这两层之间引入了自己特性的中间层,即引入了中间件技术。
B/S结构模式中的中间件起着负责管理Web服务器和数据库之间的通信并提供相应的服务的作用。它驻留在Web服务器上,能够调用外部应用扩展程序或动态链接库(DLL)实现Web服务器与数据库间通信。它们可以依据Web服务器为用户查询所提出的请求对数据库进行查询和操作,并且把操作结果以超文本的形式输出,然后由Web服务器响应请求将此页面返回到Web浏览器,从而实现把数据库信息提供给用户的Web服务。最基本的中间件技术引用主要有公共网关接口CGI和应用程序编程接口API两种。如CGI网关接口的体系结构在WindowsNT中的HTTPODBC.DLL动态链接库。其IDC文件是用户的查询请求,HTX模板文件是用户为查询结果指定的HTML页面格式。
基于Web服务器中间件访问数据库的最明显优点是极易获得实现,用户可以轻松地使用浏览器访问,实际上已间接高效地使用了数据库。同时在功能上也极易得到扩展和提高。用户在Web页面上交互式地提交查询表,即可通过Web进行异地数据库存取,并在浏览器上显示结果。但是在Web服务器和数据库服务器中加入中间件会消耗客户服务器的性能,当中间件为CGI时,每次访问都需要重新启动一个CGI程序实例,它以进程形式运行,占用较多的资源,效率降低,结构性地影响了连续事务处理。
(2)基于客户端直接访问数据库。
基于客户端直接访问数据库技术,是指可以通过Web浏览器把程序下载到客户端运行,并在客户端直接访问数据库。从逻辑结构上来说,减少了中间件这一层,由客户端脚本技术控制和管理数据库,不仅可提高数据库的访问速度,还能充分利用浏览器的特性。把应用小程序下载到客户端运行,其中最典型的有JavaApplet。当客户端访问数据库时,在Web服务器将页面发送给浏览器之后,应用程序不再需要通过对服务器更多的请求来管理数据库访问,减少了后续的浏览器与服务器之间的往返次数。这是客户端直接访问数据库的最大优点,另外,因客户端缓存了记录集,数据库的操作不再需要重新产生记录集,往返传输。同时使用批处理的更新方式提高了效率。总之,这种方式能提高数据库访问速度,尤其适用于要求快速传输的应用场合。
与传统数据库应用系统的开发不同,Web数据库系统不能仅依靠某个DBMS实现整个应用系统,它是通过其他Web应用程序,用标准化的HTML语言及其某些特定的扩展功能开发的、特殊形式的访问数据库的应用程序系统。实际上在Internet环境下,不仅仅是数据库应用系统,其他应用系统的开发也不能单纯用一种语言环境来实现。一个Web应用系统一般采用Browser/WebServer/ApplicationServer模式实现,因而,对于应用系统来说,Web程序设计语言、应用服务器平台以及二者之间的接口技术是必不可少的。就数据库应用系统来说,应用服务器就是数据库服务器,因而Web访问数据库的关键是与数据库服务器间的接口。通常的数据库接口技术有CGI, JDBC和ODBC等。例如微软的ASP技术提供执行于服务器端的脚本模型,使开发者可以用多种脚本语言如Vb-Script、JavaScript、Perl等编写应用程序,通过对服务器端的组件ADO(ActiveXData Ob-ject)对象的调用就能实现数据库的访问,从而极大地简化了Web应用开发。因而接口技术包括中间件接口技术是Web数据库访问的关键技术。
Web数据库访问技术的分类是当今Web技术研究中的热点。从提高数据库访问效率和速度角度出发来归纳和分类,Web数据库访问技术大致可以分为两大类。
(1)以Web服务器作为中介,利用中间件技术把浏览器和数据源链接起来,在服务器端执行对数据库的操作。
(2)把应用程序和数据库下载到客户端并在客户端直接访问数据库。
随着Web技术研究的深入发展和服务器端的脚本编程技术进步,用户能够选择最合适的Web编程技术来满足自己的需要。不管选用哪种技术,其实现的功能都是非常相似的采用中间件接口技术,都可以访问数据库,都可以存取系统文件,并且最终都能够生成动态的页面。目前有以下几种数据库访问技术:CGI技术,IDC技术,ISAPI技术,ADC技术,Perl技术,Java技术,ASP技术,PHP技术,JSP技术和ASP.NET技术等。
Web数据库指架构在网络环境中运用Web技术开发动态网站的数据库系统。具体地说,Web数据库就是用户用浏览器作为访问界面,输入所需的数据;浏览器将这些数据传给网站,网站对这些请求数据进行处理,例如对数据库中的数据进行查询,或者修改数据库中的数据;最后网站将执行的结果返回给客户端,通过浏览器显示给用户。这样一个Web数据库访问系统与我们传统的数据库系统工作原理是相同的,Web数据库是在网络异构环境中直接使用了传统数据库。目前比较流行的Web数据库系统主要有以下几个。
(1)SQL Server.
SQL Server是微软提供的运行在Windows操作平台上的数据库系统,操作简便,性能稍逊于Oracle,属于大型数据库。通常在使用ASP开发网站时使用SQL Server作为Web数据库。在数据量不太大的小型应用中有时也用Access来代替。
(2)Oracle.
Oracle数据库系统由Oracle公司开发,几乎可以运行于当今所有的操作系统平台上。其功能强大、查询快速并且拥有极高的稳定性,可与各种网站开发语言结合使用。目前比较流行和Java结合开发。
(3)My SQL.
由瑞典TC3.X公司开发的My SQL是强大、快速而又价格低廉的小型数据库系统,既可以运行在Windows平台上,也可运行在Linux平台上。在使用PHP开发网站时结合使用My SQL已经成为目前网站开发的一种经典组合。
Web开发通常基于浏览器/服务器(Browse/Server)B/S构架。这种构架客户端采用浏览器提供用户界面,风格统一,对客户端要求低;服务器使用Web服务器,提供基于Web的动态网页,集中管理,开发灵活。通常的应用往往需要访问数据库,为减少服务器的负担,将Web服务器和数据库服务器分离,从而产生了三层结构。其中,客户端使用浏览器向Web服务器发送请求,Web服务器和数据库服务器通常在一个局域网内,Web服务器链接数据库服务器,在数据库服务器存取数据,然后形成网页,返回给客户端。这种结构有以下优点:
①集中式管理,便于系统的修改和维护;
②集中式计算,减少了对客户端的要求;
③分布式的资源共享,有利于提高系统性能和开发效率;
④更便捷的安全管理,这种结构只有Web服务器才可以访问数据库上的敏感数据,使安全管理更灵活可靠。
和使用普通的关系型数据库一样,Web数据库需要对数据库进行日常的管理和维护,包括建库、索引维护、用户管理、视图维护、数据备份和恢复、数据的迁移以及网络接口管理等。管理员可以使用命令行方式,通过输入命令语句完成相应的操作。也可以在图形方式下更方便地完成相应的管理工作。命令行方式的命令语句兼容标准的SQL语句。图形工具是数据库产品自带的,不同的产品各有不同。对于Web开发人员来说,除了需要掌握数据库的日常管理方法、完成数据库的维护外,还需要了解如何查询数据库中的数据,完成数据的发布。由于关系型数据库不是针对Internet设计的,因此通过Web链接数据库需要中间件接口技术,通常需要采用中间接口。常用的包括ODBC(Open DataBase Connectivity,开放数据库链接),JDBC(Java DataBase Connectivity, Java数据库链接),和OLE DB(Object Linking and Embedding DateBase,数据库链接和嵌入对象)等。
1.4.2 Web数据库语言简介
Web数据库语言指采用流行的SQL语言作为编程语言。SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL已成为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。
目前,绝大多数流行的关系型数据库管理系统,如Oracle、Sybase、Microsoft SQL Server、Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。
使用SQL,我们可以执行从一个简单的表查询,创建表和存储过程,设定用户权限等任何功能。可执行的SQL语句的种类很多。我们将重点介绍表1.4.1所列的最重要的5条SQL语句:SELECT、INSERT、UPDATE、DELETE、CREATE和DROP。我们将结合下面的实例了解其功能,应用这些命令。阐述如何从数据库中查询、更新和获取数据。
表1.4.1 重要的SQL语句
SELECT语句语法说明如表1.4.2所示。
表1.4.2 SELECT语句的组件
(1)一个简单的SELECT语句描述如下:
这个简单的查询语句得出的内容为authors表中返回的选定列的数据。在同样的检索情况下,如果想缩小范围,比如只想知道住在福州鼓楼地区(邮编为350002)的作者的名字,我们可以接着看添加WHERE子句的例子。
(2)添加WHERE子句。
在检索表行时,WHERE子句可以使用多个列作为约束内容,当然在检索约束内容中还可以加入通过AND、OR以实现多个约束。另外,在SELECT语句中还可以通过更改比较操作符来改变约束的条件,以达到我们需要的检索目的。再看以下完整约束查询例子。
(3)完整约束查询。
这个例子使用表1.4.3约束查询结果返回的是住在福州鼓楼地区以外(邮编号不为350002)且电话号码为12345678901的作者的资料。
表1.4.3 SELECT语句中支持的比较操作符
(4)添加ORDER BY子句。
添加ORDER BY这条SQL语句后,将对id列进行升序排序。
INSERT语句语法说明如表1.4.4所示。
表1.4.4 INSERT语句的组件
下面所示是一个简单的INSERT语句:
以上语句向表中加入了一条记录。我们也可以指明用哪几列来填充,看下面的例子:
通过上面两个例子的方法,我们就可以往数据库中添加数据,需要注意的是,我们插入值(包含在VALUES部分中的)要按照INSERT INTO部分中指明的列的顺序,或是在未指明的条件下按照数据库原始各列的顺序。
UPDATE语句语法说明如表1.4.5所示。
表1.4.5 UPDATE语句的组件
将列设定为确定值:
通过这个语句我们可以把数据库中id为FZ4567的条记录的zip列的值改为350003。这时如果无法给出确定的值,比如要给id为FZ1234的那位作者加薪100元,则可以这样改写SQL语句(基于已有的值来设置新的列值):
这样,即使不知道authors表中的salary列值,也可以用一条简单的UPDATE语句成功地把薪水增加100元。
DELETE语句语法说明如表1.4.6所示。
表1.4.6 DELETE语句的组件
DELETE语句使用格式如下:
这条语句的执行结果是删除authors表中的所有行。
若要删除一个表中的指定的行可使用下列语句:
这条语句的执行结果是删除表authors中id为FZ1234的行。
SQL语言中的create table语句被用来建立新的数据库表格。create table语句的使用格式如下:
如果用户希望在建立新表格时规定列的限制条件,可以使用可选的条件选项:
举例如下:
简单来说,创建新表格时,在关键词create table后面加入所要建立的表格的名称,然后在括号内顺次设定各列的名称、数据类型以及可选的限制条件等。注意,所有的SQL语句在结尾处都要使用“;”符号。
DROP语句是针对所指定的表格或字段加以删除,或是把索引删除。DROP语句使用格式如下:
语句中参数解释如下:
Table:欲删除的表格或索引依附的表格名称。
Index:欲从表格中删除的索引名称。
例如:从职员表格中,删除编号索引。
例如:从数据库中,删除整个表格。
在前文我们介绍了最常用的SQL语句的基本方法,但这只是SQL语句的一部分,其他的SQL语句读者可以参考一些专门的SQL语法资料,以便更好地应用数据库,更加有效地完成工作。
1.4.3 ODBC/JDBC数据库编程接口
1.ODBC
ODBC(Open Database Connectivity)是一个数据库编程接口,由微软建议并开发。ODBC允许程序使用结构化查询语言(SQL)作为数据访问标准,应用程序可通过调用ODBC的接口函数访问来自不同数据库管理系统的数据。对于应用程序来讲ODBC屏蔽了异种数据库之间的差异。Web也是一类应用,和其他应用程序一样可以通过ODBC实现对数据库的访问。
2.JDBC
JDBC与ODBC一样是支持基本SQL功能的一个通用低层的应用程序编程接口(API),它在不同的数据库功能模块层次上提供了一个统一的用户界面,只不过由于ODBC提供的是C接口,而JDBC提供了一个Java语言的API,这使得独立于DBMS的Java应用程序的开发成为可能,同时也提供了多样化的数据库链接方式。
1.4.4 SQL Server 2000数据库服务器安装与配置
SQL Server 2000是微软SQL Server系列产品中功能强大的版本,它的出现使得SQL Server跻身高端数据库产品的行列。SQL Server 2000是在SQL Server 7.0的基础上对性能、可靠性以及易用性等方面进行了扩展,使其成为针对电子商务、数据仓库和在线商务解决方案的卓越的数据库平台。是目前中小企业应用最广泛的服务器。
SQL Server 2000数据库是基于结构化查询语言(SQL)的可伸缩的关系型数据库,它的引擎动态调节自身以获取或释放适当的计算机资源,并支持不断变化的用户负荷的需求。SQL Server 2000包括了数据库构架、关系数据库引擎构架、管理构架、复制构架和应用程序开发构架各部分。同时还集成了XML(Extensible Markup Language,可扩展标记语言)的支持。
启动SQL Server安装盘以后,进入安装目录,双击Setup.exe文件,进入安装界面,如图1.4.1所示。
图1.4.1 启动界面
如果是Windows 2000或者Windows XP操作系统,则直接单击“安装SQL Server 2000组件”进行安装,如果是Windows 98,则有可能需要先安装“安装SQL Server 2000先决条件”。下面采用Windows XP操作系统为例,所以直接单击第一项安装,进入安装组件界面,如图1.4.2所示。
图1.4.2 安装组件界面
在图1.4.2中,单击“安装数据库服务器”(其他两个选项一般不用),进入安装向导界面,直接单击“下一步”按钮,进入选择安装计算机界面,主要是让用户选择计算机,通常是默认安装在本地计算机上,“远程计算机”是将数据库安装在另外一台计算机上,不过很少使用。单击“下一步”按钮,弹出如图1.4.3所示的对话框。
图1.4.3 安装组件界面
图1.4.3让用户选择创建一个新的SQL Server实例,默认选择是第一项,而“高级选项”则是设定安装程序,使得安装在无人看守的情况下也能够继续,一般不鼓励使用这种方式。这里不改变选择,直接单击“下一步”按钮,输入一些用户的基本信息,单击“下一步”按钮,弹出软件许可协议对话框。单击“是”按钮进入下一步,如图1.4.4所示。
图1.4.4 选择安装定义
在图1.4.4中,选择安装的方式。因为是要安装数据库服务器,所以选择第二项“服务器和客户端工具”,单击“下一步”按钮,选择创建的数据库实例名,一般不推荐改变,即选择默认值;单击“下一步”按钮,选择安装类型,建议选择“典型”安装。然后要选择安装的路径,通常为了管理方便,可以为“程序文件和数据文件”设置相同路径。假设设置的路径都为“d:\microsoft sqlserver”,进入“服务账户”界面,选择登录数据库的账户设置,如果有域管理,则可以“使用域用户账户”;建议选择“使用本地系统账户”,本实例选择“使用本地系统账户”;单击“下一步”按钮,进入“身份验证模式”对话框,身份验证模式有两种,一种是依靠Windows系统的身份验证模式,另一种是混合模式,即Windows身份验证和SQL Server身份验证同时进行,默认的用户名是sa,即系统管理员身份。推荐使用混合模式,可以在下面文本框中输入密码,但为了演示方便,本安装实例选择了“空密码”检查框(不鼓励读者使用,应输入密码)。然后单击“下一步”按钮,进入“开始文件复制对话框”,用户只需要单击“下一步”按钮即可进行数据库的安装,安装完毕后,显示出安装完毕对话框。单击“完成”按钮即可完成整个数据库的安装。
使用SQL Server时必须首先启动SQL Server服务。启动有多种方式,最简单的就是进入“开始”|“程序”|“Microsoft SQL Server”,单击“服务管理器”程序,用户如果要启动服务,只需要单击“开始/继续”按钮。启动以后,就可以看到一个带有一个绿色箭头的小图标出现在任务栏右侧的系统托盘处。如果为红色,则表示启动失败。
注意:不要轻易改变计算机的名称,否则很容易导致SQL Server服务器启动失败。
企业管理器是SQL Server 2000管理构架中最主要的部分,绝大多数的管理任务都可以在企业管理器中完成。企业管理器可以在一个界面下同时管理数个SQL Server,包括远程网络上的SQL Server。执行菜单“开始”|“程序Microsoft SQL Server”|“企业管理器”,运行企业管理器。
企业管理器用的是一个遵从微软管理控制台MMC的用户界面。MMC是用于服务器和网络管理应用程序(即管理单元)的公用控制台框架。它是一个工具,为在微软Win-dows网络中管理不同的服务器应用程序提供了公用界面。服务器应用程序提供一个称为MMC管理单元的组件,用以向MMC用户呈现一个用户界面来管理服务器应用程序。SQL Server企业管理器就是微软SQL Server 2000的MMC管理单元。
在企业管理器中创建数据库按如下步骤进行:
(1)启动企业管理器。单击界面,展开左侧的服务器,展开数据库选项。右击“数据库”,在弹出的快捷菜单中选择“新建数据库”,如图1.4.5所示。
(2)在弹出的“数据库属性”窗口中设置有关数据库参数。例如名称和文件等。
(3)设置完成后,单击“确定”按钮就可以完成数据库的创建工作。
图1.4.5 创建数据库