分布式数据库系统之【分片设计】

content

  1. 两种设计策略
  2. 分片简介
  3. 水平分片设计
  4. 垂直分片设计
  5. 分片的表示方法
  6. 分配设计
  7. 数据复制技术

 
 
 

两种设计策略

两种设计策略

  • 自顶向下(top_down):用于设计一个新的数据库系统(本节着重点)
  • 自底向上(bottom_up):已经存在多个数据库系统,将它们集成为一个数据库系统

top_down设计过程

  1. 需求分析
  2. 概念设计 + 视图集成 + E-R表示 + 转换到关系模式
  3. 分布设计 + 分片 + 分配
  4. 物理设计
  5. 性能调优

 
 

分片简介

分片的相关定义

  • 分片(Fragmentation):对全局数据的划分
  • 片段(Fragment):划分的结果称为片段
  • 分配(Allocation):将片段指定到场地
  • 分割(Partition):每个片段只存储在一个场地
  • 复制(Replication):每个片段存储在一个以上的场地

分片的作用

  • 减少网络传输量 —— 分片后进行复制,从多个副本中就近访问;或者将需频繁访问的分片存储在本地场地上
  • 增大事务处理的局部性 —— 局部场地需要的分片分配在各自的场地上,增加局部事务效率
  • 提高数据的可用性 —— 当某一场地发生故障,非故障场地上的副本同样是可用的
  • 使负载均衡 —— 破除数据访问瓶颈,提高系统整体效率

分片的过程

分片过程是将全局数据进行逻辑划分和物理分配的过程。全局数据由分片模式划分成各个数据片段,各个数据片段由分配模式存储在各个场地上。

在这里插入图片描述

分片的原则

  • 完备性 —— 所有全局数据必须映射到某个片段上
  • 可重构性 —— 所有片段必须能够重新组合成全局数据
  • 不相交性 —— 水平划分时不能有交集;垂直划分时交集只能是主键

分片的种类

  • 水平分片 —— 按元组划分
  • 垂直分片 —— 按属性划分
  • 混合分片 —— 水平分片 + 垂直分片

分片的透明性

  • 分片透明性 —— 用户不必考虑「数据属于哪个片段」
  • 分配透明性 —— 用户不必考虑「片段属于哪个场地」
  • 局部映射透明性 —— 用户不必考虑「关于底层数据库的一切」

 
 

水平分片设计

典例

在这里插入图片描述
在这里插入图片描述

谓词

  • 简单谓词(Simple Predicate) :只包含一个操作符号的查询谓词
  • 小项谓词(Minterm Predicate) :由多个简单谓词组合成的查询谓词

基本水平分片(Primary horizontal fragmentation)

  1. 找到具有完备性最小性的简单谓词集合
  2. 派生小项谓词集合
  3. 消除无意义的小项谓词

在这里插入图片描述
 
导出水平分片(Derived horizontal fragmentation)

一个关系的分片不是基于关系本身的属性,而是根据另一个与其有关联的关系的属性来划分。

在这里插入图片描述

 
 
 
 

垂直分片设计

典例

在这里插入图片描述

在这里插入图片描述

紧密度

紧密度(affinity)是用来度量属性间的关系 —— 很显然,联系越紧密的属性,越不应该分开,越不应该被分到两个场地。

 
 
 

分片的表示方法

图形表示法
在这里插入图片描述

分片树表示法

在这里插入图片描述

 
 
 

分配设计

三种分配方式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

考虑因素

应用角度出发(分片更多):增加事务处理的局部性;提高系统的可靠性和可用性;增加系统的并行性

系统角度出发(分片更少):降低系统的运行和维护开销;使系统负载均衡;方便一致性维护

二者是矛盾的。
 
设计原则

数据库因素应用因素场地因素网络通信因素
片段的大小查询对片段的读频度场地上存储数据的单位代价网络带宽
片段的选择度查询对片段的写频度场地上处理数据的单位代价网络延迟
查询的启动场地场地间的通信代价
传输的数据帧大小

分配模型

总代价 = 存储代价 + 处理代价

总代价 = ∑ S k + ∑ Q i ∑Sk+∑Qi Sk+Qi

(🌟注意一下)

 
 
 

数据复制技术

优势

  • 减少网络负载(因为就近访问,减少了网络传输代价)
  • 提高系统性能(因为就近访问+并行处理)
  • 更好的负载均衡(因为可以分布到多个节点)

缺点

  • 数据一致性问题
  • 数据冲突问题

分类

  • 同步复制 —— 实时的、严格的一致性;频繁的通信;较高的响应时间
  • 异步复制 —— 非实时的;较短的响应时间;潜在的数据冲突

实现

  • 基于触发器
  • 基于日志
  • 基于时间戳
  • 基于API

 
 
 
 
 
 
 
 
 
 
 
 

M o r e More More

  • 15
    点赞
  • 46
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:撸撸猫 设计师:马嘣嘣 返回首页
评论

打赏作者

samarua

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值