设计策略
- 自顶向下
根据具体需求来,从需求分析开始,进行概念设计,模式设计,分布设计,分片设计,分配设计,物理设计以及性能调优等一系列设计过程。
- 自下而上
该策略通常用于已有多个数据库系统,需要将其集成为一个数据库的设计过程。主要是数据库集成
分片的定义及作用
现有某集团公司,有地理位置分别在不同城市的总公司和下属两个分公司组成
人事系统中的职工关系定义为: EMP{ENO, ENAME, SALARY, DNO}
场地定义总公司为0,分公司分别为1,2
全局数据EMP = EMP0+EMP1+EMP2
方案一:公司保留全部数据
方案二:各单位只保留自己数据
方案三:分公司保留自己数据,总公司保留全部数据
对应分配方式如下
分片定义
对全局数据进行划分,称为分片,划分结果称为片段,为片段指定存储场地称为分配。片段存储在一个以上场地时,称为数据复制型存储,只存储在一个场地时,称为数据分割型存储。
作用
- 减少网络传输量
- 增大事务处理的局部性
- 提高数据的可用性和查询效率
- 均衡负载
设计过程
从全局数据进行逻辑划分和实际物理分配的过程。
从全局数据库进行分片。随后将片段数据库进行分配分片原则
保证完备性、可重构性、不相交性
完备性: 分片之后不能缺失数据
可重构性: 所有片段必须能构成新的全局数据
不相交性: 划分各片段所包含数据的交集为空水平分片
将元组集划分为不相交的子集
简单理解就是根据一定条件在一个表格上水平切分,上部分数据和下部分数据分别存储在两个不同的片段中
这个条件可以是该表的某项属性大小构成的条件,也可以是与该表相关联的表构成的条件
设计依据
- 数据库因素
指全局模式中模式间的关联关系,即多个表之间有连接关系的片段应该就近存储
- 应用需求因素
分为定性和定量两个参数。定性参数主要指查询语句的查询谓词,可细分为简单谓词和小项谓词。简单谓词指只包含一个操作符的查询谓词。简单谓词的组合称为小项谓词。
定量参数与分配模式相关,主要有小项选择度和访问频率两种。
小项选择度是指满足一个小项谓词的元组数量。访问频率是指,一段时间内小项谓词的查询次数
设计原则
- 完备性
所有查询需要的小项谓词都是由简单谓词组合而成
应用简单谓词的各种查询应用对片段中元组的访问频率趋于一致
- 最小性
简单谓词集中的所有简单谓词都是相关的(即一个简单谓词只确定一个片段,共同组成所有元组)
垂直分片
将关系按照属性集合分成不相交的子集(主关键字除外),属性集合称为分片属性,即垂直分片是将关系按照列划分成不相交的若干片段
设计依据
具体的应用需求是垂直分片的设计依据。
令是用户的查询应用,关系包含属性,则表示属性与的紧密度,描述为,其中为场地,为场地个数,为查询个数,为查询在场地上同时访问属性与的次数,为查询在场地上的访问频率统计值
设计方法
垂直分片采用两两属性间或局部范围内属性间的紧密度,通过聚类算法实现属性分组。
方法一是通过线性排序属性间的紧密度实现分组
方法二是采用全局紧密度测量的思想,基于矩阵计算实现,全局紧密度测量描述如下:
混合分片
分片表示方法
图形表示法
- 整体矩形表示全局关系
- 矩阵的部分为片段关系
- 水平划分部分为水平分段
- 垂直划分部分为垂直分段
分片树表示法
- 根节点:全局关系
- 叶子节点,表示最后得到的片段关系
- 中间节点,表示分片过程的中间结果
- 边,表示分片操作,并用h(水平),v(垂直)表示分片类型
- 节点名,表示全局关系名和片段名
分配设计
全局数据分片之后,得到各个划分片段,为片段指定存储场地的过程为分配设计
分配分为复制分配和非复制分配,即片段存储的份数。
从应用角度考虑以下几种因素
- 增加事务处理的局部性
- 提高系统的可靠性和可用性
- 增加系统的并行性
从系统角度考虑以下因素
- 降低系统运行和维护的开销
- 负载均衡
- 方便一致性的维护
设计原则
通常要考虑数据库自身特点,应用需求,场地存储和处理代价以及网络通信代价分配模型
典型的分配计算模型如下,
(1)为所有场地上的片段存储代价之和,为所有场地上的查询处理代价之和
为片段在场地上的存储代价,为所有片段在场地上的存储代价
为上的单位存储代价,为的大小
(2) 为查询的处理代价
为CPU的处理代价
其中,表示所有场地,表示访问片段。为执行查询的网络传输代价
为更新代价
为只读查询代价
分配模型代价的约束条件如下:
所有场地上的副本总是具有一致性,对任何一个副本进行数据操作,会反映到其他场地的副本中。保证副本一致性,但是会导致冲突增加,增加了事务时间
- 异步复制
不要求实时的一致性。降低通信代价和冲突的概率。增加了事务回滚的代价。是大用户群实时访问大数据量查询应用的常用方法
根据参与的复制节点的关系不同
- 主从复制
将副本所在的场地分为主场地和从场地,数据更新只在主场地进行,之后再同步到从场地上,通常由主场地协调实现。主从复制简单,易于维护数据一致性,但是降低系统自治性
- 对等式复制
各个场地平等,可修改任何副本。被修改的副本临时转换为主副本,其他为从副本,随后主场地负责协调同步修改到从场地。对等式复制中,各场地具有高度自治性,系统可用性好,但是会引起事务冲出,需要引入有效的冲突解决机制,处理复杂,系统开销大
复制的常用方法
- 基于触发器
主场地设置触发器,数据操作反映到从场地,适用于小型数据库应用
- 基于日志
通过分析数据库的操作日志信息捕获复制对象的变化,当主副本更改,复制代理只需要将修改日志信息发送到从场地,由从场地代理实现本地数据的同步。
- 基于时间戳
根据数据的更新时间判断是否是最新数据,并以此为依据对数据副本进行相应修改。该方法需要为每一个副本数据定义一个时间戳字段,用于记录每个表的修改时间。适用于对数据更改较少的系统
- 基于API
引入第三方程序,通过API完成。在应用程序对数据库修改的同时,记录复制对象的变化。该方法可减轻DBA的负担,但无法捕获未经过API的数据更改操作