数据库系统概念 第十九章 分布式数据库
同构和异构数据库
同构分布式数据库:所有站点都使用相同的数据库管理系统软件
异构分布式数据库:不同站点可能使用不同的模式和不同的数据库管理系统软件
分布式数据存储:
1 复制:系统维护这个关系的几个相同的副本,并把每个副本存储在不同的站点上
2 分片:系统把关系划分为几个片,并把每个片存储在不同的站点上
数据复制:
1 可用性:一个站点出错了,系统仍然可用
2 增加的并行度:读取时可以并行处理,
3 增加的更新开销:系统必须保证副本一致的
数据分片:
水平分片:通过将关系的每个元组分给一个或多个分片来划分关系
垂直分片:通过对关系的属性进行分解来划分关系
透明性:
分布式数据库系统的用户不要求知道数据的物理位置在哪里或者在特定本地站点上的数据应如何访问。该特点称为数据透明性:
1 分片透明性
2 复制透明性
3 位置透明性
分布式事务:
系统结构:
1 事务管理器:管理那些访问存储在一个局部站点中的数据的事务的执行
a 维护一个用于恢复目的的日志
b 参与到一个合适的并发控制方案,以协调在该站点上执行的事务的并发执行
2 事务协调器:协调在该站点上发起的各个事务的执行
a 启动事务的执行
c 将事务分成一些子事务,并将这些子事务分派给合适的站点去执行
d 协调事务的中止,这可能导致事务在所有站点上都提交或在所有站点上都中止
系统故障模式:
1 站点故障
2 消息丢失
3 通信链路故障
4 网络划分
提交协议:
两阶段提交:
提交协议
阶段1:
1 事务协调器c将记录<prepare T>加到日志中,并强制日志写入稳定存储器上
2 接着它将一条prepare T消息发送到执行T的所有站点上,
3 其他站点的事务管理器接收到这样的消息后,确定是否愿意提交T中属于自己管理的部分
a 愿意,<ready T>加入日志,并强制日志写入稳定存储器上,返回消息ready T
b 不愿意,<abort T>加入日志,并强制日志写入稳定存储器上,返回消息abort T
阶段2:
1 当c收到所有消息后,或者一定时间后,就可以确定是提交还是中止
a 提交,<commit T>加入日志,并强制日志写入稳定存储器上,向所有站点发送commit T
b 中止,<abort T>加入日志,并强制日志写入稳定存储器上,向所有站点发送abort T
2 站点接收信息,把此消息记录到日志
故障处理:
参与站点故障:
协调器故障:
网络划分:
恢复与并发控制:
事务处理的可选择性模型:
持久消息:如果发送该消息的事务提交,则不管是否发生故障,它都保证传送给接受者恰好一次(即不多也不少)
如果该事务中止则持久消息保证不传送
持久消息的错误处理比两阶段提交更复杂
持久消息的实现:
发送站点协议:
它在专用关系messages-to-send中写一条包含消息的记录,这个消息也被赋予一个唯一的消息标识符
消息传送进程监控该关系,当发现一条新消息时,它将消息发送到其目的地
消息传送进程只在它收到目的站点的确认之后才从该关系中删除消息
接收站点协议:
接收到持久消息时,运行一个事务将消息加入到专用关系received-messages中,
前提是该消息没有出现在该关系中
向发送站点发回一个确认
分布式数据库中的并发控制
封锁协议:
单一锁管理器方式:
系统维护位于单个选定站点的单一锁管理器,请求加锁和解锁都在站点上处理
优点:
1 实现简单
2 死锁处理简单
缺点:
1 瓶颈
2 脆弱性
分布式锁管理器:
每个站点维护一个本地锁管理器,它的功能是管理存储在该站点上的那些数据项的封锁和解锁请求
主副本:
系统使用数据复制时,选择一个副本作为主副本。主副本的站点称为主站点
多数协议:
如果数据项在n个不同的站点复制,则封锁请求消息必须发送到存储的n个站点中一半以上的站点
缺点:
1 实现:复杂
2 死锁处理:
有偏协议:
共享锁:当事务需要封锁数据项Q时,只需要向包含Q的副本的一个站点上的锁管理器请求锁
排他锁:需要所有锁管理器的申请
法定人数同意协议:
时间戳:
集中式:单个站点分发时间戳
分布式:单个站点可以用逻辑计数器或本地时钟来产生唯一的局部时间戳,通过局部时间戳串接站点标识符,构成全局时间戳
弱一致性级别的复制:
死锁处理:
可用性:
分布式查询处理
异构分布式数据库:
操纵位于异构分布式数据库中的信息需要在已有数据库系统之上增加一个软件层,这个软件层称为多数据库系统。
基于云的数据库
云上的数据存储系统:

浙公网安备 33010602011771号