数据库系统世界

数据库管理系统概述

下图描述了一个完整的DBMS结构,其中单线框表示系统构成,双线框表示内存中的数据结构,实线表示控制和数据流,虚线只表示数据流。由于图很复杂,因此分几个步骤来考虑细节。

首先,在顶部有两个命令源将命令发给DBMS:

1、通常的用户和应用程序,发出查询数据或修改数据命令。

2、数据库管理员,一个人或者一批人负责数据库结构或模式。

数据定义语言命令

第二种命令的处理比较简单,上图中右上方显示命令行踪的开始。例如,大学生注册数据库的管理员或DBA,可以确定该数据库中应该有一个表或关系,该关系的列是由学生、该学生选修的课程和该学生课程的成绩组成。DBA还可以确定有效成绩只能是A、B、C、D和F。这些结构和约束信息都是数据库模式的一部分。在上图中显示由DBA输入。由于这些命令能深深的影响数据库,所以DBA必须具备特殊的权限才能执行模式修改命令。模式修改数据定义语言(DDL)命令由DDL处理器分析,并且传送给执行引擎,然后执行引擎再通过索引/文件/记录管理器去修改元数据,也就是数据库的模式信息。

查询处理概述

与DBMS交互最主要的工作是沿着上图中左边的路径。用户或应用程序使用数据操作语言(DML)启动一些不影响数据模式的操作,但是这些操作可能会影响数据库的内容(例如修改操作)。DML语言由两个独立的子系统处理,有关这两个子系统的叙述如下:

查询处理

查询通过查询编译器完成语法分析和优化。编译的结果是查询计划或者是由DBMS执行并获得查询结果的操作序列,它们将被送给执行引擎。执行引擎向资源管理器发出一系列获取小块数据的请求,典型的小块数据关系是记录或元组。资源管理器知道数据文件、数据文件的格式和记录大小以及索引文件等。这些信息对于快速从数据文件中找到相应数据元素是有用的。

数据请求又被传送给缓冲区管理器。缓冲区管理器的任务是从二级存储器(通常是磁盘,永久的保存数据)中获取数据送入主存缓冲区中。一般情况下,页或“磁盘块“是缓冲区和磁盘间的传送单位。

为了从磁盘中得到数据,缓冲区管理器与存储器管理器进行通信。存储器管理器可能包含操作系统命令,但是更典型的是DBMS直接向磁盘控制器发命令。

事务处理

查询或者其他DML操作被组织成事务(transaction)。事务必须是原子性执行的单位,执行中的事务之间还必须相互隔离。任何一个查询或者修改操作本身就可以是一个事务。另外,事务的执行必须持久(durable),也就是说任何已完成事务的作用必须被保持,即使事务刚刚完成系统就失败的情况也得如此。事务处理器被划分成两个主要部分:

1、并发控制管理器(concurrency-control manager)或调度器(scheduler),保证事务的原子性和独立性。

2、日志(logging)和恢复管理器(recovery manager),负责事务的持久性。

存储器和缓冲区管理器

数据库数据平时存储在二级存储器中。计算机系统中的”二级存储器“一般指磁盘。可是,对数据的操作只能在主存中执行。存储器管理器的主要任务就是控制数据在磁盘上的位置存放和在磁盘与主存间的移动。

在一个简单的数据库系统中,存储器管理器可以就是操作系统的文件系统。可是,为了提高效率,DBMS常常直接控制磁盘上的存储,至少是在某些环境下如此。存储器管理器保持跟踪磁盘上的文件位置,根据请求从缓冲区管理器中获取含有请求文件的一个或多个磁盘块。

缓冲区管理器负责把可用主存分割成缓冲区,缓冲区是包含若干个页面的区域,其中可以传输磁盘块。于是,所有需要从磁盘中获取信息的DBMS组件,都或是直接或是通过执行引擎的方式,与缓冲区和缓冲区管理器交互。各个组件可能需要的信息种类有:

1、数据:数据库本身的内容。

2、元数据:描述数据库结构及其约束的数据库模式。

3、日志记录:对数据库新近修改的信息,该信息支持数据库的持久性。

4、统计数据:由DBMS收集和存储的关于数据特征的数据。例如,数据库大小、数据库中的值、数据库中各种关系和其他成分。

5、索引:支持对数据库中数据有效存取的数据结构。

事务处理

通常将一个或者一组数据库操作组成一个事务。事务的执行满足原子性,并且与其他事务的执行相互隔离。另外,DBMS还要保证事务的持久性:已完成事务的工作永不丢失。事务管理器接收来自应用的事务命令,这些命令告诉事务管理器事务何时开始,何时结束,以及应用期望的信息(例如,某些应用可能不需要原子性)。事务处理器执行如下一些任务:

1、记日志(logging):为了保证持久性,数据库的每一个变化都单独的记录在磁盘上。日志管理器(log manager)遵循一种设计原则,无论何时系统失败或”崩溃“,恢复管理器都能通过检查日志的中的修改记录,把数据库恢复到某个一致状态。日志管理器先把日志写入缓冲区,然后与缓冲区管理器协商以确保缓冲区在合适的时间被写入磁盘(磁盘数据可以在系统崩溃后幸存下来)。

2、并发控制(concurrency control):事务必须独立执行。但是大多数系统中,很多事务都是同时在执行。因此,调度器(并发控制管理器)必须保证多个事务的单个动作是按某个次序在执行,按该次序执行的效果应该与系统一次只执行一个事务一样。典型的调度器是通过在数据库的某些片段上加锁的方式工作。锁将防止两个事务用不正确的交互方式对同一数据片段存取。如上图所示,锁通常保存在主存的锁表中,调度器通过阻止执行引擎对已加锁的数据库内容的存取来影响查询和其他数据库操作。

3、消除死锁(deadlock resolution):当事务通过调度器获取锁以竞争其所需的资源时,系统可能会陷入一种状态。在该状态中,因为每个事务需要的资源都被另一个事务占有,所以没有一个事务能够继续执行。此时,事务管理器有责任调解,并删除(”回滚“或”终止“)一个或多个事务,以便其他事务可以继续执行。

事务的ACID性质
正确实现的事务通常应满足以下“ACID”性质:
A(Automicity)表示原子性,事务的操作要么全部被执行,要么全部不被执行
I(isolation)表示独立性,每个事务必须如同没有其他事务在同时执行一样被执行
D(durability)表示持久性,一旦事务已经完成,则该事务对数据库的影响就永远不会丢失
C(consistency)表示一致性,也就是说,所有数据库中数据元组之间的联系具有一致性约束,或说满足一致性期望(例如,事务执行结束后账户余额不能是负数),即期望事务能保持数据库的一致性。

查询处理器

 

用户可以感受到的最影响系统性能的DBMS部分是查询处理器。上图中查询处理器用两个组件表示:

1、查询编译器:它把查询转换成查询计划的内部形式。查询计划是在数据上的操作序列。通常,查询计划中的操作用“关系代数”运算实现。查询编译器主要由以下三个模块组成:

a) 查询分析器:查询分析器是从查询的文本结构中构造一个查询树结构。

b)查询预处理器:查询预处理器对查询进行语义查询(例如,确保查询中提到的关系确实存在),并且将查询语法树转换成表示初始查询计划的代数操作符树。

c)查询优化器:查询优化器将查询初始计划转换成在实际数据上执行最有效的操作序列。

查询编译器使用关于数据的元数据和统计数据,以确定哪种操作序列最快。例如,索引是一种特殊的便于数据存取的数据结构,如果索引存在,并且给定索引数据项值,则利用索引的查询计划将比其他计划更快。

2、执行引擎:

执行引擎:执行引擎负责执行选定查询计划的每一步。执行引擎与DBMS其他的大部分组件都直接地或通过缓冲区交互访问。为了对数据进行操作,它必须从数据库中将数据取到缓冲区,必须与调度器交互访问以避免存取已加锁的数据,它还要与日志管理器交互访问以确保所有数据库的变化都正确地被日志记录。

时间: 2024-09-29 18:51:29

数据库系统世界的相关文章

Android读书计划

人最怕的是,没有方向! 1.楔子: 本人接触Andrjoid开发也有一年多了,期间在一家外包公司独立开发了五六个项目.虽谈不上大牛,但自认小有所成.平时没什么爱好,就喜欢看看技术博客,试验各种开源代码,写写学习笔记. 最近感觉有点陷入瓶颈了,进步甚慢,却又不知该如何进一步提升自己.对于开发中遇到的很多问题,虽有所领悟,然不够系统,一些小知识点,也常有遗漏.觉得是时候系统的反思一下自己的知识体系了,于是决定制定一个回顾计划,综合自己看的博客.书籍,以及自己的开发实践,对一些常用的知识点进行整理.

Android学习笔记-回顾计划

人最怕的是,没有方向! 1.楔子: 本人接触Andrjoid开发也有一年多了,期间在一家外包公司独立开发了五六个项目.虽谈不上大牛,但自认小有所成.平时没什么爱好,就喜欢看看技术博客,试验各种开源代码,写写学习笔记. 最近感觉有点陷入瓶颈了,进步甚慢,却又不知该如何进一步提升自己.对于开发中遇到的很多问题,虽有所领悟,然不够系统,一些小知识点,也常有遗漏.觉得是时候系统的反思一下自己的知识体系了,于是决定制定一个回顾计划,综合自己看的博客.书籍,以及自己的开发实践,对一些常用的知识点进行整理.

数据库系统概念笔记-引言

 数据库管理系统(DBMS)由一个互相关联的数据的集合和一组用以访问这些数据的程序组成.这个数据集合通常称作数据库,其中包含了关于某个企业的信息.   DBMS的主要目标是要提供一种可以方便.高效地存取数据库信息的途径. 1.1 数据视图 1.1.1 数据抽象 一个可用的系统必须能高效地检索数据.这种高效性的需求促使设计者在数据库中使用了复杂的数据结构来表示数据,但是,有很多数据库用户不懂这些.为此,数据库的系统开发人员通过如下几个层次上的抽象来对用户屏蔽复杂性,以简化用户与系统的交互: 物理层

数据库系统

数据库系统经历了人工管理,文件系统,数据库和高级数据库四个阶段 数据库设计: 概念设计,实体,实体集,属性和标识符 逻辑设计,记录,文件,字段和关键码 数据模型是对现实世界进行抽象的工具,用于描述现实世界的数据,数据联系,数据语义和数据约束等方面内容 概念模型 表达了数据的整体逻辑结构,它是系统用户对整个应用项目涉及的数据的全面描述 是从用户需求的观点出发,对数据建模 独立与硬件与软件 是数据库设计人员与用户进行交流的工具 逻辑模型 是用某种DBMS软件对DB 表达了DB的整体逻辑结构,它是设计

数据库系统概论学习笔记(一)

时间:第一周     年级:大三    学生:南通大学网络工程何季生 2017.9.14 一.绪论 1.1数据库系统概述 1.数据 描述事物的符号记录称为数据.数据的含义称为数据的语义,数据与其语义是不可分的.例如93是一个数据,他可以是一位同学的成绩,也可以是他的体重,还可能是一个班的人数. 2.数据库 数据库顾名思义就是存放数据的仓库.严格来讲,数据是长期储存在计算机内,有组织的,可共享的大量数据的集合.数据库中的数据按一定的数据模型组织.描述和储存,具有较小的亢余度(redundancy)

数据库系统概念第六版引言习题

1  数据库的两个不足之处 A  数据库系统的建立需要更多的知识,技能,金钱,时间. B 数据库系统的复杂性可能产生不好的影响. 2 列出JAVA或C++之类的语言中的类型说明系统和数据库系统使用的数据定义语言的5个不同之处(暂时不懂) a. Executing an action in the DDL results in the creation of an object inthe database; in contrast, a programming language type dec

数据库系统的基本组成内容

数据库系统的组成如下图所示. 1)硬件 数据库系统的硬件包括计算机的主机.键盘.显示器和外围设备(例如打印机.光盘机.磁带机等).由于一般数据库系统所存放和处理的数据量很大,加之DBMS丰富的功能软件,使得自身所占用的存储空间很大,因此整个数据库系统对硬件资源提出了较高的要求.这些要求是:①有足够大的内存以存放操作系统.DBMS的核心模块.数据缓冲区和应用程序:②有足够大的直接存取设备存放数据(如磁盘),有足够的存储设备来进行数据备份:③要求计算机有较高的数据传输能力,以提高数据传送率. 2)软

Atiti 数据库系统原理 与数据库方面的书籍 attilax总结 v3 .docx

1.1. 数据库的类型,网状,层次,树形数据库,kv数据库.oodb2 1.2. Er模型2 1.3. Sql2 1.4. 聚合运算2 1.5. 索引btree,hash 全文哦2 1.6. 并发控制与lock2 1.7. Acid数据库完整性2 1.8. 关系模型2 1.9. 事务管理2 1.10. :1NF.2NF.3NF和BCNF 2 2. 参考数据库系统导论 (豆瓣).html2 3. 数据挖掘--概念与技术>.3 4. <数据库系统概念(原书第6版)(数据库系统方面的经典教材,被国外

【课程分享】Oracle数据库系统project师

对这个课程有兴趣的朋友能够加我的QQ2059055336和我联系 一.本课程是怎么样的一门课程 1.1.课程的背景 该课程是Oracle数据库系统project师培训课程 Oracle Database,又名Oracle RDBMS,或简称Oracle.是甲骨文公司的一款关系数据库管理系统.到眼下仍在数据库市场上占有主要份额. ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是眼下最流行的客户/server(CLIENT/SERVER)或B/S体系