Linux系统中基于动态PL/SQL数据库研究开发

(整期优先)网络出版时间:2019-03-26
/ 2
摘 要 本文结合“Linux+数据库”的开发模式,引入动态PL/SQL高级数据库程序设计语言,提出了基于动态PL/SQL的数据库开发的两种模式,对动态PL/SQL数据库服务器进行了设计,并给出了客户端与数据库服务器的连接方式。这种基于动态PL/SQL数据库具有良好的安全性和跨平台效果。

关键字 PL/SQL;Linux;数据库


1 引言

Linux是一种符合POSIX标准、包含全部UNIX特性的操作系统。它具有多任务、多用户、设备独立、自由代码和自由软件等特点[1]。Linux最具代表性的应用是与数据库结合。随着数据库技术的普遍应用和Linux操作系统的不断成熟,很多企业和网站使用了“Linux+数据库”的模式。Linux与数据库的结合已成为一种不可逆转的趋势。

PL/SQL是一种高级数据库程序设计语言,该语言专用于在各种环境下对Oracle数据库进行访问[2]。它将第四代语言(SQL)的强大功能和灵活性与第三代语言(C++, Java)的过程结构的优势融为一体。从该语言的名称可以看出,PL/SQL是在SQL语言中扩充了面向过程语言中使用的程序结构,如:变量和类型、控制语句、过程和函数、对象类型和方法。PL/SQL语言实现了过程结构与SQL的无缝集成,从而为用户提供一种功能强大的结构化程序设计语言。

动态PL/SQL语句限制更少,许多必须要在编译时知道的事情在运行时刻之前可以不确定。需要的话,可以将整个SQL语句等到运行时刻再确定。

2 应用模式

一般的数据库应用程序分为三个部分:用户界面、应用逻辑和数据库。为了编译并运行一个PL/SQL快,程序员必须将该块提交给PL/SQL引擎来处理。借助于Oracle公司和其它开发商提供的开发工具,PL/SQL可以用于应用程序的各个层次。

2.1 两层模式

两层模式,即客户端/服务器模式,是传统的应用程序设计模式。在这种模式中,应用程序由客户端和服务器端两部分组成。客户端负责处理用户界面,而服务器端管理数据库。通常,PL/SQL引擎驻留在服务器端,在个别情况下,PL/SQL引擎也可以驻留在客户端。

1)服务器端的PL/SQL

从Oracle6.0版开始,PL/SQL引擎就驻留在数据库服务器端,这也是PL/SQL引擎的默认位置。由于数据库服务器可以处理SQL语言,所以SQL语句和PL/SQL块都可以送到该服务器进行处理。一个客户应用程序,不管是用Oracle开发工具实现或使用其它开发工具编制的,都可以向数据库服务器提交SQL语句和PL/SQL块。PL/SQL块和SQL语句通过网络送往服务器。一旦服务器收到了这些内容,SQL语句将直接进服务器内含的SQL语句执行器,而PL/SQL块则送往PL/SQL引擎进行语法分析。

在PL/SQL块运行期间,PL/SQL引擎负责执行过程语句(如赋值语句和存储过程调用等)。对于该块中出现的SQL语句(如Select语句等),PL/SQL引擎讲它们送往SQL语句执行器执行。

2)客户端的PL/SQL

除了位于服务器端的PL/SQL引擎外,几种Oracle开发工具也带有PL/SQL引擎。由于这些开发工具是运行在客户端的,所以它们的PL/SQL引擎也运行在客户端。借助于客户端的PL/SQL支持,PL/SQL块中的过程语句就可以在本地运行,而没有必要送到服务器端。如Oracle Forms应用程序包括了触发器和过程,这些语句都在客户端执行,只需将SQL语句和调用服务器端存储于程序的语句发往服务器进行处理。客户端的PL/SQL引擎可以处理过程语句。

与服务器端的PL/SQL一样,应用程序提交的单独的SQL语句直接通过网络送往服务器端的SQL语句执行器。不同的是,PL/SQL块是在客户端直接处理的。任何过程语句的处理都不会引起网络传输。PL/SQL块中的SQL语句要提交给SQL语句执行器,对服务器端的存储子程序的调用则送到服务器端的PL/SQL引擎执行。

2.2 三层模式

在三层模式中,用户界面、应用逻辑和数据库是三个独立的部分。该模式下的客户是典型的廋客户类型,如浏览器一类的客户软件。应用层逻辑全部位于成为应用服务器的独立层中,在这种环境下,PL/SQL引擎通常只放置在服务器中。

3 在Linux中基于PL/SQL数据库服务器设计

在Linux中,设计两层的应用模式,即服务器端和客户端,结构如图1所示。客户端的主要作用就是与数据库服务器建立连接,进行数据的查询、修改和输入等;Web服务器主要提供网络的相关功能;数据库服务器主要用来对客户端的请求进行相应并进行数据库的日常维护。

1435108700.jpg

图1 双层结构

3.1 工作流程

整个双层结构的工作流程如下:

(1)建立与数据库服务器的连接。包括适当使用服务器认识的用户名和口令来对连接进行身份认证。建立了连接后,服务器选中要使用的特定数据库。

(2)与数据库进行交互操作。其主要目的是运行常规SQL命令,包括添加和删除表,以及向它们添加记录;也可以对返回结果的数据库进行查询。

(3)返回客户端的查询结果。

(4)关闭客户端与服务器的连接。

3.2 数据库的安全性

建立数据库后,还必须建立和维护数据库系统的安全性,这对网络应用是非常必要的,为了保证网络数据库的安全,采取了下面一些方法。

(1)用户控制。Oracle数据库安全性的核心是数据库用户的帐号。在访问数据库的任何对象之前,用户首先必须用一个有效的帐号和密码连接到该数据库。

(2)用户权限。在创建Oracle用户后,如果该用户不能创建自己的数据库对象或者访问其它Oracle用户拥有的对象,那将是没有意义的。Oracle定义了两种类型的权限:系统权限和对象权限,用于控制Oracle用户可进行的操作。

(3)角色。角色是一组系统级权限和对象级权限的集合[3]。这些权限被组合在一起,并被赋予一个名字,从而使得它们的授权和收回更加简单。一旦Oracle用户被授予某个角色,它将自动继承该角色的所有权限。

(4)配置文件。配置文件可以限制一个Oracle用户使用的资源,限制一个单独的调用或整个会话所需要的资源。如果超过了调用级配置文件的限制,该语句就会失败;如果超过了会话级配置文件的限制,整个会话就会退出,当前没有完成的事务会自动回滚。

4 客户端与数据库服务器的连接

在SQL*Plus下输入SQL或PL/SQL命令之前,必须先实现与数据库服务器的连接。一般有两种常用连接方法:

(1)在SQL*Plus命令行输入用户标识和口令,或输入连接字符串。

(2)进入SQL*Plus后使用CONNECT语句。

整个连接方案如图2所示。

1435101836.jpg

用户通过网页提交操作请求,Web服务器收到后,进行请求的解析并进行信息的打包,通过TCP/IP协议发送到远方的数据库;在数据库服务器端,接收Web服务器的请求,然后根据不同的请求对本机上的数据库进行不同的操作,最后将结果通过TCP/IP送回到Web服务器。Web服务器接收到返回的结果,对结果进行解包,进行结果的解析并实现在网页上。

5 结束语

随着数据库技术的发展和Linux系统的不断成熟,“Linux+数据库”的模式的应用越来越广泛。本文提出的基于动态PL/SQL的数据库开发具有实现简单,功能强大,安全可靠和跨平台等优点,适合于规模不太大的数据库。

参考文献

[1] Petersen P. Liux Complete Reference(The Third Edition)[M]. McGraw-hill,1999.

[2] 孙功星,戴贵亮等. Linux集群环境下面向对象数据库的性能及其仿真研究[J].核电子学与探测技术.2003,23(6).

[3] 张炯明.安全电子商务实用技术[M].北京:清华大学出版社. 2002.