设计方法、内容和目标
分布式数据库设计的方法:
根据设计是基于现存的数据系统还是构造一个全新的数据库系统,有两种方法创建分布式数据库:
- 组合法:基于现有的系统,建立一个协调管理系统。采用自底向上的方式构建。
- 重构法:创建全新的数据库系统。采用自顶向下的方式构建。
分布式数据库设计的内容:
(1)数据库设计基础——需求分析:
- 数据需求
- 应用需求:
- 应用的原发站点:发出应用请求的站
- 应用在站点被**的频率
- 应用对数据对象访问次数、类型和分布统计
(2)数据库设计(设计的核心任务):
- 全局模式设计
- 局部数据库设计
- 数据分片设计
- 片段的位置分配设计
分布式数据库设计的目标:
- 确保数据库数据和应用具有最大程度的本地性
- 分布式数据的可用性和可靠性
- 工作负荷分布
- 存储的能力和费用
自顶向下方法构建数据库设计步骤:
分布式数据库系统比集中式数据库系统多了全局逻辑模型的设计、分片设计、分布设计以及局部逻辑设计。
数据库的分片和分布设计
数据库的分片设计:
- 什么叫“片段”?——片段指在分布式数据库系统中, 某一站点上存储的数据集合。
- 分片设计的目的?——产生全局数据的一个合理的划分,从而使每个站点只获得它所需要的数据,最大可能保证应用的本地性。
- 分片应遵循的一般规则:设R={R1,R2,..Rn}
- 完整性:即,t∈R,则必有t∈Ri(i= 1, 2... n)
- 可重构性:即,R=∪Ri(i= 1, 2.. n )或R =∞Ri(i= 1,..., n )
- 不相交性:即,Ri∩Rj=φ(i,j=1,...,n,且i≠j)或Ri∩Rj =主码属性(i,j=1,...,n且i≠j )
- 分片的基本类型和方法:水平分片、垂直分片、混合分片
- 水平分片:对全关系进行选择操作,把具有相同性质的元组进行分组,构成若干不相交的子集。
- 初级分片:以关系自身属性性质分组
- 导出分片:用其他关系的属性对某一全关系进行分组
- 水平分片:对全关系进行选择操作,把具有相同性质的元组进行分组,构成若干不相交的子集。
- 垂直分片:利用投影操作把全关系的属性分成若干组,目标是把频繁使用的属性聚集在一起,且各片段只在键属性下重叠。
- 混合分片:就是将垂直分片、水平分片,把他们组合在一起,比如先进行垂直分片再进行水平分片,或者是先进行水平分片再进行垂直分片。
数据库片段位置分配的设计:
- 非冗余分配:一个片段映射到一个站点
- 冗余分配:一个片段映射到多个站点
非冗余"最佳适应"分配法:
- ➢计算:Bij=Lk(Fkj*Nki),即计算所有的应用在站点j上访问片段i的总次数
- ➢对所有站点j确定j‘,使得Bij' = max( Bij ),即把片段Ri分配到有最大访问次数的站点j’
冗余分配比较复杂,一般采用下列方法之一进行估算:
- 所有得益站点法:
- 对所有站点确定非冗余分配方案
- 从全部结点中选择一组站点,使得给这组站点分配片段Ri的一个拷贝所得到的检索效益,大于从其它站点对Ri实施更新的代价
- 把片段Ri拷贝分配给该组站点
- 附加拷贝法:
- 对所有站点确定非冗余分配方案
- 计算把片段Ri分配给所有站点所能得到的总效益fi (以及一个站点分得Ri所得到的效益)
- 从分得片段Ri能够获取最大益处的站点起,对各站点依次附加片段Ri的一个拷贝,直到增加片段Ri不能使系统得到明显效益(或者说效益增大"接近”fi )为止
总结:数据库片段及位置分配的设计所需要的参数均从应用需求中得来,总结这些参数可用如下三个表表达:
- 频率表:各站点每一应用**的次数
- 划分表:各实体的潜在水平分片规则
- 极化表:给定站点发出一给定应用访问一给定片段的概率
分布式数据库设计实例
订票系统维护分布在三个网络站点(与机场1,2 , 3处于同一地理区域)上的数据库。数据库存储机场规程、班机起降和旅客订票等数据。
(1)概念设计——全局概念模式( E-R图)
(2)收集数据与其最相关的应用知识——用操作模式表示
- 订票:用于旅客预订机票。
[o]:表示用来进行输出显示的 [k]:表示关键信息 [w]:表示需要写回数据库 数字:表示的是每次操作显示的实物数
- 登记:用于旅客登机登记任务记录。
- 起飞应用:查询即将从一个机场起飞的30个班机信息 。
(3)在操作模式的基础上,对每一实体估算应用的定量数据,建立逻辑访问表
(4)分布需求分析
- 频率表:调研并给出在三个站点上使用各个应用的频率(**的次数)
- 划分表:分析各个实体各种可能的分片方式及其选择性
- *基本划分
- *导出划分
- *注释表
- 极化表:调研并给出从一个站点发出一个应用所需要访问某片段的概率
(5)飞机订票系统的分布式设计
- a.为各个实体选择合适的分片,原则:本地性,不造成应用困难。
- 对本例来说,各个实体采用水平分片:
- ➢"机场” 由基于区域的基本水平分片(片段(F1~F3):机场1,机场2,机场3)
- ➢"班机” 由基于起飞机场区域的导出水平分片(片段(A1~A3) :班机1,班机2,班机3)
- ➢“旅客” 由基于旅客订票涉及的班机起飞机场所在区域的导出水平分片(片段(P1~P7):旅客1 ,旅客2,旅客3,...旅客7 )
- b.进行片段的非冗余分配:
- 对本例来说,各个实体采用水平分片:
- c.进行片段的冗余分配:
- 根据应用可以将旅客4、5、 6分配在两个站点上,旅客7分配在三个站点上。
(6)重构局部模式
之后可以构建局部数据库的逻辑模式,然后进行数据库的定义和实施。
【北京工业大学-高级数据库系统】
【https://next.xuetangx.com/course/BJUT08091000021/1075768】