数据库管理系统
数据库管理系统是数据库应用系统的核心。数据库管理系统是由一组基于操作系统的数据管理通用软件组成的软件系统,是操作系统和用户之间的数据管理软件,负责实现数据库中的数据组织、数据操作、数据维护和数据控制。1961年,美国通用电气公司开发了世界上第一个数据库管理系统——集成数据存储(IDS ),这标志着第一代数据库管理系统——网格数据库管理系统的出现。1968年,IBM推出的IMS(信息管理系统)是第一个大型商业数据库管理系统。1970年,Edgar F.Codd提出了一个关系数据模型来解决第一代数据库管理系统的问题。1974年,IBM开发了第二代数据库管理系统,关系数据库管理系统SystemR。该系统证实了Edgar F.Codd的关系数据模型的可行性、有效性和优越性,并直接推动了数据操作语言SQL的出现。随后,商用关系数据库系统相继出现。一般来说,数据库管理系统的主要功能包括数据定义、数据操作、数据库操作管理、数据存储和管理、数据库建立和维护、数据通信接口等。
发展历史
背景
数据库管理系统是随着数据库系统的诞生而出现的。50年代中期,计算机主要用于科学计算,没有磁盘存储设备和操作系统软件。数据大多以穿孔纸带的形式进行物理存储和处理,数据管理主要依靠人工。50年代后期,随着磁盘、磁鼓等直接存储设备的出现,以及软件领域操作系统的存在,计算机不仅可以用于科学计算,还可以用于数据管理,从而进入文件系统阶段。在这个阶段,操作系统中的文件系统模块管理存储的数据。但是,由于文件之间的相对独立性,文件系统缺乏完整统一的管理和共享数据的能力,因此其缺点是数据冗余和不一致性较多,数据之间的联系较弱,数据的逻辑独立性较差,并且由于文件服务于特定的应用,因此很难在现有数据上扩展新的应用。
20世纪60年代以后,随着计算机在数据管理领域的广泛应用,人们对数据管理技术提出了更高的要求:希望为企业或部门组织数据,减少数据冗余,提供更高的数据共享能力,同时要求程序和数据具有更高的独立性。当数据的逻辑结构发生变化时,不涉及数据的物理结构,也不影响应用程序,从而降低了应用程序的开发和维护成本。数据库系统应运而生,数据管理进入数据库系统阶段。数据库系统阶段的应用与数据的关系是通过数据库管理系统(DBMS)来实现的,数据库管理系统由此诞生。
第一代:网络数据库管理系统
20世纪60年代,美国启动了阿波罗载人登月工程。这个项目需要处理和管理庞大的数据。在此背景下,1961年,美国通用电气公司开发了世界上第一个数据库管理系统——集成数据存储(IDS),标志着网络数据库管理系统的出现,这一系统在当时得到了广泛的分布和应用。1968年,IBM推出了基于分层数据模型的IMS(信息管理系统),这是第一个标志性的大型商用数据库管理系统,也是数据库系统中的第一个商用产品,并成功应用于商业、金融等领域。
在此期间,为了帮助建立数据库标准,数据系统语言会议(CODASYL)成立了一个表格处理工作队,其中包括美国政府和商业界的代表。1967年,CODASYL更名为DataBaseTaskGroup (DBTG)。1971年,数据库任务组(DBTG)发表了第一份正式报告,该报告包括三个部分:网状数据库模型、数据定义语言(DDL)和数据操作语言(DML)的规范。DBTG系统和分层方法代表了第一代数据库管理系统。
因为第一代数据库管理系统主要依赖于网格或层次数据模型。这类数据库系统具有结构复杂、数据定义和数据修改不方便的缺点,因此很快被基于关系数据模型的第二代数据库系统所取代。
第二代:关系数据库管理系统
1970年,Edgar F.Codd在他的论文《大型共享数据库的数据关系模型》中提出了关系数据模型,以解决网络和层次数据库系统中存在的问题。Edgar F.Codd建议将数据存储在由行和列组成的简单表格中,而不是存储在层次结构中,这样当用户查询数据时,就不需要知道它的数据结构。1974年,IBM开发了关系数据库管理系统SystemR。该系统证实了Edgar F.Codd的关系数据模型的可行性、有效性和优越性,并直接推动了数据操作语言SQL的出现,成为关系数据库管理系统(RDBMS)的标准语言。随后,商业关系数据库系统如雨后春笋般出现并得到广泛应用。典型的关系数据库管理系统包括Oracle、DB2、Informix、Sybase等。1976年,Honeywell公司开发了Multics关系数据库(MRDS),这是第一个商用关系数据库管理系统(RDBMS)。关系数据库管理系统被称为第二代数据库管理系统。由于关系数据库系统具有模型简单明了、理论基础好、数据独立性强、数据库语言非过程化、标准化等特点,因此在数据库市场上迅速取得了垄断地位,关系数据库管理系统仍然是目前市场份额最大的数据库管理系统。
第三代:对象关系数据库管理系统
1976年,美籍华人计算机科学家彼得。陈提出的实体关系模型作为一种概念数据库设计技术已被广泛接受。此外,Edgar F.Codd试图通过称为RM/T(1979)和随后的RM/V2(1990)的关系模型的扩展版本来解决他的工作中的一些缺点。扩展的关系模型更接近真实世界的描述,被归类为语义数据建模。为了适应越来越复杂的数据库应用,出现了两种新型系统:OODBMS(面向对象数据库管理系统)和ORDBMS(面向对象关系数据库管理系统)。然而,与以前的数据模型不同,这些模型的实际组成并不清楚。这些变化促使了第三代数据库管理系统的出现。
20世纪90年代以后,互联网、多层B/S结构和企业数据库与Web应用的集成已经成为一种趋势。90年代末建立了对象关系数据库管理系统,不仅支持广泛使用的SQL,而且具有良好的通用性和面向对象特性,支持复杂对象和复杂对象的复杂行为。对象关系数据库管理系统满足了新的应用领域的需求和传统应用领域深化发展的需要。人们将面向对象技术与数据库技术相结合的系统称为第三代数据库管理系统或新一代数据库管理系统。
系统原理
应用程序通过数据库管理系统访问和维护数据,而数据库管理系统以特定的结构化方式管理和保存数据。为了从大量的数据中快速找到所需的数据,并对庞大的数据库进行日常维护,有必要使用数据库管理系统。数据库管理系统是操纵和管理数据库的大型软件,用于建立、使用和维护数据库。数据库管理系统对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据,数据库管理员也通过数据库管理系统维护数据库。数据库管理系统可以制作多个应用程序,允许用户在同一时间或不同时间使用不同的方法建立、修改和查询数据库。大多数数据库管理系统都提供了数据定义语言、数据操作语言和数据控制语言,供用户定义数据库模式结构和权限约束,实现添加、删除数据等操作。
系统分类
在数据库中,因为数据是按照一定的数学模型组织的。因此,从数据模型的角度来看,根据计算机系统支持的数据模型的不同,数据库管理系统主要可以分为以下几类:
分层数据库管理系统
分层数据库管理系统的典型代表是IMS,它是美国IBM公司开发的第一个大型商用数据库管理系统,并得到了广泛的应用。在本系统中,数据管理模型是分层数据模型,即采用树结构来表示实体及其关系。在层次模型中,文件或记录之间的关系形成一个层次结构。分层数据库将记录集表示为倒置的树结构。一棵树的节点代表实体集,一棵树可以定义为一组节点,即有一个专门指定的节点叫做根(node),其他节点只有一个父节点。节点之间的连线表示两个相连的实体集之间的关系,只能是“1: m”。通常代表1的实体集放在最上面,称为父节点,代表M的实体集放在最下面,称为子节点。记录之间的联系是通过指针来实现的,查询效率高,但缺点是复杂难掌握。
网络化数据库管理系统
网络数据库管理系统的典型代表是CODASYL提出的DBTG系统。在这个系统中,数据模型是一个网络模型,即实体类型和实体之间的关系用有向图结构来表示。和层次模型一样,记录之间的关系也是通过指针来实现的,可以很容易地实现M: N关系,查询效率高。但它也有和层次模型类似的缺点,就是数据结构复杂,编程也复杂。
关系数据库管理系统
关系数据库管理系统的数据模型采用IBM研究员Edgar F.Codd在他的论文中提出的关系模型。在关系模型中,用一个叫做“关系”的二维表来组织数据,也就是用一个二维表结构来表示实体和实体之间的关系。背后可能有复杂的数据结构来保证对各种数据操作的快速响应,但数据库系统的用户不需要关联,从而提高了数据库开发人员的效率。
常见系统
MySQL
MySQL是一个关系数据库管理系统(RDBMS),由瑞典的MySQL AB公司开发。MySQL是流行的关系数据库管理系统之一,MySQL是Web应用中最好的RDBMS应用之一。关系数据库将数据存储在不同的表中,而不是将所有数据存储在一个大仓库中,这提高了速度和灵活性。
Oracle
Oracle是美国Oracle公司(甲骨文公司)提供的一套以分布式数据库为核心的软件产品,是目前最流行的客户机/服务器或B/S架构的数据库之一。比如SilverStream就是一个基于数据库的中间件。Oracle数据库是目前世界上应用最广泛的数据库管理系统。作为一个通用数据库系统,它具有完整的数据管理功能。作为关系数据库,它是完全关系的产物;作为一个分布式数据库,它实现了分布式处理功能。但是它的所有知识,只要在一个机型上学习甲骨文知识,就可以用在各种类型的机器上。
MicrosoftSQL Server
SQL Server是微软公司推出的关系数据库管理系统,具有使用方便、可扩展性好、与相关软件集成度高等优点。它可以跨多种平台使用,从运行Microsoft Windows 98的笔记本电脑到运行Microsoft Windows 2012的大型多处理器服务器。MicrosoftSQL Server是一个全面的数据库平台,它通过使用集成的商业智能(BI)工具来提供企业级数据管理。MicrosoftSQLServer数据库引擎为关系数据和结构化数据提供了更加安全可靠的存储功能,使用户能够为企业构建和管理高可用性和高性能的数据应用程序。
Access
Access是微软公司推出的小型关系数据库管理系统。和Word、Excel、PowerPoint一样,也是Office系列办公软件的重要组成部分之一。Access功能强大,操作简单,为用户提供了数据管理工具集和数据库应用程序的开发环境。它主要适用于小型数据库系统的开发,是目前流行的桌面数据库管理系统之一。
PostgreSQL
PostgreSQL是一个自由软件对象关系数据库管理系统(ORDBMS ),功能齐全,基于加州大学计算机系开发的PostgreSQL。POSTGRES的很多领先概念是在相对较晚的阶段才出现在商业网站的数据库中的。PostgreSQL支持大多数SQL标准,并提供许多其他现代功能,如复杂查询、外键、触发器、视图、事务完整性和多版本并发控制。类似地,PostgreSQL可以在许多方面进行扩展,例如添加新的数据类型、函数、运算符、聚合函数、索引方法和过程语言。此外,由于许可证的灵活性,任何人都可以出于任何目的免费使用、修改和分发PostgreSQL。
BigTable
BigTable是一个非关系数据库管理系统。它是一种稀疏的、分布式的、持久的多维排序图,可以快速可靠地处理PB级数据,可以部署到数千台机器上。BigTable已经应用于60多个谷歌产品和项目,包括谷歌分析、谷歌财务、Orkut、个性化搜索、Writely和谷歌地球。这些产品对BigTable提出了不同的要求,有的需要高通量批处理,有的需要及时向终端用户提供响应数据。他们使用的BigTable集群的配置也大相径庭。一些集群只有几台服务器,而另一些集群需要数千台服务器,存储数百TB的数据。
Cassandra
Cassandra是一个免费、开源、分布式、宽列存储NoSQL数据库管理系统,旨在处理许多商业服务器上的大量数据。
MongoDB
MongoDB是由其同名公司(原名10Gen)开发的开源软件,其特点是高性能和高可扩展性。这是一个面向文档的NoSQL数据库管理系统。
CouchDB
CouchDB是一个开源的面向文档的数据管理系统。CouchDB可以安装在大多数操作系统上,包括Linux和MacOSX X,CouchDB的文档更新模型是无锁的,所以CouchDB、SQL和CouchDB的结构不需要预定义,没有固定的模式,所以它是任意结构的文档集合。数据不必满足任何范式,存在数据冗余;用户不需要知道文档结构,甚至不需要知道文档名称;属于动态模式下的静态查询。
系统组成
连接管理器和安全管理器
连接管理器提供了建立数据库连接的设备。可以在本地设置,也可以通过网络设置,后者更常见。它验证登录凭证,如用户名和密码,并返回连接句柄。数据库连接可以作为单个进程运行,也可以作为进程中的一个线程运行。线程代表进程的内部执行路径,是处理器调度的最小单位。一个进程可以包含多个线程,这些线程可以共享资源(比如内存)。安全管理器验证用户是否具有执行所需数据库操作的适当权限。例如,一些用户拥有读取数据的权限,而另一些用户拥有写入数据的权限。安全管理器从目录中检索这些权限。
DDL编译器
DDL编译器编译DDL中的数据定义。理想情况下,DBMS应该提供三个DDL:一个用于内部数据模型,一个用于逻辑数据模型,一个用于外部数据模型。然而,对于使用SQL作为DDL的关系数据库,在大多数情况下,它是具有三个不同指令集的单个DDL。DDL编译器首先解析DDL定义并检查其语法正确性。然后,它将数据定义转换为内部形式,并在出现错误时输出错误提示。编译成功后,它将在目录中注册数据定义,数据库管理系统的所有其他组件都可以通过目录使用这些定义。
询问处理程序
查询处理器是数据库管理系统最重要的组成部分之一。它帮助我们执行与数据库查询相关的操作,例如从数据库中检索数据、插入数据、更新数据和删除数据。大多数DBMS供应商都有自己专用的查询处理器,通常包括DML编译器、查询解释器、查询重写器、查询优化器和查询执行器。
四层架构:存储管理器
存储管理器管理物理文件访问,以确保正确有效地存储数据。它由事务管理器、缓冲管理器、锁管理器和恢复管理器组成。
DBMS工具
除了前面讨论的组件之外,数据库管理部门还附带了各种工具。加载工具支持从各种来源(如其他数据库管理部门、文本文件、Excel文件等)加载信息。)到数据库里。重组工具自动重组数据以提高性能。性能监控工具报告各种关键性能指标,如占用的存储空间、查询响应时间和事务吞吐量,以监督数据库管理系统。用户管理工具支持用户组或帐户的创建以及权限的分配。数据库管理工具通常包括备份和恢复工具。
DBMS接口
数据库管理系统需要与许多成员进行交互,如数据库设计者、数据库管理员、应用程序和最终用户。为了促进这些交互,它提供了各种用户接口,如基于网络的接口、独立查询语言接口、命令行接口、基于表单的接口、用户图形接口、自然语言接口、应用编程接口(API)、管理接口和网络接口。
系统功能
一般来说,数据库管理系统的功能主要包括以下六个方面。
数据定义功能:数据定义包括定义构成数据库结构的模式、存储模式和外部模式,定义外部模式和模式之间的映射,定义模式和存储模式之间的映射,定义相关约束。例如,为确保数据库中数据的正确语义而定义的完整性规则、为确保数据库的安全性而定义的用户密码和访问权限等。
数据处理功能:数据操作包括数据库数据的检索、插入、修改和删除等基本操作。
数据库操作管理:管理数据库的操作是数据库管理系统的核心部分,包括并发控制、安全检查、完整性约束的检查和实现以及数据库的内部维护(如索引和数据字典的自动维护)。所有访问数据库的操作都应在这些控制程序的统一管理下进行,以确保数据的安全性、完整性和一致性,以及多个用户对数据库的并发使用。
数据存储和管理功能:数据库需要存储各种数据,如数据字典、用户数据、访问路径等。数据库管理系统负责将这些数据分门别类地组织、存储和管理,确定用什么样的文件结构和访问方式在物理上组织这些数据,如何实现数据之间的联系,从而提高存储空间的利用率,提高随机查找、顺序查找、添加、删除、修改的时间效率。
数据库建立和维护功能:数据库的建立包括数据库初始数据的输入和数据转换。数据库维护包括数据库转储和恢复、数据库重组和重建、性能监控和分析等。
数据通信接口功能:数据库管理系统需要提供与其他软件系统通信的功能。例如,它提供了与其他数据库管理系统或文件系统的接口,以便可以将数据转换为另一个数据库管理系统或文件系统可以接收的格式,或者可以接收来自其他数据库管理系统或文件系统的数据。除上述功能外,为适应数据共享环境,现代数据库管理系统一般还具有数据完整性维护、安全保护、多用户并发控制和故障恢复等功能。
工作模式
数据库管理系统是管理数据的软件系统,是数据库系统的核心组成部分。用户在数据库系统中的所有操作,包括数据定义、查询、更新和各种控制,都是通过数据库管理系统进行的。
数据库管理系统的工作模式如下:
1接收来自应用程序的数据请求和处理请求。
将用户的数据请求转换成复杂的机器代码。
3 .实现对数据库的操作。
4接收对数据库操作的查询结果。
5.处理查询结果。
6.将处理结果返回给用户。
数据库管理系统总是基于某种数据模型,因此它可以看作是某种数据模型在计算机系统上的具体实现。根据不同的数据模型,数据库管理系统分为层次型、网络型、关系型和面向对象型。在不同的计算机系统中,由于缺乏统一的标准,即使是具有相同数据模型的数据库管理系统,在用户界面和系统功能方面也往往是不同的。
系统特征
数据是统一组织和管理的:由于数据库系统使用复杂的数据模型来表示数据结构,数据模型不仅描述了数据本身的特征,还描述了数据之间的关系,因此数据不再是面向某个特定的应用,而是面向整个应用系统。数据维护简单方便,易于扩展,数据冗余明显减少,真正实现了数据共享。
高度的数据独立性:数据的独立性是指数据和程序的独立性,将应用程序中的数据定义和管理功能分离,由DBMS负责数据的存储和管理。由于数据在数据库管理系统的管理下采用三层模式结构,数据的逻辑独立性和物理独立性得到了明显的体现。应用程序员不用关心数据的存储位置和存取方法,只需要知道数据的逻辑结构,这样就减轻了负担。