数据库管理系统(用于数据管理的通用化软件所组成的软件系统)

数据库管理系统(Database Management System,DBMS)是数据库应用系统的核心。数据库管理系统是一组用于数据管理的通用化软件所组成的软件系统,它建立在操作系统的基础之上,是位于操作系统与用户之间的数据管理软件,负责数据库中的数据组织、数据操纵、数据维护和数据控制等功能的实现。

1961年,美国通用电气公司开发出世界上第一个数据库管理系统——集成数据存储(Integrated Data Store,IDS),标志第一代数据库管理系统网状数据库管理系统的出现。1968年,IBM公司推出的IMS(In-formation Management System)是第一个出现的有标志性的大型商用数据库管理系统。1970年,埃德加·科特(Edgar F.Codd)提出了关系数据模型用来解决第一代数据库管理系统出现的问题。1974年,IBM公司开发了第二代数据库管理系统关系型数据库管理系统SystemR。该系统证实了埃德加·科特(Edgar F.Codd)的关系数据模型的可行性、有效性和优越性,并直接推动了数据操作语言SQL的出现。随后,商业关系型数据库系统纷纷涌现。

一般而言,数据库管理系统主要功能有数据定义功能、数据操纵功能、数据库运行管理、数据存储和管理功能、数据库的建立和维护功能、数据通信接口功能等。

系统原理

应用程序通过数据库管理系统来访问并维护数据,而数据库管理系统则以特定的结构化方式来管理和保存数据。要想在大量的数据中快速找到所需要的数据,并能对庞大的数据库进行日常维护,这就需要使用数据库管理系统。数据库管理系统是操纵和管理数据库的大型软件,用于建立、使用和维护数据库。数据库管理系统对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据,数据库管理员也通过数据库管理系统进行数据库的维护工作。数据库管理系统可使多个应用程序并允许用户使用不同的方法在同时或不同时刻去建立、修改和查询数据库。大部分数据库管理系统提供数据定义语言、数据操作语言和数据控制语言,供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。

发展历史

背景

数据库管理系统是随着数据库系统的诞生而出现。20世纪50年代中期,计算机主要用于科学计算,还未出现磁盘存储设备和操作系统软件,数据多以穿孔纸带这种裸文件方式进行物理的储存和处理,数据管理主要靠人工。20世纪50年代末期,随着磁盘、磁鼓等直接存储设备的出现,以及软件领域有了操作系统,计算机不仅用于科学计算,还可用于数据管理方面,因而进入了文件系统阶段。这个阶段是由操作系统中的文件系统模块来管理所存储的数据。但由于文件之间相对独立,文件系统缺乏完整和统一的管理与共享数据的能力,因此其缺陷是,具有较多的数据冗余和数据的不一致,数据之间的联系弱,数据的逻辑独立性差,并且由于文件是为某一特定应用服务,难以在已有数据上扩充新的应用。20世纪60年代以后,随着计算机在数据管理领域的普遍应用,人们对数据管理技术提出了更高的要求:希望面向企业或部门,以数据为中心组织数据,减少数据的冗余,提供更高的数据共享能力,同时要求程序和数据具有较高的独立性,当数据的逻辑结构改变时,不涉及数据的物理结构,也不影响应用程序,从而降低应用程序的研制与维护费用。数据库系统应运而生,数据管理进入数据库系统阶段。数据库系统阶段的应用程序与数据的关系通过数据库管理系统(DBMS)来实现,数据库管理系统也就此诞生。

一代时期:网状数据库管理系统

20世纪60年代,美国启动了阿波罗载人登月工程。该工程需要处理和管理庞大的数据。在此背景下,1961年,美国通用电气公司采用网状数据模型开发出世界上第一个数据库管理系统——集成数据存储(Integrated Data Store,IDS),标志着网状数据库管理系统的出现,这一系统在当时得到了广泛的发行和应用。1968年,IBM公司基于层次数据模型推出了IMS(In-formation Management System),最早出现的具有标志性的大型商用数据库管理系统,也是数据库系统中第一个商用产品,并在商业、金融等领域得到了成功的应用。

在此期间,为了帮助建立数据库的标准,包含了美国政府和工商界代表的数据系统语言会议(Conferenceon Data Systems Languages,CODASYL)成立了表处理任务组。1967年,数据系统语言会议(CODASYL)更名为数据库任务组(DataBaseTaskGroup,DBTG)。1971年,数据库任务组(DBTG)第一份正式的报告面世,报告包含三部分的内容:网状数据库模型、数据定义语言(Data Defi-nition Language,DDL)和数据操纵语言(Data Manipulation Language,DML)规范说明。DBTG系统和层次方法代表了第一代数据库管理系统。

由于第一代数据库管理系统主要依赖网状或层次数据模型。这种类型的数据库系统存在结构复杂、数据定义和数据修改操作不便的缺点,因此很快被基于关系数据模型的第二代数据库系统所取代。

二代时期:关系数据库管理系统

1970年,埃德加·科特(Edgar F.Codd)在其论文《大型共享数据库的数据关系模型》(A Relational Model of Data for Large SharedData Banks)中提出了关系数据模型,以解决网状、层次型数据库系统中存在的问题。埃德加·科特(Edgar F.Codd)建议将数据保存在由行和列组成的简单表中,而不是保存在一个层次结构中,这样用户查询数据时,就不需要知道其数据结构。1974年,IBM公司开发了关系型数据库管理系统SystemR。该系统证实了埃德加·科特(Edgar F.Codd)的关系数据模型的可行性、有效性和优越性,并直接推动了数据操作语言SQL的出现,SQL成为关系数据库管理系统(RDBMS)的标准语言。随后,商业关系型数据库系统如雨后春笋般涌现出来,并被广泛使用。典型的关系型数据库管理系统有Oracle、DB2、Informix、Sybase等。1976年,霍尼韦尔(Honeywell)公司开发了分时关系数据存储(Multics Relational DataStore,MRDS,这是第一个商用关系数据库管理系统(RDBMS)。关系数据库管理系统(RDBMS)被称为第二代数据库管理系统

由于关系数据库系统具有模型简单清晰、理论基础好、数据独立性强、数据库语言非过程化及标准化等特色,使得其迅速在数据库市场上取得垄断地位且目前关系型数据库管理系统仍然是市场份额最大的数据库管理系统。

三代时期:对象-关系数据库管理系统

1976年,美籍华裔计算机科学家陈品山(Peter.Chen)提出了实体-联系模型,该模型现在已被广泛接受为概念数据库设计技术。此外,埃德加·科特(Edgar F.Codd)试图通过一个称为RM/T(1979年)和后续的RM/V2(1990年)的关系模型扩展版本来解决他工作中的一些不足之处。扩展关系模型更加接近于实际世界的描述,被统一归类为语义数据建模。为了适应越来越复杂的数据库应用,出现了两类新的系统:OODBMS(Object-orientedDatabase Management System,面向对象的数据库管理系统)和ORDBMS(Object-oriented Relative Database Management System,面向对象关系的数据库管理系统)。然而,不同于先前的各种数据模型,这些模型的实际组成并不清晰。这些演变促使了第三代数据库管理系统的出现。

20世纪90年代后,Internet、多层B/S结构、单位的数据库必须与Web应用集成成为趋势。20世纪90年代后期,建立了对象-关系数据库管理系统,它既支持已被广泛使用的SQL,具有良好的通用性,又具有面向对象的特性,支持复杂对象和复杂对象的复杂行为。对象-关系数据库管理系统适应了新应用领域的需要和传统应用领域深化发展的需要。人们把面向对象技术与数据库技术相结合的系统称为第三代数据库管理系统或新一代数据库管理系统。

系统分类

在数据库中,由于数据都是按照一定的数学模型来组织的。因此,站在数据模型的角度上看,根据计算机系统所支持的数据模型不同,数据库管理系统主要可以分为以下几类:

层次型数据库管理系统

层次型数据库管理系统的典型代表是美国IBM公司研制的曾经广泛使用的、第一个大型商用数据库管理系统IMS。在这个系统中,数据的管理模型采用的是层次数据模型,即用树形结构来表示实体及其之间的关系。在层次模型中,文件或记录之间的联系形成层次。层次数据库把记录集合表示成倒立的树结构。树的结点表示实体集,树可以被定义成一组结点,即有一个特别指定的结点称为根(结点),其他结点有且仅有一个父结点。结点之间的连线表示相连两实体集之间的关系,这种关系只能是“1:m”的。通常把表示1的实体集放在上方,称为父结点,表示M的实体集放在下方,称为子结点。记录之间的联系通过指针来实现,查询效率较高,缺点是较复杂,不易掌握。

网状型数据库管理系统

网状型数据库管理系统的典型代表是数据系统语言会议(CODASYL)提出的DBTG系统。在这个系统中,数据模型采用的是网状模型,即用有向图结构表示实体类型及实体间联系。记录之间的联系与层次模型一样,也是通过指针实现,可以容易地实现m:n的联系,查询效率也很高。但有着与层次模型类似的缺点,即数据结构复杂,编程也复杂。

关系型数据库管理系统

关系型数据库管理系统的数据模型采用的都是IBM公司的研究员埃德加·科特(Edgar F.Codd)在他的论文中提出的关系模型。在关系模型中,用一种称为“关系”的二维表来组织数据,即用二维表结构来表示实体及实体之间联系,在其背后可能存在复杂的数据结构来保证对各种数据操作的快速响应,但作为数据库系统的用户可以不必关系,从而提高了数据库开发人员的效率。

常见系统

MySQL

MySQL是一个关系型数据库管理系统(Relational DatabaseManagement System,RDBMS),由瑞典MySQL AB公司开发。MySQL是流行的关系型数据库管理系统之一,在Web应用方面,MySQL是最好的RDBMS应用软件之一。关系数据库将数据存储在不同的表中,而不是将所有数据放在一个大仓库中,这样提高了速度和灵活性。

Oracle

Oracle是美国Oracle公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如,SilverStream就是基于数据库的一种中间件。Oracle数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了Oracle知识,便能在各种类型的机器上使用它。

MicrosoftSQL Server

SQL Server是Microsoft公司推出的关系数据库管理系统,具有使用方便、可伸缩性好、与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98的笔记本计算机到运行Microsoft Windows 2012的大型多处理器的服务器等多种平台使用。MicrosoftSQL Server是一个全面的数据库平台,其使用集成的商业智能(Business Intel-ligence,BI)工具提供了企业级的数据管理。MicrosoftSQLServer数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使用户可以构建和管理用于业务的高可用和高性能的数据应用程序。

Access

Access是Microsoft公司推出的一个小型的关系型数据库管理系统,它与Word、Excel、PowerPoint一样,也是Office系列办公软件的重要组成部分之一。Access 功能强大、操作简单,为用户提供了一个数据管理工具集和数据库应用程序的开发环境,主要适用于小型数据库系统的开发,是目前流行的桌面数据库管理系统之一。

PostgreSQL

PostgreSQL是一种特性非常齐全的自由软件的对象关系型数据库管理系统(ORDBMS),以加州大学计算机系开发的POSTGRES为基础。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性和多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,如通过增加新的数据类型、函数、操作符、聚集函数、索引方法和过程语言等进行扩展。另外,因为许可证的灵活性,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

BigTable

BigTable是非关系型数据库管理系统,是一个稀疏的、分布式的、持久化存储的多维度排序Map,可以快速且可靠地处理PB级别的数据,并且能够部署到上千台机器上。BigTable 已经在超过60个Google的产品和项目上得到了应用,包括Google Analytics、Google Finance、Orkut、Personalized Search、Writely和Google Earth,这些产品对BigTable 提出了不同的需求,有的需要高吞吐量的批处理,有的需要及时提供响应数据给最终用户。它们使用的BigTable集群的配置也有很大的差异,有的集群只有几台服务器,有的则需要上千台服务器、存储几百TB的数据。

Cassandra

Cassandra是一个免费的、开源的、分布式的、宽列存储的NoSQL数据库管理系统,旨在跨许多商业服务器处理大量数据。

MongoDB

MongoDB是其同名公司(原名10Gen)开发的一款以高性能和高可扩展为特征的开源软件,它是面向文档的NoSQL数据库管理系统。

CouchDB

CouchDB是一个开源的面向文档的数据管理系统。CouchDB可以安装在大部分操作系统上,包括Linux和MacOSX。CouchDB的文档更新模型是无锁的,对此CouchDB与SQL,CouchDB的结构无须预定义,没有固定模式,是任意结构的文档的集合;数据不必满足任何范式,存在数据冗余;用户无须了解文档结构甚至是文档名;属于动态模式下的静态查询。

系统功能

一般来说,数据库管理系统的功能主要包括以下六个方面。

数据定义功能

数据定义包括定义构成数据库结构的模式、存储模式和外模式,定义各个外模式与模式之间的映射,定义模式与存储模式之间的映射,定义有关的约束条件。例如,为保证数据库中的数据具有正确的语义而定义的完整性规则、为保证数据库安全而定义的用户口令和存取权限等。

数据操纵功能

数据操纵包括对数据库数据的检索、插入、修改和删除等基本操作。

数据库运行管理

对数据库的运行进行管理是数据库管理系统运行时的核心部分,包括对数据库进行并发控制、安全性检查、完整性约束条件的检查和执行、数据库的内部维护(如索引、数据字典的自动维护)等。所有访问数据库的操作都要在这些控制程序的统一管理下进行,以保证数据的安全性、完整性、一致性以及多用户对数据库的并发使用。

数据存储和管理功能

数据库中需要存放多种数据,如数据字典、用户数据、存取路径等,数据库管理系统负责分门别类地组织、存储和管理这些数据,确定以何种文件结构和存取方式物理地组织这些数据,如何实现数据之间的联系,以便提高存储空间利用率以及提高随机查找、顺序查找、增加、删除、修改等操作的时间效率。

数据库的建立和维护功能

建立数据库包括数据库初始数据的输入与数据转换等。维护数据库包括数据库的转储与恢复、数据库的重组织与重构造、性能的监视与分析等。

数据通信接口功能

数据库管理系统需要提供与其他软件系统进行通信的功能。例如,提供与其他数据库管理系统或文件系统的接口,从而能够将数据转换为另一个数据库管理系统或文件系统能够接收的格式,或者接收其他数据库管理系统或文件系统的数据。除了上述功能以外,为了适应数据共享的环境,现代数据库管理系统一般还要具备数据的完整性维护、安全性保护、多用户并发控制和故障恢复等功能。

系统组成

连接管理器和安全管理器

连接管理器提供建立数据库连接的设备。它可以在本地或通过网络设置,后者更常见。它验证登录凭据,如用户名和密码,并返回连接句柄。数据库连接可以作为单个进程运行,也可以作为进程中的线程运行。线程表现了进程的内部执行路径,是处理器调度的最小单位。一个进程可包含多个线程,这些线程之间可以资源共享(如内存)。安全管理器验证用户是否具有执行所需的数据库操作的相应权限。例如,某些用户拥有数据读取权限,另一些用户拥有数据写入权限。安全管理器从目录中检索这些权限。

DDL编译器

DDL编译器编译 DDL中的数据定义。理想情况下,DBMS应该提供三个DDL:一个用于内部数据模型,一个用于逻辑数据模型,一个用于外部数据模型。然而,对于使用SQL作为DDL的关系数据库来说,多数情况下都是具有三个不同指令集的单个DDL。DDL编译器首先解析DDL定义并检查其语法正确性。然后,它将数据定义转换为内部形式,并在出错时输出错误提示。编译成功后,它会在目录中注册数据定义,数据库管理系统的所有其他组件都可以通过目录使用这些定义。

查询处理器

查询处理器是数据库管理系统最重要的组成部分之一。它帮助我们进行与数据库查询相关的操作,如检索数据、插入数据、更新数据和从数据库中删除数据。大多数DBMS供应商都有自己的专用查询处理器,它通常包括DML编译器、查询解释器、查询重写器、查询优化器和查询执行器。

四层架构:存储管理器

存储管理器管理物理文件访问,保证数据的正确和高效存储。它由事务管理器、缓冲区管理器、锁管理器和恢复管理器组成。

DBMS工具

除了前面讨论过的组件之外,数据库管理系还附带了各种工具。加载工具支持对各种来源(例如其他数据库管理系、文本文件、Excel文件等)的信息加载数据库。重组工具自动重组数据以提高性能。性能监视工具报告各种关键性能指标,例如占用的存储空间、查询响应时间和事务吞吐量,以对数据库管理系统进行监管。用户管理工具支持创建用户组或账户,并为它们分配权限。数据库管理系工具通常还包括一个备份和恢复工具。

DBMS接口

数据库管理系统需要与多方成员进行交互,例如数据库设计人员、数据库管理员、应用程序和最终用户。为了促进这些交互,它提供各种用户接口,如基于网络的接口、独立的查询语言接口、命令行接口、基于表单的接口、用户图形界面、自然语言接口、应用程序编程接口(API)、管理界面和网络接口。

工作模式

数据库管理系统是对数据进行管理的软件系统,是数据库系统的核心组成部分,用户在数据库系统中的一切操作,包括数据定义、查询、更新及各种控制,都是通过数据库管理系统进行的。

数据库管理系统的工作模式如下:

1接收应用程序的数据请求和处理请求。

2将用户的数据请求转换成复杂的机器代码。

3实现对数据库的操作。

4从对数据库的操作中接收查询结果。

5对查询结果进行处理。

6将处理结果返回给用户。

数据库管理系统总是基于某种数据模型,因此可以将数据库管理系统看成是某种数据模型在计算机系统上的具体实现。根据数据模型的不同,数据库管理系统已分成层次型、网状型、关系型和面向对象型等。在不同的计算机系统中,由于缺乏统一的标准,即使是同种数据模型的数据库管理系统,在用户接口、系统功能等方面也常常是不相同的。

系统特征

数据结构化且统一管理

由于数据库系统采用复杂的数据模型表示数据结构,数据模型不仅描述数据本身的特点,还描述数据之间的联系,数据不再面向某个具体的应用程序,而是面向整个应用系统。数据维护简单方便、容易扩展,数据冗余明显减少,真正实现了数据的共享。

数据独立性较高

数据的独立性是指数据与程序独立,将应用程序中的数据定义和管理等功能分离出来,由DBMS负责数据的存储和管理。由于数据在数据库管理系统的管理下使用三级模式结构,因此,数据的逻辑独立性和物理独立性就明显地体现出来。应用程序员不必关心数据的存储位置和访问方法等问题,只要知道数据的逻辑结构即可,从而减轻了负担。

数据控制功能强大

数据库管理系统提供了数据控制功能,以适用多用户并发共享数据库的需要。数据控制功能包括对数据库中数据的安全性、完整性、并发和恢复的控制。

界面友好

数据库管理系统的用户接口应面向应用、面向用户。需提供方便的编程接口,以建立应用程序访问数据库的通道;使用户可通过多种方式、易用的语言对数据库进行复杂操作。

发展趋势

数据库管理系统的发展趋势是在关系型数据库的基础上,将面向对象的某些特性(如继承)添加上去,称为“对象一关系型数据库”,但本质上仍然是一个关系型数据库。面向元数据方法的优点是通俗易懂,特别适合信息系统中数据层上的设计与实现。面向元数据方法的缺点是只能实现二维表格,不能实现窗口界面。

赞(0)
免责声明:本文部分文字与图片资源来自于网络,用户转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即在本文留言评论通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意。