数据库学习笔记(一)数据库的基本概念
数据库学习笔记(一)数据库的基本概念
今天开始学习数据库知识,教材为数据库系统基础教程第三版。
第一章
名词解释:
1.数据库管理系统(DBMS):有效建立和维护大量数据的强大工具,并且能长期安全保存这些数据。
2.数据库:是由DBMS管理的数据的集合,是一群信息的集合。
DBMS的功能:
1.允许用户使用特殊的数据定义语言建立新的数据库,并说明它们的模式(数据的逻辑结构)。
2.使用合适的查询语言或数据操作语言为用户提供查询和更新数据的能力。
3.支持超大数据量的数据的长时间存储,并且在数据查询和更新时支持对数据的有效存龋
4.具有持久性,在面对故障错误时,数据库恢复保证数据的一致性。
5.多个用户对数据进行同时存取的时候,不允许一个用户的操作影响另一个用户(独立性),也不允许对数据的不完整操作(原子性)
数据库的发展:
1、早期(文件系统):
实现的功能:可以长期存储数据;允许存储大数据量数据。
没实现的功能:不保证数据不丢失;不提供数据的有效访问;没有对文件的查询语言;数据模式的支持也仅限于文件目录结构的建立;不能保证操作独立性
缺点:程序员直接面对数据的存储格式,不同的数据库系统使用不同的数据模型描述数据库中的信息结构,主要有基于树结构的层次模型和基于图结构的网状模型;均不支持高级查询语言,
2、关系数据库系统:
关系:将数据组织成表的形式呈现给用户
优势:程序员不必关心数据的存储结构,查询支持高级的语言表述
SQL(结构化查询语言):基于关系模型的查询语言。
3、小型DBMS(运行在PC上的):
XML:扩展的模型语言
文档的应用:常常使用XML,大量小文档的集合可以如同数据库,对文档的查询和操作不同于原来的关系数据库系统。
4、大型DBMS(企业级别):
与小型DBMS的区别主要在于数据库中存储的数据量级。
特殊的:对等文件共享系统使用普通的大型计算机网络存储和分发各种数据。网络中每个节点存储量不大,但是网络数据库存储数据量很大。
5、信息集成:
建立和维护数据的问题变成了信息集成问题:把包含在多个相关数据库中的信息连接在一起成为一整个数据库。在已存在的数据库之上再建立某种数据结构,以便于将分布在他们之中的信息整合。
方法:
1、创建数据仓库,通过合适的转换技术,将来自多个遗留的数据库的信息周期性地复制到中央数据库。
2、实现协调器或中间件,功能是支持各类数据库数据的整合模型,实现整合模型和实际数据库模型的信息转换。
数据库管理系统概述:
下图是一个完整的DBMS结构,单线框表示系统构成,双线框表示内存中的数据结构,实线表示控制和数据流,虚线只表示数据流,分为两块:
1、普通用户和应用程序,查询和修改数据命令
2、数据库管理员,复杂数据库结构和模式
DBA必须具有特定的权限才能执行模式修改命令,模式修改数据定义语言(DDL)命令由DDL处理器分析,并且传送给执行引擎,然后执行引擎再通过索引/文件/记录管理器去修改元数据(数据库的模式信息)。
查询处理概述:
用户|应用程序使用数据操作语言(DML)启动一些不影响数据库模式的操作,但是可能会影响数据库的内容(修改),或者从数据库中提取数据(查询),DML语言由两个独立的子系统处理。
查询处理:
通过查询编译器完成语法分析和优化,编译的结构是查询计划或是由DBMS执行并获得查询结果的操作序列,它们将被送给执行引擎。执行引擎向资源管理器发出一系列获取小块数据的请求,典型的小块数据关系是记录或元组。资源管理器知道数据文件、数据文件的格式和记录大小以及索引文件。这些信息作用域快速从数据文件中找到相应的数据元素。
数据请求又被传送给缓冲区管理器。从二级存储器(通常为磁盘)中获取数据送入主存缓冲区中, 页或者磁盘块是缓冲区与磁盘间的传送单位。
缓冲区管理器与存储器管理器进行通信,从而从磁盘中得到数据,存储器管理器可能包含操作系统命令,更常见的是DBMS直接向磁盘控制器发命令。
事务处理:
1、查询或其他DML操作被组织成事务。
2、事务是原子性执行的单位(原子性:不可间断的操作)
3、执行中的事务还必须互相隔离。任何一个查询或修改操作本身就是一个事务。
4、事务必须持久,任何已完成的事务的作用必须被保持
事务的两个主要部分:
1、并发控制管理器或调度器,保证事务的原子性和独立性
2、日志和恢复管理器,负责事务的持久性
存储器和缓冲区管理器
数据库数据通常存储在二级存储器(一般是磁盘)中。对数据的操作在主存中执行。存储器管理器的任务就是控制数据咋磁盘上的位置存放和在磁盘与主存之间的移动。
在一个简单的数据库系统中,存储器管理器可以是操作系统下的文件系统。存储器管理器保持跟踪磁盘上的文件位置,根据请求从缓冲区管理器中获取含有请求文件的一个或多个磁盘块。
缓冲区管理器负责把可用主存分割成缓冲区,缓冲区是包含若干个页面的区域,其中可以传输磁盘块。
所有从磁盘中获取信息的DBMS组件,都是直接或通过执行引擎的方式,与缓冲区与缓冲区管理器交互。
组件信息种类:
1.数据:数据库本身的内容
2.元数据:描述数据库结构及其约束的数据库模式
3.日志记录:对数据库新近修改的信息,该信息支持数据库的持久性
4.统计数据:由DBMS收集和存储的关于数据特征的数据
5.索引:支持对数据库中数据有效存取的数据结构
事务处理:
一个或一组数据库操作组成一个事务。事务管理器接受来自应用的事务命令,这些命令告诉事务管理器事务何时开始,何时结束,以及应用期望的信息
1.记日志:为了保证持久性,数据库每个变化都要单独记录在磁盘上。日志管理器的原则:当系统崩溃时,恢复管理器可以通过检查日志中的修改记录,把数据库恢复成某个一致状态。日志管理器先将日志写入缓冲区,然后与缓冲区管理器协商以确保缓冲区在合适的时间被写入磁盘(磁盘数据可以在系统崩溃后保留)
2.并发控制:事务必须独立执行。大多数系统中,事务是同时执行的。
调度器(并发控制管理器)必须保证多个事务的单个动作是按某个次序在执行,保证按次序执行的效果与系统一次只执行一个事务一样。典型的调度器是通过在数据库的某些片段上加lock的方式。lock用来防止两个事务用不正确的交互方式对同一数据片段存取,lock通常保存至lock table里。调度器通过阻止执行引擎对已加锁的数据库内容的存取来影响查询和其他数据库的操作。
3.消除死锁:当事务通过调度器获取lock以竞争其所需的资源的时候,系统可能会陷入一种状态,该状态中,每个事务需要的资源都被另一个事务占有,即死锁状态,事务管理器需要进行调解,删除(回滚或者终止)一个或多个事务,来解除死锁。
事务的ACID性质:
A:原子性,事务的操作必须全部执行,或者全部不执行,即不能中断
C:一致性,所有数据库的数据元组之间的联系具有一致性的约束,或者满足一致性期望,即事务能保持数据库的一致性
I:独立性,每个事务必须如同没有其他事务同时执行一样被执行
D:持久性,一旦事务完成,该事务对数据库的影响就不会消失
查询处理器:
1.查询编译器:把查询转换成查询计划(内部形式),查询技术是在数据上的操作序列,通常用关系代数实现
查询编译器的模块:
1.1.查询分析器:从查询的文本结构中国构造一个查询树结构
1.2.查询预处理器:对查询进行语义检查,并且将查询语法树转换成表示初始查询计划的代数操作符树
1.3. 查询优化器:将查询初始计划转换成在实际数据中执行的最有效的操作序列
查询编译器使用关于数据的元数据和统计数据,来确定哪种操作序列最快
2.执行引擎:执行选定查询计划的每一步,执行引擎与DBMS中的大多数组件都直接的或通过缓冲区交互访问。为了对数据进行操作,必须从数据库中将数据取到缓冲区,必须与调度器交互访问以避免存取已加锁的数据,还要与日志管理器交互访问以确保所有数据库的变化都被日志记录。