《数据库系统概念》2-存储、事务等的简介

 

 

1、关系型数据库简介
a)DML
SQL语言是非过程的,一次查询中,能够输入多张表,但结果只是一张表。好比
select instructor.name
from instructor
where instructor.dept_name=’history’,
查询语句定义了要查找dept_name列为history的数据,并显示name列,执行后获得的是一张表,只有一个name列,每一个符合dept_name=’history’筛选条件的数据做为一行。
b) DDL
DDL能够定义表、约束、断言等,好比有以下建立表的语句:
create table department(
dept_name char(20),
building char(15),
budget numeric(12,2));
建立了表department和它的列,并指定了各列的数据类型。DDL语句会同时更新数据字典。

c) 从应用程序访问数据库
SQL语句没有通用的图灵机那么强大,有不少计算是SQL没法作到的,好比接收用户输入、显示内容、网络通信等,这些功能必须使用像c、c++等宿主(host)语言来实现,而后在程序中嵌入SQL语言来访问数据库。
从应用程序访问数据库有两种方式:
提供应用程序接口来传递DML、DDL,而后取回结果。好比c语言的ODBC、java的JDBC等;
在应用程序中使用DML预编译器,而后经过扩展宿主语言的语法来嵌入DML调用。

2、数据库设计
需求分析阶段、概念设计阶段和实现阶段。
a)在概念设计阶段,要选择数据模型,将需求转化为schema,这个阶段的重点是对数据和数据关系进行描述。这个阶段要解决使用哪些(what)字段和怎样(how)组织这些字段的问题,前者是商业问题,后者才是计算机科学问题。
关于组织字段的的方式一般有两种,一种是使用E-R模型,一种是使用算法自动生成表。
这个阶段设计的schema须要知足对数据增删改查的要求,
b) 实现阶段,包括逻辑设计和物理设计两步,逻辑设计将高度抽象的概念模型转换为数据库实现,而后物理设计则解决文件的组织、存储结构等问题。
c) 很差的设计会形成信息的冗余以及缺少表达某些信息的能力:java

好比这张表同时包含了教师(id,name,salary)和部门信息,history信息在两行中都有,修改history的budget时须要两行都修改;而若是咱们想增长一个部门时,就会暴露出这个设计表达能力不足的问题,由于只有先增长一个教师才能增长部门。

3、数据存储和检索
对一个数据库系统来讲,存储管理器和查询处理器是很是重要的两部分。
a) 存储管理器
数据存储在硬盘上,CPU的和内存的速度大于硬盘的读取速度,因此它须要尽量地减小数据在硬盘与内存之间的转移,并负责将DML语句翻译成物理层的命令。即存储管理器负责数据的增删改查,它包含的模块或功能有:
权限及完整性管理器:负责检查完整性约束、控制用户访问权限;
事务管理器:用于保证系统在发生故障时的一致(正确)状态,以及保证并发事物无冲突地执行;
文件管理器:负责硬盘空间的分配并管理保存在硬盘上的数据结构;
缓存管理器:负责将数据从硬盘读取到内存,并决定将哪些数据缓存到内存。缓存管理器是数据库系统的重要部分,有了缓存管理器,数据库才可以处理比内存容积大得多的数据。
存储管理器所操做的文件类型有:
数据文件:数据库自己
数据字典:对schema的描述
索引:用于提升检索效率,索引维护了一系列指向特定数据的指针

b) 查询处理器
包含多个部分:
DDL翻译器:翻译DDL指令并记录到数据字典
DML编译器:将DML语句编译成查询评估引擎能理解的低级指令。DML语句每每能够有不一样的翻译,这些翻译的执行结果相同但性能不一,DML编译器也负责查询优化,选择性能最高的翻译方式。
查询评估引擎:执行由DML编译器生成的低级指令

4、事务管理
a) 某些对数据的的操做经常会造成单一的逻辑工做单元,好比转帐,从A帐户扣款M元,而后给B帐户增长M元,这两步操做必需要么都成功,要么都失败,这样的要求也称为原子性(atomicity);另外A、B帐户的总和在操做事务先后保持不变,这称为一致性(consistency)。事务操做必须知足原子性和一致性,在操做过程当中容许暂时地违背一致性(好比转帐,A、B帐户的增减须要过程)。
b) 一致性由开发人员来保证,而原子性由数据库自身来保证;
对于转帐操做来讲,开发人员须要合理地划分操做步骤,好比讲之分为从A帐户转出和给B帐户转入两步,若是将这两步划分为一个事务,则符合一致性,若是任何一步独立,则会违背一致性;

c) 数据库的恢复管理器负(recovery manager)负责原子性,实际应用中,事务不免会失败,这时要屏蔽失败的事务对数据库的影响(回滚到失败前的状态failure recovery)。
并发控制器(concurrency-control manager),在遇到事务须要并发执行时,没法保存操做前的状态,这时由并发控制器经过控制事务间的交互来保证一致性。
恢复管理器和并发控制器组成了事务管理器。

5、数据库结构(database architecture)
数据库的结构多种多样,好比有集中式(centralize)、服务端-客户端式、并行式(parallel)、分布式(distrubuted)等。
数据库的通用结构如图:c++

6、数据库的普通用户和管理员
数据库的用户能够分为普通用户(user)和管理员(administrator)
a)普通用户及对应的用户接口
依据用户指望的与数据库的交互方式能够进一步分为四类,对应有不一样的用户接口
无经验的用户(naive user):使用事先写好的程序与数据库交互,用户接口一般为表单;
开发者:负责编写数据库交互界面;
熟练的用户(sophisticate):好比数据分析员,使用专业的分析软件或直接写SQL来与数据库交互;
专门的用户(specialized user),编写特殊的数据库应用的人员,好比计算机辅助设计系统、知识库、专家系统、存储复杂数据结构(声音、图像)的系统等。
b)管理员(DBA)
一般DBA能够作的操做包括:
定义schema
定义数据的存储结构和访问方式
修改schema和数据的物理组织方式
访问权限控制
平常维护,好比按期备份、确保硬盘空间充足、监控数据库高效运行等

学习资料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan算法

相关文章
相关标签/搜索