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

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