1.4 数据库管理系统

图1.1可知,数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件,是管理数据库的工具,是为数据库的建立、使用和维护而配置的软件,它建立在操作系统的基础上,用于实现对数据库统一的管理和控制。本节将对DBMS的构成和功能进行更为详细的阐述。

1.4.1 数据库管理系统的组成

DBMS的主要组成部分如图1-6所示。

图1-6 DBMS的主要组成部分

1.DBMS输入

图1-6的最上方所示为3种类型的DBMS输入。

(1)查询

对数据的查询有两种生成方式。一是通过通用的查询接口,如关系数据库管理系统允许用户输入SQL查询语句,然后将查询传给查询处理程序并给出回答;二是通过应用程序的接口,典型的DBMS允许程序员通过应用程序调用DBMS来查询数据库。

(2)更新

数据的插入、修改和删除等操作统称为更新。对数据的更新和对数据的查询一样,也可以通过通用接口或应用程序接口来提出。

(3)模式更新

数据库的模式,就是指数据的逻辑结构。模式更新命令一般只能由数据库管理员执行,例如,图书馆系统要求提供书籍的出版社编号时,就要在书籍关系中加入一个新的属性——出版社编号,这就是对模式的更新。

2.查询处理程序

查询处理程序(Query Processor)的功能是接收到一个操作的请求后,找到一个最优的执行方式,然后向存储管理程序发出命令,使其执行。存储管理程序的功能是从数据库中获得上层想要查询的数据并根据上层的更新请求更新相应的信息。由此可见,查询处理程序不仅负责查询,也负责发出更新数据或模式的请求。

如果现在想要查询书籍信息表(Book_Information)中,有哪些书籍是由北京的出版社出版的,那么一种可能的查询方案是先按Address(出版社地址)属性检索Press_Information表,找出所有地址在北京的元组,再用这些元组的PressName(出版社名称)信息去检索Book_Information表,从中找到出版社为之前检索出的结果的元组。

3.存储管理程序

在简单的数据库系统中,存储管理程序(Storage Manager)可能就是底层操作系统的文件系统;但有时为了提高效率,DBMS往往直接控制磁盘存储器。存储管理程序包括两个部分——文件管理程序和缓冲区管理程序。

文件管理程序可跟踪文件在磁盘上的位置并负责取出一个或几个数据块,数据块中含有缓冲区管理程序所要求的文件。磁盘通常被划分成一个个连续存储的数据块,每个数据块大小从4KB到16KB不等。

缓冲区管理程序控制着主存的使用。它通过文件管理系统从磁盘中取得数据块并选择主存的一个页面来存放它。如果有另一个数据块想要使用这个页面,就会把原来的数据块写回磁盘。事务管理程序发出请求时,缓冲区管理程序也会把数据块写回磁盘。

4.事务管理程序

事务管理程序(Transaction Manager)负责系统的完整性。它必须保证同时运行的若干个数据库操作不互相冲突,保证系统在出现故障时不丢失数据。事务管理程序需要和查询处理程序互相配合,因为它必须知道当前将要操作的数据,以免出现冲突。为了避免发生冲突,可能需要延迟某些操作。事务管理程序也需要和存储管理程序互相配合,因为数据库恢复一般需要一个日志文件,记录每一次数据的更新,这样,即使系统出现故障,也能有效而可靠地进行恢复。

1.4.2 数据库管理系统的功能

为实现对数据库的统一管理和控制,数据库管理系统提供了数据操作、数据库的运行管理、数据组织、存储与管理、数据库的保护、数据库的维护及通信等功能。

(1)数据的定义

DBMS提供数据定义语言(Data Definition Language,DDL),供用户定义数据库的三级模式结构、两级映像,以及完整性约束和保密限制等约束。DDL主要用于建立、修改数据库的库结构。DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息则被存放在数据字典(Data Dictionary)中。

(2)数据的操作

DBMS提供数据操作语言(Data Manipulation Language,DML),供用户实现对数据的追加、删除、更新及查询等操作。

(3)数据库的运行管理

数据库的运行管理功能就是DBMS的运行控制及管理功能,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性。这些功能用于保证数据库系统的正常运行。

(4)数据的组织、存储与管理

DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据及存取路径等,还需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间的利用率,选择合适的存取方法可提高存取效率。

(5)数据库的保护

数据库中的数据是信息社会的战略资源,所以,数据的保护至关重要。DBMS对数据库的保护通过4个方面来实现:数据库的恢复、数据库的并发控制、数据库的完整性控制及数据库安全性控制。DBMS的其他保护功能还有系统缓冲区的管理及数据存储的某些自适应调节机制等。

(6)数据库的维护

这一部分包括数据库的数据载入、转换、转储、数据库的重组重构,以及性能监控等功能,这些功能分别由各个使用程序来完成。

(7)通信

DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。对网络环境下的数据库系统,还应该包括DBMS与网络中其他软件系统的通信功能及数据库之间的互操作功能。

1.4.3 数据库语言

为了完成上述的数据库管理系统的七大功能,数据库管理系统为用户维护和操作数据库中的数据提供了丰富的数据库语言,数据库语言是用于完成数据库系统中的数据描述、操纵和控制的重要工具。

1.数据描述语言

数据描述语言(Data Definition Language, DDL)或称数据定义语言,用于描述数据库中的数据、数据的逻辑结构、数据的物理结构及两者间映射的工具。

数据库系统结构可分为三个层级:模式、子模式和存储模式。数据描述语言也相应地分为三级。

①供数据库管理员使用,用于描述数据库全局逻辑结构的数据描述语言,即模式数据描述语言。

②描述数据实际存储方式的数据描述语言,即存储描述语言。

③供用户使用,用于描述数据库局部逻辑结构的数据描述语言,即子模式数据描述语言。

模式数据描述语言是独立于数据库应用程序设计语言的语言,子模式数据描述语言则和选作宿主语言的程序设计语言有相容的语法。

2.数据操纵语言

用于对数据库中数据进行存储、检索、修改和删除的语言,为使用数据库所必需的工具。任何数据库管理系统都至少提供一种数据操纵语言(Data Manipulation Language, DML)。

DML一般可分为两类。

①可以独立使用的自容型数据操纵语言,主要提供查询功能,也称查询语言,有时还可兼有数据存储、修改和删除功能,通常是非过程化语言。

②宿主型数据操纵语言,要将它嵌入其他程序设计语言(如COBOL、FORTRAN、PL/I、汇编语言)。被嵌入的语言称为宿主语言,嵌入的语言称为子语言。数据库应用程序用宿主语言和子语言书写而成,操纵语言和宿主语言要有相容的语法,宿主型操纵语言通常是过程化语言。关系数据库管理系统所提供的数据库语言,如System R的SQL语言,具有定义、操纵和控制一体化的特征,既可嵌入宿主语言,也可独立用作查询语言。

3.数据控制语言

数据库控制语言(Data Control Language, DCL)就是提供数据控制功能的语句的总和,如控制用户对数据的存取权、控制数据完整性等的语言成分。这些语句包括GRANT、DENY、REVOKE等语句。

1.4.4 数据库管理系统的工作过程

在对数据库的系统结构和数据库管理系统的体系结构有了初步的了解以后,下面将通过介绍应用程序查询数据库数据的全过程来大致了解数据库系统运行的过程。

一个典型的DBMS工作过程如图1-7所示。

在应用程序运行时,数据库管理系统将开辟一个数据库系统缓冲区,用于数据的传输和格式的转换。将数据库系统三层结构的描述放在数据字典(Data Dictionary,DD)中。

假设用户在应用程序中有如下的SQL查询语句:

该查询语句由两个子句组成:FROM子句给出了所要查询的关系,这里是图书信息关系Book_Information;SELECT子句给出所要查询的属性的名字,星号“*”表示所有的属性,即整个元组。

该查询语句的具体执行过程如下。

①当计算机执行该语句时,启动数据库管理系统DBMS。

②DBMS先对该语句进行语法检查,然后从数据字典DD中找出该应用程序对应的外模式(相当于关系数据库中的视图),检查是否存在所要查询的关系并进行权限检查,即检查该操作是否在合法的授权范围内。如有问题,则会返回出错信息。

图1-7 DBMS的工作过程

③在决定执行该语句后,DBMS将从DD中调出相应的模式描述并从外模式映像到模式,从而确定所需要的逻辑数据。

④DBMS从DD调出相应的内模式描述并从模式映像到内模式,从而确定应读入的物理数据和具体的地址信息。在查询过程中,DBMS的查询处理程序将根据DD中的信息进行查询优化并把查询命令转换成一串单记录(元组)的读出操作序列,随后,DBMS执行读出操作序列。

⑤DBMS在查看内模式并决定从哪个文件、用什么方式读取哪个物理记录之后,向操作系统(OperatingSystem,OS)发出从指定地址读取物理记录的命令,同时,在系统缓冲区记下运行记录。当物理记录全部读完时,转到⑫。

⑥OS执行读出的命令,按指定地址从数据库中把记录读入OS的系统缓冲区,随后,再读入数据库(DB)的系统缓冲区。

⑦DBMS根据查询命令和数据字典的内容把系统缓冲区中的记录转换成应用程序所要求的记录格式。

⑧DBMS把数据记录从系统缓冲区传送到应用程序的用户工作区。

⑨DBMS把执行成功与否的状态信息返回给应用程序。

⑩DBMS把系统缓冲区中的运行记录记入运行日志,以备日后查阅或发生意外时用于系统恢复。

⑪DBMS在系统缓冲区中查找下一记录,若找到,就转到⑦;否则,转到⑤。

⑫查询语句执行完毕,应用程序做后续处理。

1.4.5 主要的数据库管理系统

1.SQL server

SQL Server是一个关系数据库管理系统,它最初由Microsoft、Sybase和Ashton-Tate三家公司共同开发。其于1988年推出了第一个OS/2版本,在Windows NT推出后,微软将SQL Server移植到Windows系统上,之后便专注于开发、推广SQL Server的Windows NT版本;Sybase则专注于SQL Server在UNIX系统上的应用。

SQL Server能够提供满足今天电子商务商业环境要求的不同类型的数据库解决方案。它是一种应用广泛的数据库管理系统,具有许多显著的优点,如易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。

SQL Server的特点如下。

●图形化用户界面,使系统管理和数据库管理更加直观、简单。

●丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。

●SQL Server与Windows完全集成,SQL Server也可以很好地与Microsoft BackOffice产品集成。

●具有很好的伸缩性,可跨越从运行Windows的笔记本电脑到运行Windows Server的大型处理器等多种平台使用。

●对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。

●SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。

关于SQL Server的安装及使用等将在第6章作详细介绍

2.MySQL

MySQL由瑞典的MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库是将数据保存在不同的表中,而不是将所有数据都放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,它分为社区版(免费且开源)和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,因此,一般中小型网站的开发都选择MySQL作为网站数据库。其社区版的性能卓越,可以与PHP和Apache组成良好的开发环境。

MySQL在Window系统中以系统服务方式运行,而在UNIX/LINUX系统上,MySQL则支持多线程运行方式,从而获得相当好的性能。它有强大的功能、很好的灵活性、丰富的应用编程接口(API)及精巧的系统结构,所以受到了广大自由软件爱好者,甚至是商业软件用户的青睐。

与其他的大型数据库(如Oracle、DB2、SQL Server等)相比,MySQL自有不足之处,但这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。

MYSQL系统的特性如下。

●使用C和C++编写并使用了多种编译器进行测试,保证源代码的可移植性。

●支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris及Windows等多种操作系统。

●为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

●支持多线程,充分利用CPU资源。

●优化的SQL查询算法能有效地提高查询速度。

●既能够作为一个单独的应用程序应用于在客户端服务器网络环境中,也能够作为一个库被嵌入到其他的软件中。

●提供多语言支持,常见的编码(如中文的GB 2312、BIG5,日文的Shift_JIS等)都可以用作数据表名和数据列名。

●提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

●提供用于管理、检查及优化数据库操作的管理工具。

●支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

●支持多种存储引擎。

3.DB2

DB2是IBM公司研发的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及从小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够将大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并且,使数据库本地化及远程连接透明化。它以拥有一个非常完备的查询优化器而著称,其外部连接改善了查询性能并支持多任务并行查询。DB2具有很好的网络支持能力,每个子系统都可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。

DB2可以提供主流的OS/390和VM操作系统,以及中等规模的AS/400系统,而且,IBM还提供了跨平台(包括基于UNIX的LINUX,HP-UX,Sun Solaris,以及SCO UnixWare;还有用于个人计算机的OS/2操作系统,以及微软的Windows系统)的DB2产品。DB2数据库可以通过微软的开放数据库连接(ODBC)接口,也可用Java数据库连接(JDBC)接口,或者使CORBA接口代理被任何的应用程序访问。

DB2的优势如下。

●开放性:能在所有主流平台上运行(包括Windows),最适于海量数据,在企业级的应用最为广泛。

●并行性:具有很好的并行性,DB2把数据库管理扩充到了并行的、多节点的环境。

●安全性:获得最高认证级别的ISO标准认证。

●性能:性能较高,适用于数据仓库和在线事物处理。

●客户端支持及应用模式:跨平台,多层结构,支持ODBC、JDBC等客户。

●操作简便:操作简单,同时提供GUI和命令行,在Windows和UNIX下的操作相同。

●兼容性:在巨型企业得到广泛的应用,向下兼容性好,风险小。

4.Oracle数据库

Oracle数据库是Oracle公司于1979年首先推出的基于SQL标准的关系数据库产品,可在100多种硬件平台上运行,包括个人计算机、工作站、小型机、中型机和大型机,并且,支持多种操作系统。它是以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。用户的Oracle应用可以便利地从一种计算机配置移植到另一种计算机配置上。Oracle的分布式结构可将数据和应用驻留在多部计算机中,而且,它们相互之间的通信是透明的。

Oracle数据库的特点如下。

●支持大数据库、多用户的高性能事务处理。Oracle支持的最大数据库的大小可以达到几十TB,可充分利用硬件设备,支持大量用户同时在同一数据上执行各种数据应用,并且,可使数据使用冲突最小化,保证数据的一致性。数据维护具有高性能,Oracle数据库每天可连续使用24小时,正常的系统操作不会中断数据库的使用。

●实施安全性控制和完整性控制。Oracle为可接受的数据指定标准并监视各种数据的存取,以提供系统安全性。

●支持分布式数据库和分布处理。为了充分利用计算机系统和网络,Oracle数据库允许将处理分为数据库服务器和客户应用程序,所有共享的数据都由数据库管理系统的计算机处理,而运行数据库应用的工作站则集中于解释和显示数据。通过网络连接的计算机环境,Oracle可将存放在多台计算机上的数据组合成一个逻辑数据库,供全部网络用户使用。

●具有可移植性、可兼容性和可连接性。Oracle软件可以在许多不同的操作系统上运行,甚至在Oracle上做开发的应用,仅需少量修改就可以将其移植到任何操作系统中。Oracle软件同工业标准及许多工业标准的操作系统相兼容,所开发的应用系统可在任何操作系统上运行。