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

在复习分布式数据库这一部分时,发现垂直分片较难理解,上网上查找资料,也发现找不到,固在考试结束后将自己的理解记录下来。
垂直分片的计算总体上分为三个步骤;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}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/740626.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于VTK9.3.0+Visual Studio2017 c++实现DICOM影像MPR多平面重建

开源库&#xff1a;VTK9.3.0 开发工具&#xff1a;Visual Studio2017 开发语言&#xff1a;C 实现过程&#xff1a; void initImageActor(double* Matrix, double* center, vtkSmartPointer<vtkImageCast> pImageCast,vtkSmartPointer<vtkImageReslice> imageRe…

6.折半查找

折半查找 基本思路在有序表中,取中间元素作为比较对象,若给定值与中间元素的要查找的数相等,则查找成功;若给定值小于中间元素的要查找的数,则在中间元素的左半区继续查找;若给定值大于中间元素的要查找的数,则在中间元素的右半区继续查找。不断重复上述查找过 程,直到查找成功…

数据结构——二分算法

二分查找 1. 在排序数组中查找元素的第一个和最后一个位置 代码实现&#xff1a; /*** Note: The returned array must be malloced, assume caller calls free().*/int binarySearch(int *nums, int numsSize, int target) {int l 0, r numsSize - 1; while (l <…

Kubernetes 中 ElasticSearch 中的 MinIO 审核日志

无论您是在本地还是在云中&#xff0c;您都希望确保以同构的方式设置工具和流程。无论在何处访问基础结构&#xff0c;您都希望确保用于与各种基础结构进行交互的工具与其他区域相似。 考虑到这一点&#xff0c;在部署您自己的 MinIO 对象存储基础架构时&#xff0c;深入了解您…

缓存雪崩、穿透、击穿的概念和如何避免

雪崩 概念 高并发请求多个key&#xff0c;此时多个key同时失效、不在缓存中&#xff0c;请求全部打到数据库&#xff0c;使数据库无法处理这么多的连接&#xff0c;导致数据库死机 如何避免 防止多个key同时过期&#xff0c;设置随机的过期时间不设置过期时间&#xff0c;有…

汽车抬头显示器HUD阳光倒灌实验太阳光模拟器

简述 HUD阳光倒灌实验是评估汽车抬头显示器&#xff08;HUD&#xff09;在强烈日照条件下的性能表现的一种测试方法。该实验通过模拟太阳光照射&#xff0c;检测HUD在阳光直射下的显示效果&#xff0c;以确保驾驶者在强烈日照下仍能清晰地看到HUD显示的信息&#xff0c;从而提…

【计算机视觉】人脸算法之图像处理基础知识(六)

图像直方图 图像直方图是描述图像中像素强度分布的一种统计图表&#xff0c;它是图像处理和计算机视觉领域中一个非常基础且重要的概念。图像直方图通常用于分析图像的亮度、对比度特性&#xff0c;以及在图像增强、阈值分割、特征提取等多种图像处理任务。 import cv2 impor…

ogg格式怎么转换为mp3?这四种转换方法非常好用!

ogg格式怎么转换为mp3&#xff1f;在当今数字化时代&#xff0c;音频文件格式的转换已经成为确保音频内容在各种设备和平台上无缝播放的至关重要的一环&#xff0c;尽管OGG格式拥有支持多声道的优势&#xff0c;但由于其使用率相对较低&#xff0c;这可能会在某些情况下导致兼容…

基于单片机的智能台灯控制系统

摘要&#xff1a; 文章设计一款单片机智能台灯控制系统&#xff0c;实现对台灯的手动和自动控制功能&#xff0c;以 STC89C52 单片机作为多功能智能台灯的主控制器&#xff0c;光电检测模块检测坐姿&#xff0c;红外传感器检测人体&#xff0c;光敏电阻检测光强&#xff0c;同…

数字人视频剪辑解决方案,个性化定制服务

如何高效、专业地剪辑出高质量的数字人视频&#xff0c;却成为众多企业面临的难题。针对这一挑战&#xff0c;美摄科技凭借其在人工智能、计算机视觉等领域的深厚积累&#xff0c;推出了面向企业的数字人视频剪辑解决方案&#xff0c;为企业带来前所未有的视频制作新体验。 一…

RN开发搬砖经验之—“Calculated frame index should never be lower than 0“崩溃问题分析

问题重现 崩溃堆栈&#xff1a; Back traces starts. java.lang.RuntimeException: java.lang.IllegalStateException: Calculated frame index should never be lower than 0at com.facebook.react.animated.NativeAnimatedModule$1.doFrameGuarded(NativeAnimatedModule.ja…

qt开发-12_QScrollArea

在 Qt 中&#xff0c;QScrollArea 是用于显示可以滚动内容的控件&#xff0c;通常用于处理视图中内容超出可见区域的情况。它提供了一种在有限的视窗内显示大量内容的解决方案&#xff0c;如显示大图像、长文本、多个小部件等。 常用方法和属性 setWidget(QWidget *widget)&am…

深入了解 GPT-4 和 ChatGPT 的 API---OpenAI Playground

文章目录 基本概念OpenAI API 提供的可用模型在 OpenAI Playground 中使用 GPT 模型 掌握GPT-4 和 ChatGPT 的 API 的使用方法&#xff0c;以便有效地将它们集成到 Python 应用程序中。首先&#xff0c;需要了解 OpenAI Playground。这将使你在编写代码之前更好地了解模型。接着…

Jenkins教程-8-上下游关联自动化测试任务构建

上一小节小节我们学习了一下Jenkins自动化测试任务发送测试结果邮件的方法&#xff0c;本小节我们讲解一下Jenkins上下游关联自动化测试任务的构建。 下面我们以一个真实的自动化测试场景来讲解Jenkins如何管理上下游关联任务的触发和构建&#xff0c;比如我们有两个jenkin任务…

go语言day4 引入第三方依赖 整型和字符串转换 进制间转换 浮点数 字符串

Golang依赖下载安装失败解决方法_安装go依赖超时怎么解决-CSDN博客 go安装依赖包&#xff08;go get, go module&#xff09;_go 安装依赖-CSDN博客 目录 go语言项目中如何使用第三方依赖&#xff1a;&#xff08;前两步可以忽略&#xff09; 一、安装git&#xff0c;安装程序…

如何将重量传感器 HX711 与 Arduino 一起使用

How to use a Weight Sensor / Load Cell HX711 with an Arduino 原文 OVERVIEW We’ve all used a scale to determine the weight of something at some point in our lives. Using a Load Cell or Weight sensor you can add this capability to your Arduino projects.…

【面试题】面试官:判断图是否有环?_数据结构复试问题 有向图是否有环

type: NODE;name: string;[x: string]: any; }; [x: string]: any;}; export type Data Node | Edge; 复制代码 * 测试数据如下const data: Data[] [ { id: ‘1’, data: { type: ‘NODE’, name: ‘节点1’ } }, { id: ‘2’, data: { type: ‘NODE’, name: ‘节点2’ } },…

【kaggle数据集无法下载解决办法】

kaggle数据集无法下载的解决办法 当我们在做机器学习相关问题的时候&#xff0c;需要到kaggle网站上下载数据集&#xff0c;但是很多时候速度很慢或者连接超时等问题&#xff0c;此时解决办法如下&#xff1a; 在本地安装Kaggle API包 打开终端输入如下指令&#xff1a; pip i…

【NPS】哑终端设备如何实现域VLAN动态分配

在【NPS】微软NPS配置802.1x&#xff0c;验证域账号&#xff0c;动态分配VLAN&#xff08;有线网络续篇&#xff09;中&#xff0c;已经通过C3PL策略配置实现了802.1x验证没有通过时&#xff0c;自动分配一个Guest VLAN&#xff0c;以确保用户至少能够访问基本的网络服务。问题…

使用ChatGPT进行数据分析和可视化,12个专业顶级提示词指令,轻松上手使用

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。可以和我&#xff08;yida985&#xff09;交流学术写作或ChatGPT等AI领域相关问题&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步。 高级学术…