购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1.1
数据库系统概述

任务描述:掌握数据库系统的基本概念,理解数据库、数据库管理系统(Database Management System,DBMS)和应用程序之间的关系,了解关系数据库的特点和优势,并能区分比较流行的几种关系数据库的不同及它们各自的应用领域。

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。应用程序还能够处理用户的查询请求,比如学生查询星期一有哪些课程,应用程序首先生成一个课程查询请求,然后发送给数据库管理系统。数据库管理系统从数据库中进行查询,并将结果格式化后返回给用户。

1.1.2 关系数据库

关系数据库建立在关系数据模型的基础上,是借助集合等数学概念和相关方法来处理数据的数据库。现实世界中的各种实体以及实体间的各种联系均可用关系数据模型来表示,市场上占很大份额的Oracle、MySQL和DB2都是采用关系数据模型的数据库管理系统。

1.关系数据库基本概念

在关系数据库中,实体以及实体间的联系均通过单一的逻辑结构来表示,这种逻辑结构是一张二维表。在图1-4所示的学生选课系统中,实体和实体间的联系在关系数据库中的逻辑结构如图1-5所示。

图1-5 学生选课系统在关系数据库中的逻辑结构

关系数据库以行和列的形式存储数据,这一系列的行和列称为表,一组表组成了数据库。图1-6所示的员工信息表就是关系数据库,具体如下。

二维表:也叫作关系,是一系列二维数组的集合,用于表示存储数据对象之间的关系。它由纵向的列和横向的行组成。

行:也叫作元组或记录,在表中是一条横向的数据集合,表示一个实体。

列:也叫作字段或属性,在表中是一条纵向的数据集合。列也定义了表中的数据结构。

主属性:也叫作主键,对于关系中的某一属性组,它们的值唯一地标识一条记录。主属性可以是一个属性,也可以由多个属性共同组成。在图1-5中,学号是学生信息表的主属性,但是选课信息表中,学号和课程号共同唯一地标识了一条记录,所以学号和课程号一起组成了选课信息表的主属性。

图1-6 员工信息表

2.SQL

关系数据库的核心是其结构查询语言(Structure Query Language,SQL),SQL涵盖了数据的查询、操纵、定义、控制等操作,是一种综合的、通用且简单易懂的数据库管理语言。同时,SQL 又是一种高度非过程化的语言,可以让数据库管理者只需要指出做什么,而不需要指出该怎么做便完成对数据库的管理。SQL 可以实现数据库全生命周期的所有操作,因而自产生之日起就成为检验关系数据库管理能力的“试金石”。SQL包含以下4个部分。

(1)DDL

DDL包括CREATE、DROP、ALTER等动作。在数据库中使用CREATE来创建新表,使用DROP来删除表,使用ALTER来修改数据库对象。例如,创建学生信息表可以使用以下命令。

CREATE TABLE StuInfo(id int(10) NOT NULL,PRIMARY KEY(id),name
varchar(20),female bool,class varchar(20));

(2)DQL

数据查询语言(Data Query Language,DQL)负责数据查询,但不会对数据本身进行修改。DQL的语法结构如下。

SELECT FROM 表1,表2
where 查询条件 # 可以使用and、or、not、=、between、and、in、like等进行条件组合
group by 分组字段
having(分组后的过滤条件)
order by 排序字段和规则;

(3)DML

DML 负责对数据库对象来运行数据访问工作的指令集,以 INSERT、UPDATE、DELETE这3种分别表示插入、更新、删除的指令为核心。例如,向表中插入数据的命令如下。

INSERT 表名 (字段1,字段2,…,字段n,) VALUES (字段1值,字段2值,…,字段n值)
where 查询条件;

(4)DCL

数据控制语言(Data Control Language,DCL)是一种可对数据访问权进行控制的指令。它可以控制特定用户对查看表、预存程序、用户自定义函数等数据库操作的权限,由GRANT和REVOKE两个指令组成。DCL以控制用户的访问权限为主,其中的GRANT为授权指令,REVOKE为撤销授权指令。

3.关系数据库的优点

关系数据库已经发展数十年,是目前世界上应用最广泛的数据库系统,其理论知识、相关技术和产品均趋于完善。它的优点主要有以下3个。

容易理解:二维表结构非常贴近逻辑世界的概念,关系数据模型相对于层次数据模型和网状数据模型来说更易于理解。

便于使用:通用的SQL使得用户操作关系数据库非常方便。

易于维护:丰富的完整性解决了数据冗余和数据不一致的问题。关系数据库提供对事务的支持,能够保证系统中事务的正确执行;同时还提供事务的恢复、回滚、并发控制等功能,以及死锁问题的解决方法。

4.主流的数据库管理系统

(1)MySQL

MySQL是一种关系数据库管理系统。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个“大仓库”内,这样大大提高了数据的读/写速度和灵活性。

MySQL所使用的SQL是用于数据库访问的常用标准化语言。MySQL软件采用了双授权机制,分为社区版和商业版。由于体积小、速度快、使用成本低,尤其是开放源码等特点,中小型网站一般选择MySQL来开发自己的数据库。

(2)SQL Server

SQL Server 是一个可扩展的、高性能的、为分布式客户机/服务器计算而设计的数据库管理系统,实现了与Windows NT的有机结合,提供了基于事务的企业级信息管理系统方案。

SQL Server的主要特性如下。

① 高性能设计,可充分利用Windows NT的优势。

② 系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。

③ 强大的事务处理功能,采用多种方法来保证数据的完整性。

④ 支持对称多处理器结构、存储过程、开放式数据库互连,并具有自主的SQL。

(3)Oracle

Oracle是一种关系数据库管理系统,具有效率高、可靠性好、适应高吞吐量等特点。Oracle从Oracle Database 12c(c表示cloud,云)之后的版本都是基于云设计的,并引入了一种新的多承租方架构,该架构可以使用户轻松部署和管理数据库云。

(4)OceanBase

OceanBase 是由蚂蚁集团完全自主研发的国产原生分布式数据库,始创于2010年。OceanBase底层分布式引擎提供Paxos多数派协议和多副本特性,有较好的高可用和容灾能力。OceanBase产品具有云原生、强一致性、高度兼容Oracle / MySQL标准和主流关系数据库、低成本等特点,用户可以很容易从MySQL迁移到OceanBase上。OceanBase采用了一种读和写分离的架构,把数据分为基线数据和增量数据,比传统数据库更适合“双十一”购物节等短时间突发大流量的场景。

5.关系数据库的性能瓶颈

随着各类互联网业务的发展,关系数据库难以满足对海量数据的处理需求,存在以下不足。

高并发读写能力差:网站类用户的并发性访问量非常大,而一个数据库的最大连接数有限且设备硬盘的读/写能力有限,不能满足很多人同时访问数据库的需求。

对海量数据的读/写效率低:若表中数据量太大,则每次的读/写速率将非常低。

扩展性差:在关系数据库系统中,可通过升级数据库服务器的硬件配置来提高数据处理能力,即纵向扩展,但纵向扩展终会达到硬件性能的瓶颈,无法应对互联网数据爆炸式增长的挑战。还有一种扩展方式,那便是横向扩展,即采用多台计算机组成集群,共同完成对数据的存储、管理和处理。这种横向扩展的集群对数据进行分散存储和统一管理,可满足海量数据的存储和处理需求。但是,由于关系数据库具有数据模型、完整性约束、事务的强一致性等特点,因此它难以实现高效率的、易横向扩展的分布式架构。 rTUPlWjNQtgcgFyqgeb26aAdOoNoXYNzYWsSIwJiJPtGZ8QFC0qdMEv6hypjaIii

点击中间区域
呼出菜单
上一章
目录
下一章
×