content
- 两种设计策略
- 分片简介
- 水平分片设计
- 垂直分片设计
- 分片的表示方法
- 分配设计
- 数据复制技术
两种设计策略
▍两种设计策略
- 自顶向下(top_down):用于设计一个新的数据库系统(本节着重点)
- 自底向上(bottom_up):已经存在多个数据库系统,将它们集成为一个数据库系统
▍top_down设计过程
- 需求分析
- 概念设计 + 视图集成 + E-R表示 + 转换到关系模式
- 分布设计 + 分片 + 分配
- 物理设计
- 性能调优
分片简介
▍分片的相关定义
- 分片(Fragmentation):对全局数据的划分
- 片段(Fragment):划分的结果称为片段
- 分配(Allocation):将片段指定到场地
- 分割(Partition):每个片段只存储在一个场地
- 复制(Replication):每个片段存储在一个以上的场地
▍分片的作用
- 减少网络传输量 —— 分片后进行复制,从多个副本中就近访问;或者将需频繁访问的分片存储在本地场地上
- 增大事务处理的局部性 —— 局部场地需要的分片分配在各自的场地上,增加局部事务效率
- 提高数据的可用性 —— 当某一场地发生故障,非故障场地上的副本同样是可用的
- 使负载均衡 —— 破除数据访问瓶颈,提高系统整体效率
▍分片的过程
分片过程是将全局数据进行逻辑划分和物理分配的过程。全局数据由分片模式划分成各个数据片段,各个数据片段由分配模式存储在各个场地上。
▍分片的原则
- 完备性 —— 所有全局数据必须映射到某个片段上
- 可重构性 —— 所有片段必须能够重新组合成全局数据
- 不相交性 —— 水平划分时不能有交集;垂直划分时交集只能是主键
▍分片的种类
- 水平分片 —— 按元组划分
- 垂直分片 —— 按属性划分
- 混合分片 —— 水平分片 + 垂直分片
▍分片的透明性
- 分片透明性 —— 用户不必考虑「数据属于哪个片段」
- 分配透明性 —— 用户不必考虑「片段属于哪个场地」
- 局部映射透明性 —— 用户不必考虑「关于底层数据库的一切」
水平分片设计
▍典例
▍谓词
- 简单谓词(Simple Predicate) :只包含一个操作符号的查询谓词
- 小项谓词(Minterm Predicate) :由多个简单谓词组合成的查询谓词
▍基本水平分片(Primary horizontal fragmentation)
- 找到具有完备性和最小性的简单谓词集合
- 派生小项谓词集合
- 消除无意义的小项谓词
▍导出水平分片(Derived horizontal fragmentation)
一个关系的分片不是基于关系本身的属性,而是根据另一个与其有关联的关系的属性来划分。
垂直分片设计
▍典例
▍紧密度
紧密度(affinity)是用来度量属性间的关系 —— 很显然,联系越紧密的属性,越不应该分开,越不应该被分到两个场地。
分片的表示方法
? 图形表示法
? 分片树表示法
分配设计
▍三种分配方式
▍考虑因素
从应用角度出发(分片更多):增加事务处理的局部性;提高系统的可靠性和可用性;增加系统的并行性
从系统角度出发(分片更少):降低系统的运行和维护开销;使系统负载均衡;方便一致性维护
二者是矛盾的。
▍设计原则
数据库因素 | 应用因素 | 场地因素 | 网络通信因素 |
---|---|---|---|
片段的大小 | 查询对片段的读频度 | 场地上存储数据的单位代价 | 网络带宽 |
片段的选择度 | 查询对片段的写频度 | 场地上处理数据的单位代价 | 网络延迟 |
查询的启动场地 | 场地间的通信代价 | ||
传输的数据帧大小 |
▍分配模型
总代价 = 存储代价 + 处理代价
总代价 =
∑
S
k
+
∑
Q
i
∑Sk+∑Qi
∑Sk+∑Qi
(??注意一下)
数据复制技术
▍优势
- 减少网络负载(因为就近访问,减少了网络传输代价)
- 提高系统性能(因为就近访问+并行处理)
- 更好的负载均衡(因为可以分布到多个节点)
▍缺点
- 数据一致性问题
- 数据冲突问题
▍分类
- 同步复制 —— 实时的、严格的一致性;频繁的通信;较高的响应时间
- 异步复制 —— 非实时的;较短的响应时间;潜在的数据冲突
▍实现
- 基于触发器
- 基于日志
- 基于时间戳
- 基于API
M
o
r
e
More
More