系统架构师(软考)----数据库基础

数据库系统结构

三级模式

外模式:有多少个用户就有多少个 外部视图 用户看到的或使用到的那部分数据
概念模式:全局只有一个 全体数据的逻辑结构
内模式:内部视图 存储记录的类型、存储域
两级映像: 外模式映像 内模式映像

独立性

逻辑独立性: 模式改变时,数据库管理员对各个外模式/模式的映像做相应的改编,可以使外模式保持不变
物理独立性: 存储结构改变了,由数据库管理员对模式/内模式映像做相应的改变可以使模式保持不变

聚簇索引

主文件基于非主码的字段排序存储

数据模型

概念模型

E-R模型(Entity-Relation 实体联系)

基本数据模型

用于DBMS实现
1、层次模型
2、网状模型
3、关系模型
4、面向对象模型
数据结构\数据操作\数据约束条件
1、实体完整性
2、参照完整性
3、用户定义完整性

关系型数据库

概念

1、关系: 二维表
2、元组: 一行数据 记录
3、属性: 一列 字段
4、域: 取值范围
5、关键字: 主键 一列或者多列组成
6、关系模式: 对关系的描述

关系代数

集合运算符

并、差、交、笛卡尔积

专门的关系运算符

选择(选择行)、投影(选择列)、连接

自然连接

会去除重复属性列

等值连接

包含重复属性列

外连接

建立在自然连接之上,包含左外、右外、完全外连接

函数依赖

概念

设R(U)是在属性U上的关系模式,X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r中的任意两个元组在X上的属性值相等,那么在Y上的属性值也相等,则称“X函数确定Y”或“Y函数依赖于X”,记做X->Y。X称为这个函数依赖的决定属性组,也称为决定因素

依赖分类

当X->Y且Y⊈X则称X->Y是非平凡函数依赖
当X->Y且Y⊆X则称X->Y是平凡函数依赖
完全函数依赖、部分函数依赖、传递依赖

Armstrong公理

A1自反律: Y⊆X⊆U 则 X->Y
A2增广律:若X->Y为F所蕴含,且Z⊆U,则XZ->YZ为F所蕴含
A3传递律: 若X->Y,Y->Z为F所蕴含则X->Z为F所蕴含
合并规则: 若X->Y, X->Z则X->YZ
伪传递规则: 若X->Y,WY->Z,则XW->Z
分解规则: 若X->Y, Z⊆Y则X->Z

超键

主键+额外属性

主键

能确定唯一的一组元组

候选键

不含有多余属性的超键

外键

在当前关系模式不属于主键在其他关系模式中属于主键

主属性

包含于任何一个主键中

非主属性

与主属性相反

全码

该关系模式只有一个包含了全部属性的主键

规范化

关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式的规范化程度

1NF

关系模式R的每一个分量是不可再分的数据项
缺陷: 冗余较大、修改异常、插入异常、删除异常

2NF

关系模式R属于1NF,且每一个非主属性完全依赖主键

3NF

当2NF消除了非主属性对码的传递函数依赖

BCNF

每个依赖的决定因素必定包含某个候选键
缺陷: 插入异常、删除异常、数据冗余大、修改复杂

无损连接判断

超过两个关系用表格法,否则先求交集,然后根据交集看能否推出其余属性

数据库设计&需求分析

规划阶段: 建立数据库的必要性、可行性
需求分析: 收集需求,理解需求,产生需求规格说明书、数据字典
概念设计: 建立概念模型,E-R图
逻辑设计: 建立逻辑模型,关系模式
物理设计: 建立物理模型,依赖DBMS

需求分析目标

通过调查研究,了解用户的数据和处理要求,并按照一定格式整理成需求规格说明书

方法

充分了解原系统(手工、计算机)工作概况
详细调查待开发系统的组织/部门/企业等
明确用户的各种需求
确定新系统的功能(注意今后的扩充和改变)

重点

数据和处理
1、数据库需要哪些数据
2、数据处理要求
3、安全性与完整性要求

数据字典内容

数据项、数据流、数据存储、数据加工(待处理过程)
加工描述方法: 结构化语言、判定书、判定表

概念设计

在需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型

局部E-R模式设计

确定局部视图范围、识别实体及其标识、确定实体间联系、分配实体及联系属性

冲突

属性冲突、结构冲突、同一实体在不同ER图中属性个数和排列次序不同、同名异义、异名同义

逻辑设计

E-R图的实体转换为关系
E-R图的属性转换为关系的属性
E-R图的关键字转换为关系的关键字

复合属性转换

1、将每个分量属性作为复合属性所在实体的属性
2、将复合属性本身作为所在实体的属性

多值属性

1、将多值属性与所在实体的主键一起组成一个新的关系
2、将多值属性提升为一个实体,通常为弱实体

派生属性

可由其他属性计算得到,一般不转换派生属性

BLOB属性

容量比较大,将BLOB属性与关系的主键独立为一个关系模式

联系

1:1联系: 转换为一个独立的关系模式或者与任意一端对应的关系模式合并
1:n联系: 转换为一个独立的关系模式或与n端对应的关系模式合并
n:m联系: 转换为一个独立的关系模式
多元联系: 转换为一个独立的关系模式

物理设计

1、设计存储记录结构
2、确定数据存储安排
3、设计访问方法
4、进行完整性和安全性分析与设计
5、数据库程序设计

反规范化

1、增加冗余列: 用来避免连接操作
2、增加派生列: 在查询时减少计算量,从而加快查询速度
3、重新组表: 如果许多用户需要查看两个表连接出来的数据结果,则把这 两个表重新组成一个表来减少连接而提高性能
4、分割表:
(1)水平分割: 根据一列或多列数据的值把数据行放到独立的表中,适用场景: 1)表很大 2)表中数据本来就有独立性 3)需要把数据存放到多个介质上
(2)垂直分割: 把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中,可以使得数据行变小,减少I/O次数 缺点:要管理冗余列,查询所有数据需要连接操作

事务管理

通常以BEGIN TRANSACTION开始 以COMMIT或ROLLBACK结束

ACID

原子性(Atomicity): 要么全做要么全不做
一致性(Consistency): 从一个一致性状态变到另一个一致性状态
隔离性(Isolation): 不能被其他事务干扰
持续性(Durability): 一旦提交,改变就是永久性的。

丢失更新

T1事务更新了数据但是T2没有同步

读脏数据

当T1将数据写回后T2读了数据后T1执行了ROLLBACK而T2没有同步

不可重复读

当T1读取数据后T2更改数据并写回,T1再执行同样操作得不到原来的数据

排他型锁(X锁)

X锁只允许一个事务独锁某个数据,具有排他性

共享锁(S锁)

允许并发读,但不允许修改,即允许其他事务加S锁但不允许在所有S锁解除之前加X锁

一级封锁

修改数据之前加X锁,直到事务结束才释放
防止丢失修改

二级封锁

一级封锁协议+读取数据前加S锁,读完后释放S锁
防止丢失修改,还可以防止读脏数据

三级封锁

一级封锁协议+读取数据前加S锁,直到事务结束才释放
防止丢失修改,还可防止读脏数据与防止数据重复读

两段锁协议

分为封锁阶段(扩展)和释放阶段(收缩)。封锁阶段只能加锁、释放阶段只能解锁
可串行化,可能发生死锁

分布式数据库

特点

1、数据的分布性
2、统一性
3、透明性:
(1)分片透明性是分布透明性的最高层次
(2)位置透明性是分布透明性的下一层次
(3)局部数据模型(逻辑透明)

优点(和集中性数据库比)

1、坚固性好
2、可扩充性好
3、可改善性能
4、自治性好

问题

1、异构数据库的集成问题
2、如果数据库设计得不好,数据分布不合理,以致远距离访问过多,尤其是分布连接操作过多,不但不能改善性能,反而会使性能降低。

故障恢复

故障

1、事务故障
2、系统故障
3、介质故障
4、计算机病毒

恢复

1、事务故障恢复: 系统去做
(1)反向扫描日志,查找该事务的更新操作
(2)对该事务的更新操作执行逆操作
(3)继续反向扫描日志文件,查找该事务的其他更新操作,并做同样处理
(4)如此处理下去,直至读到此事务的开始标记,事务故障恢复完毕
2、系统故障恢复
(1)正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标识记入重做(Redo)队列,同时找出故障发生时尚未完成的事务,将其事务标识记入撤销队列(Undo)队列。
(2)对撤销队列中的各个事务进行撤销处理: 反向扫描日志文件,对每个Undo事务的更新操作执行逆操作
(3)对重做队列中的各个事务进行重做处理: 正向扫描日志文件,对每个重做事务重新执行日志文件登记的操作。
3、介质故障恢复
(1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态
(2)从故障点开始反向读日志文件,找出已提交事务标识将其记入重做队列
(3)从起始点开始正向阅读日志文件,根据重做队列中的记录,重做所有已完成事务,将数据库恢复至故障前某一时刻的一致状态
4、具有检查点的恢复技术。
检查点记录的内容可包括:
①建立检查点时刻所有正在执行的事务清单
②这些事务最近一个日志记录的地址
检查点恢复步骤如下:
(1)从重新开始的文件中找到最后一个检查点记录在日志文件中的地址,由该地址在日志文件中找到最后一个检查点记录
(2)由该检查点记录得到检查点建立时所有正在执行的事务清单队列(A)
(3)建立重做队列® 和撤销队列(U) 把A队放入U队中,R队为空

备份

冷备份、热备份
完全、增量、差异

数据仓库

面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策

实现方法

1、自顶向下法
2、自底向上法
3、联合方法(混合法)

数据挖掘

寻找数据之间的规律

流程

1、了解用户需求
2、建立数据挖掘数据库
3、分析数据
4、调整数据
5、模型化
6、评价和解释

方式

1、关联分析
2、序列分析
3、分类分析
4、聚类分析
5、预测
6、时间序列

NOSQL数据库

关系型数据库的缺点

1、不满足高并发读写需求
2、不满足海量数据的高效率读写
3、不满足高扩展性和可用性

集群缺陷

1、复杂性:集群配置、部署、管理
2、延迟性:主数据库压力较大时,会产生较大的延迟。主备切换时需要人工参与
3、扩容性:集群中增加新机器时,对整个数据重新分区,非常复杂。

NoSQL特点

1、灵活的可扩展性
2、灵活的数据模型
3、与云计算结合

CAP理论

C(Consistency)一致性: 更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致,与ACID的C完全不同
A(Availability)可用性: 服务一直可用,而且是正常响应时间
P(Partition tolerance)分区容错性: 分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务
CA: 优先保证一致性和可用性,放弃分区容错。缺点: 不再是分布式系统
CP: 优先保证一致性和分区容错性,放弃可用性。缺点: 牺牲用户体验
AP: 优先保证可用性和分区容错性,放弃一致性。缺点: 全局数据不一致。

BASE理论

BasicallyAvailable(基本可用)
Soft state(软状态)
Eventuallyconsistent(最终一致性)

键值数据库(Key-value)

键可以使一个字符串对象,值可以是整形、字符型、数组、列表、集合等。
相关产品: Redis、Riak、SimpleDB、Chordless、Scalaris、Memcached
优点: 扩展性好、灵活性好、大量写操作时性能高
缺点: 无法存储结构化信息,条件查询效率低

列族数据库

相关产品: BigTable、Hbase、Cassandra、HadoopDB、GreenPlum、PNUTS
HBASE:通过列族、列限定符、行键、时间戳获取唯一一条数据
优点: 查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
缺点: 功能较少、大都不支持强事务一致性

文档数据库

MongoDB、CouchDB、Terrastore、ThruDB、RavenDB、SisoDB、CloudKit、Perserver、Jackrabbit
优点: 水平扩展性良好,并发性良好,灵活性高,复杂性低,数据结构灵活,既可以根据键来构建索引,也可以根据内容构建索引
缺点: 缺乏统一的查询语法

图形数据库

Neo4J、OrientDB、InfoGrid、Infinite Graph、GraphDB
数据模型: 图结构
典型应用: 专门用于处理具有高度相关联关系的数据,比较适合于社交网络、模式识别、依赖分析、推荐系统以及路径寻找等问题
优点: 灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱
缺点: 复杂性高,只能支持一定的数据规模

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值