分布式数据库基础与应用
上QQ阅读APP看书,第一时间看更新

1.1.1 数据库系统的基本概念

数据库技术是一门研究数据库的结构、存储、设计、管理和使用的科学。数据库系统(Database System,DBS)是采用数据库技术的计算机系统,由计算机硬件、软件和数据资源组成,能实现有组织地、动态地存储大量关联数据,并支持多用户的访问。数据库系统由用户、数据库应用程序、数据库管理系统和数据库组成,如图1-1所示。

图1-1 数据库系统

1.数据库

数据库是长期存储在计算机内的、有组织的、统一管理的、可以表现为多种形式的、可共享的数据集合。这里的“共享”是指数据库中的数据可被多个不同的用户使用多种不同的编程语言、为了不同的目的而同时存/取,甚至同一数据也可以同时被存/取;“集合”是指某特定应用环境中的各种应用的数据及其之间的联系全部按照一定的结构形式进行集中存储。数据库中的数据按一定的数据模型进行组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可被各种用户所共享和使用。

数据库技术用数据模型的概念来描述数据库的结构和语义,以对真实世界的数据进行抽象。根据不同的数据模型,数据库可被分成3种:层次数据模型、网状数据模型和关系数据模型。

(1)层次数据模型

早期的数据库多采用层次数据模型,故称层次数据库,其示例如图1-2所示。层次数据库用树形(层次)结构表示实体类型及实体间的联系。在这种树形结构中,数据按自然的层次关系被组织起来,以反映数据之间的隶属关系。树中的节点是记录类型(记录类型代表一个实体,如部门实体),每个非根节点只有一个父节点,而父节点可同时拥有多个子节点,父节点和子节点的关系是它们之间的数量之比为1∶N。因为层次数据模型的结构简单,在处理实际问题时,数据间的关系如果简单地通过树形结构来表示,则会造成数据冗余度过高,所以层次数据模型逐渐被淘汰。

图1-2 层次数据库示例

(2)网状数据模型

采用网状数据模型的数据库称为网状数据库,通过网络结构表示数据间的联系,其示例如图1-3所示。图1-3中的节点表示数据记录(数据类型和记录类型的含义相同),连线表示不同的节点数据间的联系。这种数据模型的基本特征是:节点之间没有明确的从属关系,一个节点可与其他多个节点建立联系,即节点之间的联系是任意的;任意两个节点之间都能发生联系,即多对多的联系。在网状数据模型中,节点之间的关系比较复杂,而且随着应用范围的扩大,数据库的结构将变得越来越复杂,不利于用户掌握。

图1-3 网状数据库示例

(3)关系数据模型

关系数据模型开发得较晚。1970年,IBM公司的研究员埃德加·弗兰克·科德(Edgar Frank Codd)在期刊Communication of the ACM上发表了一篇名为“A relational model of data for large shared data banks”的论文,提出了关系数据模型的概念,这奠定了关系数据模型的理论基础。关系数据模型是一种通过满足一定条件的二维表格来表示实体集合以及数据间联系的模型,采用关系数据模型的数据库称为关系数据库,其示例如图1-4所示。在图1-4中,学生、课程和教师是实体集合,选课和任课是实体间的联系(关系)。学生实体包括学号、姓名等属性,其中,学号是主键;课程实体包括课程号、课程名等属性,其中,课程号是主键。学生实体和课程实体中存在选课的联系(关系),这种联系(关系)包括一对一、一对多、多对多等几种。

关系数据库使用灵活方便,适应面广,因此发展十分迅速。目前流行的一些数据库系统,如Oracle、Sybase、Ingress、Informix等属于关系数据库。

图1-4 关系数据库示例:学生选课系统

2.数据库管理系统

数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库。数据库管理系统也是一款庞大且复杂的产品,大多数是由软件供应商授权或提供的。例如, Oracle公司的Oracle和MySQL、IBM公司的DB2、微软公司的Access和SQL Server,这些数据库管理系统占据了大部分的市场份额。

数据库管理系统对数据库进行统一管理和控制,以保证数据库的安全和完整。用户通过数据库管理系统访问数据库中的数据,数据库管理员也通过数据库管理系统进行数据库的维护。数据库管理系统允许多个应用程序或多个用户使用不同的方法在同一时刻或不同时刻去建立、修改和询问数据库中的数据。数据库管理系统的主要功能如下。

(1)数据定义

数据库管理系统提供数据定义语言(Data Definition Language,DDL),支持用户对数据库的结构进行定义、创建和修改。

(2)数据操纵

数据库管理系统提供数据操纵语言(Data Manipulation Language,DML),实现了用户对数据的操纵功能,如插入、删除、更新等操作。

(3)数据库的运行管理

数据库管理系统提供数据库的运行控制和管理功能,其中包括多用户环境下事务的管理和自动恢复、并发控制和死锁检测、安全性检查和存取控制、完整性的检查和执行、运行日志的组织和管理等。这些功能保障了数据库系统的正常运行。

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

数据库管理系统要分类组织、存储和管理各种数据,就需要确定以何种文件结构和存取方式来组织这些数据,实现数据间的联系。数据组织和存储的基本目标是提高存储空间的利用率,选择合适的存取方法提高存取效率。

(5)数据库的维护

数据库的维护包括数据库数据的载入、转换、转储、恢复,数据库的重组织和重构,以及性能的监控和分析等功能,这些功能由不同的应用程序来完成。

(6)通信

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

数据库管理系统是数据库系统的核心,是管理数据库的软件,是实现把用户视角下的、抽象的逻辑数据处理转换成计算机中具体的物理数据处理的软件。有了数据库管理系统,用户可以在抽象意义下处理数据,而不必考虑这些数据在计算机中的布局和物理位置。

(7)ACID

ACID 是指数据库管理系统在写入或更新资料的过程中,为保证事务(Transaction)是正确可靠的所必须具备的4个特性:原子性(Atomicity,又称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

在数据库系统中,一个事务是指由一系列数据库操作组成的一个完整的逻辑过程。以银行转账为例,从原账户扣除的金额以及向目标账户添加的金额所对应的两个数据库操作的总和构成了一个完整的逻辑过程,这个过程称为一个事务,具有ACID特性。ACID 的概念在《信息技术 开放系统互连 分布式事务处理 第1部分:OSI TP 模型》(ISO/IEC 10026—1∶190.92)中有所说明。

3.数据库应用程序

数据库系统还包括数据库应用程序(简称应用程序)。应用程序最终是面向用户的,用户可以通过应用程序输入数据以及处理数据库中的数据。例如,在学校选课系统中,管理员用户可以创建课程信息,学生用户可以修改课程信息,应用程序将所执行的操作提交给数据库管理系统,由数据库管理系统将这种用户级别的操作转化成数据库能识别的DDL。应用程序还能够处理用户的查询请求,比如学生查询星期一有哪些课程,应用程序首先生成一个课程查询请求,然后发送给数据库管理系统。数据库管理系统从数据库中进行查询,并将结果格式化后返回给用户。