1. 数据库系统
[toc]
1. 数据库设计阶段:数据将设计阶段
2. 关系代数:关系代数运算、关系代数与SQL结合考察
3. 规范化理论:候选关系式、范式、模式分解、其他
4. 并发控制:并发控制
5. 数据库扩展技术:分布式数据库、数据库分区、数据仓库与数据挖掘、联邦数据库、NoSQL、内存数据库、数据库性能优化、大数据
6. 数据备份与恢复:数据备份与恢复
1.1. 数据库模式
三级模式-两层映射
- 外模式(视图、用户模式、用户视图)->概念模式(DBA视图)->内模式(内部试图)
- 外模式-概念模式映射 概念模式-内模式映射
视图
- 数据库试图是一个虚拟表,其内容由查询定义。但是试图并没有真正存储这些数据,而是通过查询原始表动态生成所需要的数据
- 优点:能简化用户操作、使用户能以多角度看待同一数据
- 缺点:查询之后再展示效率比较低
数据库设计过程
- 需求分析(数据流图、数据字典、需求说明书)
- 概念结构设计(ER模型)
- 逻辑结构设计(关系模式)
- 物理设计
1.2. ER模型
关键
- 属性
- 实体
- 联系
1.3. 关系代数
关系代数运算
- 并
- 交
- 差
- 笛卡尔积
- 投影
- 选择
- 自然连接
1.4. 规范化理论
价值与用途
- 非规范化的关系模式:数据冗余、更新异常、插入异常、删除异常
函数依赖
- 部分函数依赖:多个元素的主键才有部分函数依赖
- 传递依赖
键
- 候选键
- 主键:唯一标识元组的属性集合
- 外键:其他关系的主键
范式
- 1NF:属性值都是不可分的原子值
- 2NF:消除非主属性对候选键的部分依赖
- 3NF:消除非主属性对候选键的传值依赖
- BCNF:消除主属性对候选键的部分和传递依赖,左侧决定因素必须包括候选码
无损分解
- 保持函数依赖分解
- 无损分解
反规范化
- 由于规范化会使得表不断的拆分,从而导致数据表过多,会增加查询的工作量。
- 技术手段:增加派生性冗余列、增加冗余列、重新组表、分割表(水平分割、垂直分割)
1.5. 并发控制
事务的特性
- 原子性
- 一致性
- 隔离型
- 持续性
并发产生的问题
- 丢失更新
- 不可重复读
- 脏数据
封锁协议
- S锁:读锁、共享锁
- X锁:写锁、排他锁、独占锁
- 一级封锁协议:事务T在修改数据R前必须先对其加X锁,直到事务结束才释放。可防止丢失修改。
- 二级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,读完后即可释放S锁。可防止丢失修改,还可防止读脏数据。
三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可防止丢失修改,还可防止读脏数据、防止数据重复读。
两段锁协议:可串行化、可能发生死锁。
1.6. 数据库完整性约束
约束
- 实体完整性约束:主键唯一且为空
- 参照完整性约束:外键,其他关键的主键,或者为空
- 用户自定义完整性约束
- 针对复杂的约束,系统提供了触发器机制,通过用户编程实现。
1.7. 数据库安全性
- 用户标识与坚定
- 存取控制
- 密码存储和传输
- 视图的保护
- 审计
数据备份
- 冷备份:数据库在停止状态下,将数据库的文件全部备份下来
- 热备份:数据库在运行状态下,将数据库的文件全部备份下来
- 完全备份:备份所有数据
- 差量备份:仅备份上一次完全备份之后变化的数据
- 增量备份:备份上一次备份之后变化的数据
- 影子拷贝:该策略假设在某一个时刻只有一个活动的事务,首先对数据库做副本(称为影子副本),并在磁盘上维护一个dp_pointer指针,指向数据库的当前副本。对于要执行写操作的数据项,数据库系统在磁盘上维护数据库的一个副本,所有的写操作都在数据库副本上执行,而保持原始数据库不变,如果在任一时刻操作不得不中止,系统仅需要删除新副本,原数据库副本没有受到任何影响。
- 基于日志的延迟修改技术(deferred-modification technique)的设计与恢复过程。该技术通过在日志中记录所有对数据库的修改操作,将一个事务的所有写操作延迟到事务提交后才执行,日志中需要记录“事务开始”和“事务提交”时间,还需要记录数据项被事务修改后的新值,无需记录数据项被事务修改前的原始值。当系统发生故障时,如果某个事务已经开始,但没有提交,则该事务对数据项的修改尚未体现在数据库中,因此无需做任何恢复动作。
1.8. 分布式数据库
分片透明性
- 分片透明性
- 位置透明性
- 局部数据模型透明性
分布式数据库管理系统DDBMS-组成
- LDBMS(局部数据库管理系统)
- GDBMS(全局数据库管理系统)
- 全局数据字典
- 通信管理Cm
分布式数据库管理系统-结构
- 全局控制集中的DDBMS
- 全局控制分散的DDBMS
- 全局控制部分分散的DDBMS
关系数据库与NoSQL数据库对比
-- | 关系数据库模式 | -- |
---|---|---|
并发支持 | 支持并发、效率低 | 并发性能高 |
存储与查询 | 关系表方式存储、SQL查询 | 海量数据存储、查询效率高 |
扩展方式 | 向上扩展 | 向外扩展 |
索引方式 | B树、哈希等 | 键值索引 |
应用领域 | 面向通用领域 | 特定应用领域 |
NoSQL
类型 | eg |
---|---|
键值 | redis |
列存储数据库 | HBase |
文档型数据库 | MongoDB |
图形数据库 | Neo4j |