当前课程知识点:高级数据库系统 >  第八讲 分布式数据库的设计 >  3. 数据的分片和分布设计 >  8-3. 数据的分片和分布设计(2)

返回《高级数据库系统》慕课在线视频课程列表

8-3. 数据的分片和分布设计(2)在线视频

8-3. 数据的分片和分布设计(2)

下一节:8-4. 分布式数据库设计案例讲解(1)

返回《高级数据库系统》慕课在线视频列表

8-3. 数据的分片和分布设计(2)课程教案、知识点、字幕

下面我们对数据库片段它的分配问题,我们划分好了数据库片段

如何把它分配到各个站点上去这个也需要进行设计

数据库片段的分配有两种方式:一种是冗余分配,一种是非冗余分配

显然我们在进行分布式数据库里面副本分配的时候

首先要进行非冗余的分配,然后再进行冗余分配

非冗余分配实际上就相当于我把某一个片段

要映射到分布式数据库系统的某一节点上,不是多个节点

它只映射到某一个节点,映射到哪一个节点上去呢?

显然就应该映射到最需要它的那一个节点上

也就是说,我这个应用在这个节点上,或者说在这个站点上

对这个数据它的访问次数应该是最多

或者说对它的应用最多的这个站点

所以这样的话对于非冗余分配就比较简单一些

基本上来说就采用最佳适应分配方法,什么叫最佳适应呢?

意思就是说,把一个片段映射到它最需要的站点上去

也就是它使用最多的站点上去,如果我们用公式来表达呢

我们用这样一个公式Bij = Σk( Fkj * Nki ),它们都是什么意思呢?

Bij它是指所有的应用在站点j上访问片段i的总次数

这就是Bij,这是它的物理含义,如果说在某一个站点上Bij最大的话

显然就要把这个数据片i放在j站点上就可以了

在这里面有些参数,我们i表示数据的片段号,j表示站点的序号

k表示应用的序号,那么Fkj实际上就相当于是应用k在站点j上激活的频率

然后我们也可以用这个Rki,R表示读,U表示更新

所以Rki就是表示应用k对片段i进行检索访问的次数

Uki就是应用k对片段i进行更新访问的次数

他们两个的总和就是应用k对片段i访问的总次数

这个总次数再乘以应用k在站点j上激活的频率

显然它就应该等于这个站点j上应用k来访问i的次数

如果我们再把这个k进行一下扩展,如果在j上还有其他一些应用

所以我们对k进行一个加和,指的是在站点j上对i的一个访问次数

这个如果在某一个j上Bij最大的话,我们就把片段分配到这个j上就可以了

这个就比较简单,这是它的最佳适应方法

实际上在分布式数据库系统里面,最比较复杂的分配是冗余分配

因为我们说非冗余分配,我们把它确定好了之后

实际上为了系统的可靠性也好,为了将来提高它的效率,使得应用最大的本地化

那么我们还要把一些副本在其他的站点上再进行分配

比如说某一个片段要被分配到若干个站点上去

冗余分配就比较复杂,有人提出了一些方法

比如说叫所有站点得益法,还有人提出叫附加复制法

我们来看一下所有站点得益法

这些方法实际上都是一个宏观的、利益最大的这样一种方法

我们先看所有得益站点这样一个方法

所有得益站点它是按照这样一种模式

首先对所有站点确定一个非冗余分配方案,也就是说我们前面用的最佳适应法

把所有的站点上都确定一个非冗余的,比如说我分配一个数据片

然后接下来,我从全部的站点当中选择出一组站点来

然后对这组站点给它分配片段Ri,它的一个副本

在分配完了之后,我计算一下,我分配这个副本之后

这些站点所得到的检索效益是多大,我向这些站点分配Ri

那么我所得到的检索效益,也就是说我的检索效率提高了多少

如果这个检索效益要是大于从其他站点来对这个Ri进行更新的代价的话,那我就可以

如果说从这些站点上它的检索提高的效益比从其他站点上对Ri实行更新的代价要小

那我们就不对它进行分配了

所以它是从这个角度来对片段i进行冗余的分配

当然这个就是说,一方面我们需要有一些经验

另外实际上这个算法也是比较复杂的,需要不停的比较和对比,成本是比较高的

再有一种叫做附加拷贝法,首先也一样

对所有的站点确定一个非冗余分配方案,也是一样

然后接下来它就把片段,比如说我拿出一个Ri来

我来计算把这个Ri分配给所有站点所得到的总的收益

这个总的收益一般来说

我们是从检索效率的提高、更新代价的降低等等这些角度上来进行考虑

然后我得出一个总的效益,我们用Fi来表示

接下来我们还要计算比如说在某一个站点上分配了Ri之后

它获得的效益是多少,从这些个站点上找出一个分配了Ri获得的最大效益的一个站点

从它开始出发,比如说这个站点可能是j

我就从j开始出发,依次地附加一个Ri的拷贝

依次地比如说,我再加入一个站点,然后我附加一个Ri的拷贝

然后看看我的效益有没有提高,然后再依次地往上加新的站点

直到我加到某一个站点对于我得到的效益没有增加

或者说我得到的效益怎么也增加不到这个fi

或者说它对单个站点的效益没有一个特别大的提高

或者起码就增加为0了,这个时候我就为止

所以它就是按照这样一种方式,我先从某一个站点分配到Ri之后

我这个站点得到的效益最大,我从它开始一点点加入其它的站点

如果最后我加完了之后,我得到的效益并没有明显的提高

或者说我得到的效益基本上就是为0,那我就停止就行了

所以这叫附加拷贝法

当然我们讲了这两种方法实际上都是非常复杂的

使用起来也并不是那么简单的

有的时候我们得到的也并不一定是特别理想的一种状态

但无论如何,这毕竟是给我们提供了一种思路

这样的话,我们就把数据的分片和数据的分配给大家介绍这么多

从这个理论,我们得到了一个启示,或者说我们有这样一个结论

我们无论对数据进行分片也好,还是对它进行分布

我们都需要知道哪些信息呢?

我们需要知道应用在某些站点上被激活的次数

以及我们还需要知道某些应用对某些数据片的访问的这样一些参数

因此我们在对数据库进行设计的时候

我们都要对这些数据进行一个总结,给它一个表示

我们一般来说给这些参数划分这样一些表格

一个叫做频率表,它表达的是各个站点对每一个应用激活的次数

再有一个就是划分表,指我整个应用当中各实体它潜在的分片的这样一种规则

还有一个就是极化表,我给定站点发出一个应用之后

我访问某些片段的概率,有了这些我们就可以进行分片和分布的一些设计了

后面我们将给大家一个实例来说明分布式数据库设计的具体步骤和结果

高级数据库系统课程列表:

第一讲 数据文件的组织与索引技术

-1. 数据文件的组织

--1-1 数据文件的组织

-2. 索引的概念与分类

--1-2 索引的概念与分类

-3. B+树索引

--1-3 B+树索引(1)

--1-3 B+树索引(2)

-4. 散列索引

--1-4 散列索引

-5. 小结

--html

-6.练习--作业

第二讲 查询处理及优化

-1. 查询代价的测量及查询处理过程概述

--2-1 查询代价的测量及查询处理过程概述

-2. 关系操作的基础算法

--2-2. 关系操作的基础算法(1)

--2-2. 关系操作的基础算法(2)

-3. 查询表达式的运算

--2-3 查询表达式的运算

-4.查询优化机制

--2-4 查询优化机制

-5.小结

--html

-6.练习--作业

第三讲 数据管理与恢复技术

-1. 数据库的故障及可恢复模型

--3-1. 数据库的故障及可恢复模型

-2. 事务及日志的相关概念

--3-2. 事务及日志的相关概念

-3. 基于undo日志的恢复机制

--3-3. 基于undo日志的恢复机制

-4. 基于redo日志的恢复机制

--3-4. 基于redo日志的恢复机制

-5. 小结

--html

-6. 练习--作业

第四讲 事务并发调度的相关概念

-1. 并发调度及相关概念

--4-1. 并发调度及相关概念

-2. 可串行化调度

--4-2. 可串行化调度

-3. 冲突可串行化调度

--4-3. 冲突可串行化调度

-4. 小结

--html

-5. 练习--作业

第五讲 基于封锁的并发控制机制

-1. 锁的概念及封锁的原理

--5-1. 锁的概念及封锁的原理

-2. 两阶段锁协议

--5-2. 两阶段锁协议

-3. 多粒度锁及意向锁

--5-3. 多粒度锁及意向锁

-4. 死锁的处理

--5-4. 死锁的处理

-5. 小结

--html

-6. 练习--作业

第六讲 并发控制的其它机制

-1. 基于时间戳的调度

--6-1. 基于有效性检验的调度

-2. 基于有效性检验的调度

--6-2. 基于时间戳的调度

-3. 小结

--html

-4. 练习--作业

第七讲 分布式数据库基本概念

-1. 分布式数据库系统的产生及定义

--7-1. 分布式数据库系统的产生及定义(1)

--7-1. 分布式数据库系统的产生及定义(2)

-2. 分布式数据库系统的模式结构与功能结构

--7-2. 分布式数据库系统的模式结构与功能结构

-3. 分布式数据库系统中存在的技术问题

--7-3. 分布式数据库系统中存在的技术问题

-4. 小结

--html

-5. 练习--作业

第八讲 分布式数据库的设计

-1. 分布式数据库的设计方法、内容和目标

--8-1. 分布式数据库的设计方法、内容和目标

-2. 自顶向下方法构建数据库

--8-2 . 自顶向下方法构建数据库

-3. 数据的分片和分布设计

--8-3. 数据的分片和分布设计(1)

--8-3. 数据的分片和分布设计(2)

-4. 分布式数据库设计案例讲解

--8-4. 分布式数据库设计案例讲解(1)

--8-4. 分布式数据库设计案例讲解(2)

--8-4. 分布式数据库设计案例讲解(3)

-5. 小结

--html

-6. 练习--作业

第九讲 分布式数据库查询机制

-1. 分布式查询处理的步骤和代价

--1. 分布式查询处理的步骤和代价

-2. 基于等价变换的查询优化

--2. 基于等价变换的查询优化

-3. 基于半连接算法的查询优化

--3. 基于半连接算法的查询优化

-4. 基于直接连接算法的查询优化

--4. 基于直接连接算法的查询优化

-5. 小结

--html

-6. 练习--作业

第十讲 分布式数据库的事务管理及恢复机制

-1. 分布式事务概述

--1. 分布式事务概述

-2. 分布式事务的两阶段提交协议

--2. 分布式事务的两阶段提交协议

-3.分布式并发控制概述

--3.分布式并发控制概述

-4. 并发控制的加锁机制

--4. 并发控制的加锁机制

-5. 并发控制的时标技术

--5. 并发控制的时标技术

-6. 小结

--html

-7.练习--作业

高级数据库技术期末试题

-试题--作业

8-3. 数据的分片和分布设计(2)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。