《数据库系统实现》第一章DBMS系统概述 学习笔记

本文详细介绍了DBMS系统的发展、数据库管理系统的概念,包括数据定义语言命令、查询处理、主存和缓冲区管理以及事务处理。重点讲解了查询处理的编译器和执行引擎,以及事务的ACID特性。此外,还概述了本书的两大主题:数据库系统实现和现代数据库系统专题。
摘要由CSDN通过智能技术生成

第一章 DBMS系统概述

1.1 数据库系统的发展

数据库就是信息的集合。
数据库管理系统满足:

  1. 数据定义语言指定其模式schema(数据的逻辑结构)
  2. 查询语言来查询和修改数据
  3. 支持对大量数据长期存储
  4. 数据具有持久性,能从故障、错误中恢复
  5. 控制多个用户进行访问

在数据库中,关系(relation)指的是表。元组(tuple)指的是每一条记录,其是数据库的最小公民。属性(attribute)指的是表中的每一列。

关系数据库系统使得程序员不需要关心存储结构,查询用高级语言表示,提高了程序员的效率。

数据仓库目的是把分布于在不同数据库中的信息集成起来。将众多数据库中的信息进行翻译,周期性地拷贝到一个中心数据库中。

1.2 数据库管理系统概述

对于DBMS有两个不同的命令来源:
6. 普通用户和应用程序,对数据进行访问和修改
7. 数据库管理员(DBA),建立数据库的模式和结构
在这里插入图片描述

1.2.1 数据定义语言命令

DDL命令,决定数据库模式的一部分。由DDL处理程序进行分析,传给执行引擎,由执行引擎经过索引/文件/记录管理器去改变元数据。

1.2.2 查询处理概述

用户经过DML启动某个活动,不影响数据库模式,但是可能会影响数据库内容(如果是修改命令)。
DML语句被分为查询相应和事务处理两个子系统处理。

查询响应

查询编译器对查询进行分析和优化。得到的查询计划为DBMS为了回答查询采取的动作序列,被传给执行引擎。执行引擎向资源管理器发出对一系列小的数据单元(元组或者记录record)的请求。资源管理器掌握着存放关系(即表table)的数据文件、文件中的数据格式和记录大小、以及支持对数据文件快速查找的索引文件
查询数据的请求被传送给缓冲区管理器。**缓冲区管理器的任务是从可以持久地存储数据的磁盘中将数据的适当部分取到内存的缓冲区中。**通常,缓冲区和磁盘间的传输单位是页或者“磁盘块”。
缓冲区管理器和存储管理器进行通信,以从磁盘获取数据。存储管理器可能使用操作系统的命令,但是更通常的情况是,DBMS直接发命令给磁盘控制器。

事务处理

事务是组成一组的若干个查询和其他动作,是必须作为一个原子被孤立地执行的单位。事务必须是持久地。将事务处理器分为两个主要部分。

  1. 并发控制管理器或调度器 负责保证事务的原子性和孤立性
  2. 日志和恢复管理器 负责事务的持久性

1.2.3 主存和缓冲区管理器

数据库中的数据通常保存在磁盘中。然而数据必须放在内存中才能对其进行操作。存储管理器的任务是控制数据在磁盘上的位置以及在数据在磁盘和内存之间的移动。
简单的数据库系统中,存储管理器和底层操作系统的文件管理系统没什么区别。但为了提高效率,DBMS通常直接控制在磁盘上的存储。存储管理器跟踪文件在磁盘上所处的位置,获取到缓冲区管理器所要求的文件的磁盘块号。
缓冲区管理器负责将可利用的内存空间分割为缓冲区缓冲区是与页面大小相同的区域,磁盘块的内容可以被传送到缓冲区。这样,需要从磁盘得到的信息都可以通过执行引擎与缓冲区和缓冲区管理器交互。
DBMS需要的数据包括:

  1. 数据
  2. 元数据:描述数据库结构和约束的数据库模式
  3. 日志记录:关于数据库所做改变的信息,支持数据库的持久化
  4. 统计信息:关于数据库关系及其属性的大小取值等信息
  5. 索引:支持对数据进行高效存取的数据结构

1.2.4 事务处理

事务是一组数据库操作。事务管理器接收事务命令,得知事务什么时候开始和接收。
事务管理器执行下列任务:

  1. 日志记录 为了保证持久性,数据库的每一个变化都需要在磁盘上记录日志。日志可以帮助数据库恢复到某个一致的状态。日志开始时写入缓冲区,适当的时候由缓冲区管理器写入到磁盘。
  2. 并发控制 事务的执行必须在表明上看起来是孤立地。并发控制管理器保证多个事务的一个个动作以适当的顺序执行。典型控制器通过数据库的锁来维护并发,锁通常维护在内存中的封锁表中
  3. 死锁解决 当事务之间通过锁竞争时,可能会出现没有一个事务能够进行下去,因为每一个事务都需要另一个事务所持有的某个资源。事务管理器通过取消(回滚或终止)一个或多个事务,使得其他的事务能够进行下去。

事务的ACID特性

  • 原子性(Atomicity) 事务完全执行或者完全不执行
  • 孤立性(Isolation) 表明看起来每个事务都是在没有其他事务同时执行的情况下执行的
  • 持久性(Durability) 一旦事务完全了,其对数据库的影响不会丢失的
  • 一致性(Consistency) 所有的数据库都有一致性约束,AID特性可以保证一致性

1.2.5 查询处理器

查询处理器分为两个部分:

查询编译器

将查询翻译为一种内部形式,称为查询计划。查询计划是要在数据上执行的一系列操作。
通常查询计划中的操作是“关系代数”的实现。查询编译器分为三个部分。

  • 查询分析器 从文本形式的查询出发,建立一个树结构
  • 查询预处理器 对查询进行语义检查(例如检查查询中的表是否都存在),并进行某些树结构转换,把分析树转换为最初查询计划的代数操作树
  • 查询优化器 把最初的查询计划转换为对实际数据最有效的操作序列

查询编译器利用元数据和统计信息来确定哪一个操作序列可能是最快的。例如索引的存在。

执行引擎

负责执行选中的查询计划中的每一步。执行引擎与DBMS中的大部分模块都有交互,或者直接交互,或者通过缓冲区。为了对数据进行操作必须把数据取到缓冲区。需要和并发控制调度器交互以避免访问被加锁的数据。需要和日志管理器交互以确保对数据库的操作都记录了日志。

1.3 本书概述

分为两个部分。

第一部分:数据库系统实现

  • 存储管理。 如何利用磁盘的存储来组织数据以对数据进行高效访问。常用的B-树结构。
  • 查询处理。查询执行:用来实现构成查询操作的算法。查询编译:如何从一个查询的所有可能执行方法中选择一个高效的查询计划。
  • 事务管理。日志:为DBMS所做的事而维护可靠的记录,目的是为了崩溃后能进行恢复。调度:控制事务中事件的顺序来保证ACID特性。还有死锁和分布式事务。

第二部分:现代数据库系统专题

  • 搜索引擎如何工作
  • 信息集成 和数据库共享数据的方法
  • 数据挖掘
  • 数据流系统

1.4 数据库模型和语言回顾

1.4.1 关系模型回顾

关系是元组的集合,元组是值的列表。
元组作为行,列的头称为属性,表示元组中每一个分量的含义。关系名、属性名和属性类型称为该关系的模式。
在这里插入图片描述
上例的关系Movie的模式为

Movie(title, year, length)

1.4.2 SQL回顾

SQL查询的一般形式

SELECT <属性表>
FROM   <关系表>
WHERE  <条件>
GROUP BY <属性表>
HAVING   <条件>
ORDER BY <属性表>

查询结果计算如下

  1. from子句中的关系的元组的所有组合可能
  2. 不符合where子句的条件的元组过滤掉
  3. 如果有group by语句,则将剩下的元组按属性分组
  4. 如果有HAVING语句,按照条件检查每一个组,去掉不符合条件的组
  5. 按照select语句的说明,对于指定属性和属性上的聚集计算出结果。
  6. 按照order by属性对结果元组进行排序
子查询

sql提供的特性是在where、from、having子句中使用子查询。
子查询是一个完整的select-from-where语句。

视图

视图是对于不实际存储但在需要时从实际存储的关系构造出来的关系的描述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值