设计策略

  1. 自顶向下

根据具体需求来,从需求分析开始,进行概念设计,模式设计,分布设计,分片设计,分配设计,物理设计以及性能调优等一系列设计过程。

  1. 自下而上

该策略通常用于已有多个数据库系统,需要将其集成为一个数据库的设计过程。主要是数据库集成

分片的定义及作用

现有某集团公司,有地理位置分别在不同城市的总公司和下属两个分公司组成
人事系统中的职工关系定义为: EMP{ENO, ENAME, SALARY, DNO}
场地定义总公司为0,分公司分别为1,2
全局数据EMP = EMP0+EMP1+EMP2
方案一:公司保留全部数据
方案二:各单位只保留自己数据
方案三:分公司保留自己数据,总公司保留全部数据
对应分配方式如下

分片定义

对全局数据进行划分,称为分片,划分结果称为片段,为片段指定存储场地称为分配。片段存储在一个以上场地时,称为数据复制型存储,只存储在一个场地时,称为数据分割型存储。

作用
  • 减少网络传输量
  • 增大事务处理的局部性
  • 提高数据的可用性和查询效率
  • 均衡负载
    设计过程
    从全局数据进行逻辑划分和实际物理分配的过程。
    从全局数据库进行分片。随后将片段数据库进行分配
    分片原则
    保证完备性、可重构性、不相交性
    完备性: 分片之后不能缺失数据
    可重构性: 所有片段必须能构成新的全局数据
    不相交性: 划分各片段所包含数据的交集为空

    水平分片

    将元组集划分为不相交的子集
    简单理解就是根据一定条件在一个表格上水平切分,上部分数据和下部分数据分别存储在两个不同的片段中
    这个条件可以是该表的某项属性大小构成的条件,也可以是与该表相关联的表构成的条件
    设计依据
  1. 数据库因素

指全局模式中模式间的关联关系,即多个表之间有连接关系的片段应该就近存储

  1. 应用需求因素

分为定性和定量两个参数。定性参数主要指查询语句的查询谓词,可细分为简单谓词和小项谓词。简单谓词指只包含一个操作符的查询谓词。简单谓词的组合称为小项谓词。
定量参数与分配模式相关,主要有小项选择度和访问频率两种。
小项选择度是指满足一个小项谓词的元组数量。访问频率是指,一段时间内小项谓词的查询次数
设计原则

  1. 完备性

所有查询需要的小项谓词都是由简单谓词组合而成
应用简单谓词的各种查询应用对片段中元组的访问频率趋于一致

  1. 最小性

简单谓词集中的所有简单谓词都是相关的(即一个简单谓词只确定一个片段,共同组成所有元组)

垂直分片

将关系按照属性集合分成不相交的子集(主关键字除外),属性集合称为分片属性,即垂直分片是将关系按照列划分成不相交的若干片段
设计依据
具体的应用需求是垂直分片的设计依据。
设计 - 图1是用户的查询应用,关系设计 - 图2包含设计 - 图3属性,则设计 - 图4表示属性设计 - 图5设计 - 图6的紧密度,描述为设计 - 图7,其中设计 - 图8为场地,设计 - 图9为场地个数,设计 - 图10为查询个数,设计 - 图11为查询设计 - 图12在场地设计 - 图13上同时访问属性设计 - 图14设计 - 图15的次数,设计 - 图16为查询设计 - 图17在场地设计 - 图18上的访问频率统计值
设计方法
垂直分片采用两两属性间或局部范围内属性间的紧密度,通过聚类算法实现属性分组。
方法一是通过线性排序属性间的紧密度实现分组
方法二是采用全局紧密度测量的思想,基于矩阵计算实现,全局紧密度测量描述如下:设计 - 图19

混合分片

既包括水平又包括垂直分片的过程

分片表示方法

图形表示法
  • 整体矩形表示全局关系
  • 矩阵的部分为片段关系
  • 水平划分部分为水平分段
  • 垂直划分部分为垂直分段

分片树表示法

  • 根节点:全局关系
  • 叶子节点,表示最后得到的片段关系
  • 中间节点,表示分片过程的中间结果
  • 边,表示分片操作,并用h(水平),v(垂直)表示分片类型
  • 节点名,表示全局关系名和片段名

    分配设计

    全局数据分片之后,得到各个划分片段,为片段指定存储场地的过程为分配设计
    分配分为复制分配和非复制分配,即片段存储的份数。
    从应用角度考虑以下几种因素
  1. 增加事务处理的局部性
  2. 提高系统的可靠性和可用性
  3. 增加系统的并行性

从系统角度考虑以下因素

  1. 降低系统运行和维护的开销
  2. 负载均衡
  3. 方便一致性的维护
    设计原则
    通常要考虑数据库自身特点,应用需求,场地存储和处理代价以及网络通信代价
    分配模型
    典型的分配计算模型如下,
    设计 - 图20
    (1)设计 - 图21为所有场地上的片段存储代价之和,设计 - 图22为所有场地上的查询处理代价之和
    设计 - 图23
    设计 - 图24为片段设计 - 图25在场地设计 - 图26上的存储代价,设计 - 图27为所有片段在场地设计 - 图28上的存储代价
    设计 - 图29
    设计 - 图30设计 - 图31上的单位存储代价,设计 - 图32设计 - 图33的大小
    设计 - 图34
    (2) 设计 - 图35为查询设计 - 图36的处理代价
    设计 - 图37
    设计 - 图38为CPU的处理代价

设计 - 图39
设计 - 图40
其中,设计 - 图41表示所有场地,设计 - 图42表示访问片段。设计 - 图43为执行查询设计 - 图44的网络传输代价
设计 - 图45
设计 - 图46为更新代价
设计 - 图47
设计 - 图48为只读查询代价
设计 - 图49
分配模型代价的约束条件如下:

  1. 响应时间(Q):设计 - 图50
  2. 存储(设计 - 图51)指一个场地上的存储约束:设计 - 图52上许可的存储空间
  3. 处理(设计 - 图53)指一个场地上的处理约束:在设计 - 图54场地上设计 - 图55上许可的最大处理负载,设计 - 图56表示所有查询

    数据复制

    利弊
  • 就近本地访问,减少网络负载
  • 提高系统性能
  • 更好的负载均衡,较大的负载可以均衡到多个节点上处理,有效利用处理资源
  • 增加维护数据一致性的代价(同步数据)

    分类

    根据更新传播方式不同

  • 同步复制

所有场地上的副本总是具有一致性,对任何一个副本进行数据操作,会反映到其他场地的副本中。保证副本一致性,但是会导致冲突增加,增加了事务时间

  • 异步复制

不要求实时的一致性。降低通信代价和冲突的概率。增加了事务回滚的代价。是大用户群实时访问大数据量查询应用的常用方法
根据参与的复制节点的关系不同

  • 主从复制

将副本所在的场地分为主场地和从场地,数据更新只在主场地进行,之后再同步到从场地上,通常由主场地协调实现。主从复制简单,易于维护数据一致性,但是降低系统自治性

  • 对等式复制

各个场地平等,可修改任何副本。被修改的副本临时转换为主副本,其他为从副本,随后主场地负责协调同步修改到从场地。对等式复制中,各场地具有高度自治性,系统可用性好,但是会引起事务冲出,需要引入有效的冲突解决机制,处理复杂,系统开销大

复制的常用方法
  • 基于触发器

主场地设置触发器,数据操作反映到从场地,适用于小型数据库应用

  • 基于日志

通过分析数据库的操作日志信息捕获复制对象的变化,当主副本更改,复制代理只需要将修改日志信息发送到从场地,由从场地代理实现本地数据的同步。

  • 基于时间戳

根据数据的更新时间判断是否是最新数据,并以此为依据对数据副本进行相应修改。该方法需要为每一个副本数据定义一个时间戳字段,用于记录每个表的修改时间。适用于对数据更改较少的系统

  • 基于API

引入第三方程序,通过API完成。在应用程序对数据库修改的同时,记录复制对象的变化。该方法可减轻DBA的负担,但无法捕获未经过API的数据更改操作