数据库学习:数据库概念
数据库学习:数据库概念
之前学习的数据知识比较散,最近又重新开始学了,希望这个笔记能好好总结数据库的知 识点,对数据库有一个新认识,新了解。
数据库是什么
这个“数据库”在不同的语境表达的是不一样的东西,平常说安装一个数据库(软件),表 达 的是数据库管理系统 DBMS(Database Management System),从数据库里面取数 据,说的是DBMS 里保存有组织的数据的容器 Database。
数据库系统(Database System)
由上面可知,日常访问数据库的数据必须要通过 DBMS,就像冰箱里面有食物,必须要打 开冰箱才能拿到食物,或者往冰箱里面存放食物。除了 DBMS 和 Database 以外,组成一 个数据库系统,还需要额外的数据库客户端应用,利用客户端程序连接 DBMS 对 Database 进行操作。由此可见,整个数据库系统大致可以 3 层:Database 的物理存储层(文件系 统),DBMS 的逻辑控制层,客户端程序的视图展示层。
数据库系统解决什么问题
在没有数据库系统之前,普遍的保存信息数据的方法是系统文件中,但是这种方法存在以 下缺点:
- 数据冗余和不一致;
- 数据难以访问;
- 数据隔离性差;
- 数据存在完整性问题;
- 数据操作存在原子性问题;
- 并发访问异常问题;
- 安全性问题;
为了解决这几方面的问题,促使数据库系统的出现,让人们在存取,管理数据变得安全, 高效。
DBMS 构件
由于 DBMS 在数据库系统中位置,以及数据库系统需要面对的问题,可以看出 DBMS 大致 的功能设计和系统构件:
- 查询处理器(Query Processor):查询处理器支持 SQL(Structure Query Language)
结构化查询语言,SQL 是 DBMS 的标准语言,虽然各个 DBMS 在语法上大同小异,但
是基本是通用的。SQL 在用途上可以分为 3 大类:定义 Database 框架或结构的
DDL(Data Definition Language),存取数据(Data)的 DML(Data Manipulation
Language),以及 DBMS 自身管理控制的 DCL(Data Control Language)。查询处理器
包含以下模块:
- DDL 解释器;
- DML 编译器;
- DML 优化器;
- 查询求值引擎(Query Evaluation Engine)。
- 存储管理器(Storage Manager):存储管理器主要负责存储,获取和更新数据库的数
据,由于其需要与底层的文件系统打交道,所以它需要实现数据文件(Data files),
数据字典(Data dictionary)和索引(Indies),的组件主要包括:
- 授权和完整性管理器(Authorization and integrity manager):用来检查用户权限 和数据的完整性约束;
- 事务管理器(Transaction manager):用来保证数据一致性,即使遇到系统失败,以及 并行的数据库事务处理;
- 文件管理器(File manager):为数据分配物理存储空间以及用于表示存储在磁盘上的 数据信息;
- 缓冲管理器(Buffer manager):用于从磁盘获取数据到内存并决定哪些数据需要缓存 到内存,这是数据库系统最重要的一部分。
数据库事务管理
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要 么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账 号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看 成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致 性。针对上面的描述可以看出,事务的提出主要是为了解决并发情况下保持数据一致性的问 题。事务具有以下4个基本特征。
- 原子性(Atomic):事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要 么全部成功,要么全部失败。
- 一致性(Consistency):只有合法的数据可以被写入数据库,否则事务应该将其回滚 到最初状态。
- 隔离性(Isolation):事务允许多个用户对同一个数据进行并发访问,而不破坏数据 的正确性和完整性。同时,并行事务的修改必须与其他并行事务的修改相互独立。
- 持久性(Durability):事务结束后,事务处理的结果必须能够得到固化