第1章 引言
数据库系统用于管理: 1. 具有很高价值的数据集合, 2. 相对庞大的数据集合
常用的数据库方式:OLTP(online trasaction processing) , OLAP
1.1 文件系统和数据库的区别
文件系统由操作系统控制,个人认为最大的区别就是,文件系统只能存储数据而不能感知数据。因此它具有下面几个缺点:
- 数据冗余和不一致性。也就是说可能重复存储或者存储的信息不具有一致性。
- 数据访问困难,主要原因是它没有很好的管理数据。
…
这段内容并不影响我们对数据库的理解,其实也并不重要,我们只需要知道。想要很好的管理并且使用数据,我们需要拥有数据库。
1.2 数据抽象和数据库语言
数据库系统抽象成三层:
- 物理层 物理层是数据实际上如何存储的抽象,在物理层会有一些底层的数据结构,表示数据是如何存储的。例如 索引 数据库元数据等信息都会在物理层进行表述。
- 逻辑层 比物理层稍高一层,描述数据库存储什么数据以及数据间的关系,是逻辑层面的,程序员一般本层进行操作。
- 视图层 最高层次的抽象,描述数据库的某个部分,逻辑层需要大量描述数据之间相关的关系,而视图层只需要关注用户想要关注的部分信息,例如某个学校由多少学生,这些都是视图层需要做的,普遍用于信息展示。
针对数据库的操作,数据库提供了数据定义语言(DDL),数据操作语言(DML)。数据定义语言例如完整性约束等,说明数据库系统所采用的存储结构和访问方式,DDL的输出在数据字典当中,数据字典包括元数据,也就是描述数据库的数据,数据字典可以通俗的理解为一些存放关键信息的空间。而数据操作语言则是对数据库数据的具体操作,著名的数据操作语言即是SQL语句。
1.3 应用程序对数据库的访问
由于SQL语句并不能支持普适性的计算,例如从用户这获取输入等基本操作,因此应用程序往往采取使用宿主语言,例如C++,Python等,在其中内嵌SQL语句来支持数据库访问。为什么访问数据库,需要将DML从宿主机发送到执行这些语句的数据库,这一般采用应用程序接口来实现,著名的JDBC就是相应的Java语言提供的接口。
数据库系统被划分成多个模块,大致可以分为存储管理器,查询处理器,事务处理器。
- 存储管理器就是管理最底层的数据是如何存储的,并且提供相应操作的接口,存储管理器件包括:权限与完整性管理器,事务管理器(其实也就是维护了相应的信息),文件管理器(管理磁盘存储空间的分配),缓冲区管理(这在后面将会有一大章讲解),数据字典等。
- 查询处理器主要包括DDL解释器,DML编译器,查询执行引擎。前两个就是将语句翻译成查询执行引擎能够理解的形式,然后由查询执行引擎进行执行,结果就是操作了存储管理器部分,维护相应的文件。
- 事务管理器,这个主要讲究的是比较高级的事务概念,与存储管理器有着不同的理解,他更多的从逻辑层来掌控事务,维护事务的ACID性质,负责故障恢复等,而前文所指更多表示具体的物理层实现。
上图是系统的整体架构。
1.4 总结
本文是对《数据库系统概念》一书第一章的总结与提炼,揭开了数据库神秘的面纱,后面内容将会更将精彩,这本书主要讲述了传统数据库的基本概念,是数据库入门的一本佳作,配套CMU15445课程食用更佳。