分布式数据库垂直分片如何计算?

在复习分布式数据库这一部分时,发现垂直分片较难理解,上网上查找资料,也发现找不到,固在考试结束后将自己的理解记录下来。
垂直分片的计算总体上分为三个步骤;1、属性亲和度矩阵AA的计算;2、聚类亲和度CA矩阵的计算;3、进行划分。
话不多说,我们开始以例题为例,进行引入
在这里插入图片描述
对于上述例子,给出了查询集合Q ,属性集合A,和站点集合S。

一、AA矩阵计算:
首先我们需要知道对于每个查询q,共访问的频次。对于查询q1来说,其访问的频次为站点S1的访问频次+站点S2的访问频次+站点S3的访问频次=30。同理,我们可以知晓对于查询q2,q3,q4,q5的访问频次,用矩阵的形式表示为[q1,q2,q3,q4,q5] = [30,15,40,10,15]

之后,我们定义属性亲和度AA,结果如下。这个亲和度矩阵的原理是这样的;
我们先来看图a,在a中关注数值不为0的,对于查询q1来说,数值不为0的属性为A2,A3,A5,这三个进行两两组合,可得到的组合为(A2,A3)、(A2,A5)、(A3,A5)然后再相应的AA矩阵中对应的位置填上q1的频次。即,(A2,A3)对应的位置为30:这里注意,每个组合会填上两次,因为矩阵是对角的。
同理,对于q2来说,不为0的位置为A1,A2,A3,A5,那么所得的组合为(A1,A2)(A1,A3)(A1,A5)(A2,A3)(A2,A5)(A3,A5),同样在其对应的位置填上q2的频次,如果原位置有数值,直接相加即可。
对于每个查询q,都执行上述的步骤,即可得到下面的AA矩阵
在这里插入图片描述
上述的这种方式,计算的相对来说较慢,因为相同的还要相加。有另一种方式,比较容易快的得到。比如:在查询q1中,我们得到了一下组合:(A2,A3)、(A2,A5)、(A3,A5),对于组合(A2,A3)中,我们在图a中观察,哪个查询同时在A2和A3中有数值:可以看到是查询q1、q2、q5:所以(A2,A3)处的值应该为q1+q2+q5 = 30+15+15 = 60,可以直接的得到。同理对于(A2,A5)来说,查询q1、q2 ,所以对应的数值为30+15 = 45,因此,这种方式可以很快速的得到AA矩阵。

下面对于对角线上的值进行计算。对角线(A1,A1)的值即为所有访问A1属性的查询加和。所以(A1,A1)上的值应该为 = q2+q3+q5 = 15+40+15 = 70,同理可计算其他对角线的值。

二、聚类亲和度矩阵CA的计算
CA的计算主要可以分为以下几步:
(1)初始化:从AA中任选一列,将其放入到CA中,一般选择第一列
(2)迭代。逐一选取剩余的n-i列(i是已经放入CA的列的数目)的每一列,尝试把他们放入到CA所剩余的i+1个位置上,所选择的位置应当对前面所描述的全局亲和度度量贡献最大,继续这一步骤,直到没有在可以放置的列
(3)行排序:一旦列的顺序决定,行的放置也应当改变,使得他们的相对位置和列的相对位置匹配
以AA矩阵为基础,初始化:在AA矩阵上随机选择一列(一般选择第1列)作为CA矩阵的第一列,之后,将第两列插入到CA中,初始时,我们默认有一个0列(其数据全部为0),则第二列无论插入第一列的左边还是右边都是一样的。(这个之后我们计算cont的时候可以知晓),但是一般第二列是会插入到第一列右边的。
之后将第三列插入到1,2列的位置。那么有以下三种插入方法:0-3-1,和1-3-2
cont(A0,A3,A1) = 2(bond(A0,A3)+bond(A3,A1)-bond(A0,A1)) = 2(0+3070+6030+3070+5545) = 16950
cont(A1,A3,A2) = 2(bond(A1,A3)+bond(A3,A2)-bond(A1,A2)) = 22050
所以选择将A3插入到A1和A2中间 。
同理,在将A4插入到A1,A2,A3时,其可以插入到A1的左边、右边。A2的右边等位置。同理我们可以计算A5.注意在插入时,插入到哪两个中间,则计算这三者的cont
最终得到的CA矩阵为:
在这里插入图片描述
最后需要调整CA矩阵的行,使其和列相同 ,形成一个对角矩阵

三,划分
划分主要是在CA矩阵的基础上,以对角线进行划分属性。如下图的这种形式所示

在这里插入图片描述

以CA矩阵为基础,
当n=1时,TA = {A4},BA = {A1,A2,A3,A5}
TQ为空,BQ={q1,q2,q4,q5},OQ= {q3},其中TQ是查询中仅仅只访问TA的,BQ是查询中仅仅访问BA的,OQ是查询中既访问TA集合又访问BA集合的。
同理当n=2时,TA = {A4,A1},BA = {A2,A3,A5}
TQ为空,BQ={q1,q4},OQ= {q2,q3,q5}
当n=3时,TA = {A4,A1,A5},BA = {A2,A3}
TQ为{q3},BQ={q4},OQ= {q1,q2,q5}
当n=4时,TA = {A4,A1,A5,A3},BA = {A2}
TQ为{q3,q4},BQ为空,OQ= {q1,q2,q5}
Z = CTQCBQ -COQ2,其中CTQ为ref(qk)的值乘以TQ集合的所有查询的频次相加
根据这个公式,我们可以计算相应的
Z1 = 1
0*(30+15+10+15)-40的平方 =-1600,这是因为TQ为空
同理可以计算Z2 = -4900,Z3=-3200,Z4=-3600
所以划分点n=1出,由于主键是A1,所以属性的划分为:
F={R1,R2}
R1= {A1,A4}
R2={A1,A2,A3,A5}

至此,垂直分片属性划分已完成

  • 22
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
分布式数据库原理与应用实验中,我获得了以下收获: 1. 深入理解分布式数据库的概念:通过实验,我对分布式数据库的概念有了更深入的理解。我了解到分布式数据库是将数据存储和处理分布在多个节点上的数据库系统,通过网络进行通信和协作。我学会了如何设计和部署分布式数据库系统,以支持大规模、高并发的应用需求。 2. 掌握分布式数据库的数据分片和复制策略:在实验中,我学习了常见的数据分片和复制策略,如垂直分片、水平分片、主从复制和多主复制等。我了解到如何根据应用需求和数据特点选择合适的策略,并学会了如何配置和管理分片和复制。 3. 熟悉分布式事务处理和并发控制:在实验中,我学习了如何处理分布式环境下的事务和并发控制。我了解到分布式事务的特点和挑战,并学会了使用分布式事务管理器来保证事务的原子性、一致性、隔离性和持久性。 4. 学会使用分布式数据库管理系统:在实验中,我还学习了一些常见的分布式数据库管理系统,如MySQL Cluster、Apache Cassandra等。我了解到这些系统的特点和使用方式,并学会了如何配置和管理这些系统。 5. 实践分布式数据库应用开发:通过实验,我有机会参与到一个完整的分布式数据库应用开发过程中。我学会了如何设计和实现分布式数据库应用,包括数据访问、数据操作和性能优化等方面。 总的来说,分布式数据库原理与应用实验让我对分布式数据库的原理和应用有了更深入的了解,并且掌握了一些常用的技术和工具。这些知识和技能对于我今后在大数据处理和分布式系统开发领域的工作将会非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值