FLAT:Fast, Lightweight and Accurate Method for Cardinality Estimation-FLAT,一个轻量且高效的基数估计模型

目前的因子分解可以分为独立因子分解和条件因子分解

对于独立因子分解,目前使用的方式使用直方图和SPN网络模型等,但是这些属于有损分解,对于条件因子分解而言,目前使用的是深度自回归网络,贝叶斯网络,这些虽然可以实现无损分解,但是时间成本太高,本文提出两种因子分解,对于弱相关属性,使用独立因子分解,对于强相关属性使用条件因子分解,在这种情况下在准确性和时延之间找到一个最佳平衡。这里对应的是VLDB 2021中的一篇综述。大部分的模型都不能在处理更新的时候找到一个权衡点,所以这里就是目的。

该论文的创新是使用Factorize节点对强弱相关的属性集 分别进行建模,同时使用split节点对强弱相关属性集内部进行建模。

论文的模型整体上分成三个部分,离线训练 在线分析 和增量更新

其中第一部分:离线训练的目的是为了接受输入的表和数据,得到一个模型,然后得到模型。

第二部分是在线分析是接受一个外部的查询Q,当前这部分的查询是作用在T表中,之后调用模型f,求得概率之后再乘以原表的基数作为近似的基数估计。

模型举例

构建FSPN树

分别涉及到以下的名词:
属性集:A=(A1,A2,A3,A4)
每一个属性都视作是r.v
假设现在令A3 和 A4是两个强相关的属性,A1 和 A2是两个弱相关的属性集,
强相关属性集 H=(A3,A4)
弱相关属性集 W =(A1,A2)
这时候 一个技术估计问题就转换成为一个求多元概率的密度模型

  1. 首先将当前的表作为根节点,之后将强相关和弱相关的属性集分别作为他的根节点,(之后的思路就是分别对其进行分割,迭代)
    在这里插入图片描述

  2. 进一步划分N2节点,A1和A2属性互为弱相关,但并非完全独立,对于SPN和衍生的模型而言(Benjamin Hilprecht, Andreas Schmidt, Moritz Kulessa, Alejandro Molina, Kristian Kersting, and Carsten Binnig. 2019. DeepDB: learn from data, not from queries!. In PVLDB.)可以通过合适的聚集和分片使的属性之间局部独立,这个过程被称为“上下文独立”。

举一个例子:以A2<50作为分片的条件,将上一步N2节点的子表再次划分成为T1和T2,在每个T的内部,A1和A2被认为是局部独立,之后对T继续做垂直分片,这时候可以划分L1,L2,L3,L4四个区域,在这里插入图片描述
分成以上四个区域,分别是L1,L2,L3,L4
最后每一个区域L,都只会包含一个属性列,最后被称为uni-leaf节点
在这里插入图片描述
上面是当前节点的概率密度的计算公式
其中每一个权值w代表行数和原表T的比值,从公式中可以知道当前的节点是sum节点。
对于N3节点,需要计算P(A3, A4|A1,A2),也就是P(H|W),本文提出根据W和H进行划分,假定划分出子集H1,H2…在同一个H内部,无需考虑W的影响,此时可以认为P(H|W)=P(H),本文成这种方式为上下条件一处contextual condition removal,此时将N3记作split节点。

在当前的例子中,A3和A4通过谓词A1<0.9划分出了两个子表,L5和L6,并由此产生了两个新的包含多个属性列的叶子节点,称之为multi-leaf节点。
在这里插入图片描述
在这里插入图片描述
以上是FSPN模型的完整构造过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WeChat098

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值