AI4DB-Cardinality Estimation

news2024/10/6 14:38:43

一个学期已经结束了,通过这篇文章总结一下自己在CE方面所学习的内容。

由于大数据技术的飞速发展,使数据库在查询方面面临很大的挑战。原来数据量不大的时候,查询可以在很快的时间内得到结果,但是现在动辄就是上万上千万甚至上亿的数据集,其执行时间可能根据处理查询方式的不同而存在很大的差异,从几分之一秒到几个小时不等。查询优化应运而生,查询优化是许多数据库领域的一个重要课题,查询优化是一个自动化的过程,它的目的是希望通过最少的时间来处理给定的查询。其中不同的查询处理策略对应不同的执行时间。 经过几十年的研究,最开始都是基于单表的研究,现在大家基于单表的研究基本上都可以取得比较好的结果,现在更多是基于多表的研究,但是基于多表的研究比单表要复杂很多,其中主要表现在相关性方面。 本文将方法大致分为两类,传统的方法和基于学习的方法,传统的方法中包含基于概要的方法和采样的方法。而对于后者基于学习的方法中也可以分为两类,查询驱动和数据驱动,其中基于查询驱动的方法包括基于回归的方法和NN网络的方法,而对于数据驱动中主要包含核密度估计的方法、自回归方法以及和乘网络的方法。
在这里插入图片描述

1. CE的定义
给定一个数据表 T,以及查询 Q,基数估计便是需要估计查询结果的大小。等价地,基数估计也可以表达为对查询选择性 (selectivity)的估计,这样最终的查询基数可通过选择性和整表大小的乘积得到。

2.方法分类及介绍
已经存在的的这些模型,分为传统的方法和基于Learning的方法:传统方法是依赖数学模型。learning的方法底层当然也是数学模型,因为learning的本质还是数学。但得益于AI/CV/NLP领域的快速发展,近几年涌现出来的各种各样的强大模型 也给数据库带来了新的思考机会。

Learning的基数估计基本可以分为三个方向:query-driven, data-driven and hybrid-driven (combine data and query)。

Query-driven就是从过去的查询query的样本总学习。思想就是有监督学习,当收集到了足够多的历史查询样本和其对应的cardinlity结果作为label。就可以借助当前各种强大模型去build up监督学习的模型。SIGMOD/VLDB在过去4年中涌现出来很多这个方向的paper。其实在近些年慢慢就越来越少出现基于query的文章了,因为基于Query的模型有自己天然的弱点,就是不能将表中间的附带的信息融入进去。

Data-driven就是从dataset中建立数据分布模型。思想就是无监督学习,但可以对一个数据集build up一个足够复杂的数据模型,从一定程度上也就描述出了之前提到的多表之间的数据相关性,模型可以意识到table A的一个key可能匹配table B的10w行数据。这个方向在SIGMOD/VLDB上 我觉得阿里达摩院的研究挺好的。

Hybrid-driven 比较好懂了, 就是把query样本的信息 和 dataset的信息同时利用起来。

2.1 基于回归的方法
在训练阶段,首先构建一个查询池并获取每个查询对应的标签,然后通过查询特征化模块,将每个查询转换成特征向量。这些特征向量不仅包含查询信息,还可以选择性地包含数据中的一些统计信息。通过以上的这些信息得到一个学习器,最后通过这个学习器估计query 的果。 回归方法主要有四种:MSCN[4]、LW-XGB[1]、LW-NN[1]、DQM-Q[5],下面分别介绍这四种回归方法并介绍了每一种方法的具体执行方法。
在这里插入图片描述

2.1.1 MSCN[4]方法

MSCN[4]是多集卷积网络的专用深度神经网络模型,MSCN[4] 可以支持连接基数估计。它将查询表示为包含三个模块(表、连接和谓词模块)的特征向量。每个模块都是一个双层神经网络,不同模块的输出被连接起来并送入最终输出网络,该网络也是一个双层神经网络。MSCN[4] 使用物化样本丰富训练数据。谓词将在样本和位图上进行评估,其中每个位表表示样本中的元组是否满足谓词,这被证明是非常有必要的[8,9]。
在这里插入图片描述

2.1.2 LW-XGB/NN[1]方法

由于 LW-XGB[1]方法和 NN[1]方法在实现的时候基本相似,所以这里将两者放在一起进行说明。LW-XGB/NN[1]方法引入了一种轻量级的选择性估计方法。它的特征向量由两部分组成:范围特征和CE 特征。范围特征表示一组范围谓词。CE 特征代表启发式估计器(例如,假设所有列都是独立的)。 这里面的 CE 特征可以从数据库系统中可用的统计信息中廉价地导出。LW-NN[1] (LW-XGB[1]) 使用生成的特征训练神经网络(梯度提升树)模型。与最小化均值 q 误差的 MSCN[4] 不同,它们最小化对数转换标签的均方误差(MSE),这等于最小化 q 误差的几何均值,对较大的误差具有更多的权重,并且也可以有效地计算。

2.1.3 DQM-Q[5]方法

DQM-Q[5]提出了一种不同的特征化方法。它使用单热编码对分类列进行编码,并通过自动离散化[10]将数值属性视为分类属性。DQM-Q[5]训练神经网络模型。当真实世界的查询工作负载可用时,DQM-Q[5] 能够扩充训练集并使用扩充集训练模型。

2.2 联合分布的方法

联合分布的方法在训练阶段,首先将数据转换为可用于训练联合分布模型的格式。在推理阶段,给定一个查询,然后生成一个或多个对模型的请求,并将模型推理结果组合成最终的 CE 结果。为了处理数据更新,联合分布方法需要更新或重新训练联合分布模型。 联合分布方式有 Naru[6]、DeepDB[7]、DQM-D[5]三种。与直方图和抽样等传统方法相比,这些新方法采用更复杂的模型来进一步捕获数据中的附加信息,例如列之间的细粒度相关性或条件概率。接下来将详细介绍联合分布的三种方法。

2.2.1 Naru[6]和DQM-D[5]方法

由于 Naru[6]和 DQM-D[5]方法有一定的相似性,所以这里就主要讲述 Naru[6]方法。Naru[6]使用乘积规则将联合分布分解为条件分布。Naru[6]采用最先进的深度自回归模型,如MADE 和Transformer 来近似联合分布。联合分布可以直接返回结果给点查询。为了支持范围查询,作者采用了基于抽样的方法,该方法以自适应方式运行重要性抽样。具体来说,Naru[6]使用了一种名为渐进采样的新型近似技术,它根据条件概率分布的每个内部输出逐列对值进行采样。

2.2.2 Sum-Product Network 方法

这个模型通过构建Sum-Product Network(SPN 树)来捕获联合概率分布[11],它的关键思想是递归地将表拆分为不同的行簇和列簇。通过行簇和列簇计算得到CE,在对行进行分割的时候可以使用 K-means 进行,在对列进行分割的时候需要考虑一些因素,也就是相关性,表中的有些列可能是相关的,这里使用皮尔逊相关性系数计算得到最后的结果,对比计算表中的任意两列,比较其中相关性最大的两列,然后将它们合并起来。
在这里插入图片描述

3、以上提到的这些是在现在已经应用的模型,目前的话觉得这些模型还是处于预研的状况,暂时还不能用于工用,离嵌入MySQL,PostgreSQL可能还是有一段距离的。

组内导师的指导方向还是很清晰明朗的。说一下大概的路线吧,开始是从清华大学李国良老师的AI Meets DB综述开始,全方面的讲述了 AI4DB and DB4AI的林林总总,之后将文中出现的模型找出来,看看所在的文章,在学习了这些模型之后,又看了一些范围稍微小点的综述,比如说是 Are We Ready For Learned Cardinality Estimation?" Proc. VLDB Endow. 14, 9 (2021), 1640–1654.,这篇详细讲述了上面提到的这些模型,并且指出了一些研究方向。之后比较好的一篇综述是 Leis, Viktor, Andrey Gubichev, Atanas Mirchev, Peter Boncz, Alfons Kemper, and Thomas Neumann. "How good are query optimizers, really?."Proceedings of the VLDB Endowment9, no. 3 (2015): 204-215.虽说是稍微早点的文章,但是看着觉得还是很有见解的。

想试试朝增量式更新的方向,但是在Are we ready文章出来之后就已经有做过相关的方向,也就是在之前文章中提到的FSPN,基于DeepDB中的SPN,其中提到了增量式更新,可能仅仅只是提到了这个,感觉并没有应用到这个方向,但是得到的效果还是挺好的。

4、寒假的话,打算先做其他的,打算把代码能力再提升一点,要不然在有想法的时候总是捉襟见肘。另外的话打算水一些算法吧,找一下之前的感觉,最后看看之前和师兄了解的方向。

[1] A. Dutt, C. Wang, A. Nazi, S. Kandula, V. R. Narasayya, and S. Chaudhuri.
Selectivity estimation for range predicates using lightweight models. Proc.
VLDB Endow., 12(9):1044–1057, 2019
[2] Z. Yang, E. Liang, A. Kamsetty, C. Wu, Y. Duan, P. Chen, P. Abbeel, J. M. Heller-
stein, S. Krishnan, and I. Stoica. Deep unsupervised cardinality estimation. Proc.
VLDB Endow., 13(3):279–292, 2019
[3] A. Dutt, C. Wang, A. Nazi, S. Kandula, V. R. Narasayya, and S. Chaudhuri.
Selectivity estimation for range predicates using lightweight models. Proc.
VLDB Endow., 12(9):1044–1057, 2019
[4] A. Kipf, T. Kipf, B. Radke, V. Leis, P. A. Boncz, and A. Kemper. Learned
cardinal-ities: Estimating correlated joins with deep learning. In CIDR 2019, 9th
BieNN[1]ialConference on INNovative Data Systems Research, Asilomar, CA,
USA, January13-16, 2019, Online Proceedings. www.cidrdb.org, 2019
[5] S. Hasan, S. Thirumuruganathan, J. Augustine, N. Koudas, and G. Das. Deep
learning models for selectivity estimation of multi-attribute queries. In Pro-
ceedings of the 2020 International Conference on Management of Data,
SIGMODConference 2020, online conference [Portland, OR, USA], June 14-19,
2020, pages1035–1050. ACM, 2020
[6] Z. Yang, E. Liang, A. Kamsetty, C. Wu, Y. Duan, P. Chen, P. Abbeel, J. M. Heller-
stein, S. Krishnan, and I. Stoica. Deep unsupervised cardinality estimation. Proc.
VLDB Endow., 13(3):279–292, 2019
[7] B. Hilprecht, A. Schmidt, M. Kulessa, A. Molina, K. Kersting, and C. BiNNig.
DeepDB: Learn from data, not from queries! Proc. VLDB Endow.,
13(7):992–1005,2020.
[8] A. Kipf, T. Kipf, B. Radke, V. Leis, P. A. Boncz, and A. Kemper. Learned
cardinal-ities: Estimating correlated joins with deep learning. In CIDR 2019, 9th
BieNNialConference on INNovative Data Systems Research, Asilomar, CA, USA,
January13-16, 2019, Online Proceedings. www.cidrdb.org, 2019

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构之红黑树的生成、添加以及删除详解(附代码)

一,红黑树的来历 红黑树,首先是一个二叉树,对于二叉树,人们为了提升它的搜索效率,降低时间复杂度,创造出了二叉搜索树,把时间复杂度降低为对数级(LOGn),但是会出现一些极…

zookeeper之基本使用及实现分布式锁

写在前面 本文一起看下zk的基本用法。 安装 。 1:数据结构 采用类似于linux系统的文件系统存储结构,但不同于Linux系统文件,zk每个节点都可以存储数据,结构如下图: 节点类型分为如下四种: PERSISTENT&…

RK3568平台开发系列讲解(设备驱动篇)中断下文之tasklet的使用

🚀返回专栏总目录 文章目录 一、tasklet 的概念二、tasklet 参考步骤沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们一般将中断分为上下两个部分,分为上半部,下半部。上半部完成有严格时限的工作(必须),例如回复硬件等,这些工作都是在禁止其他中断情况下进…

汽车相关概念记录

目录 一、汽车电路相关概念 1.1、两个电源 1.2、单线制 1.3、低压直流供电 1.4、常电与ACC 1.4.1、大众ACC供电开关 1.4.2、奥迪ACC开关 二、电子电路 2.1、三极管 2.1.2、截止状态 2.1.3、放大区 2.1.4、饱和区 2.1.4、实例分析 一、汽车电路相关概念 1.1、两个电…

CIO40— 2022 行平常心,做自由人 (3年之约已满)

今天的天空依然很蓝。认识还是在那个不戴口罩的夏天。 感谢IT行业给了我们帮助。 IT将交流植根于微信群,微信群既是信息的集散地,也是良好实践的方案池。在工作中碰到的问题,只要在IT微信群中求助,大家都是知无不言&#xff0c…

C# 异步编程

一 异步编程 1 异步 asynchronize 2 主要解决的事情是 ① 等待一些耗时的任务(特别是文件,网络操作)而不阻塞当前任务; ② 异步编程提高响应能力(特别是UI) 开始一个任务后,让任务在离感应线…

机器学习:图文详细总结马尔科夫链及其性质(附例题分析)

目录0 写在前面1 从一个实例出发2 马尔科夫链3 马氏链的基本性质4 C-K方程5 平稳状态分布6 遍历性与例题分析0 写在前面 机器学习强基计划聚焦深度和广度,加深对机器学习模型的理解与应用。“深”在详细推导算法模型背后的数学原理;“广”在分析多个机器…

canopen4.0-canfestiva移植以及同步帧发送

1.canfestival移植入 工程包: 一、canfestival系列教程之程序移植 1.1、首先准备一个hal工程 ,cubmx --------------RCC配置 -----------SYS配置 ----------时钟配置 -----canopen定时器配置(开启中断) --------------can配置波特率,接收中断

CSS3知识点精学

CSS3 被拆分为"模块"。旧规范已拆分成小块,还增加了新的。 一些最重要 CSS3 模块如下: 选择器盒模型背景和边框文字特效2D/3D转换动画多列布局用户界面css引入方式 内嵌式:CSS写在style标签中,style标签虽然可以写在…

PE格式的base reloc分区

https://0xrick.github.io/win-internals/pe7/ 程序雕塑被编译之后,编译器假设可执行文件将会在特定1的v z基地址被加载,这个地址被保存在image_optional_header的imagebase成员中,一些地址会被计算出来然后硬编码到可执行文件中 出于各种原…

malmquist指数案例分析

传统的DEA模型可以反应静态的投入产出效率情况,但如果是面板数据,则需要使用malmquist指数进行研究。malmquist指数可以分析从t期到t1期的效率变化情况。Malmquist指数可分解为技术效率(EC)和技术进步(TC)&…

Java高手速成│Java程序怎样和数据库对话

从上一篇 Java高手速成│编写你第一个数据库程序 的例子中可以看出,Java和数据库的连接和对话离不开JDK库类,如java.sql包中支持数据库编程的各种API类、数据库软件DBMS、JDBC驱动软件或Java Connector以及你编写的数据库编程代码。 并且,在…

基础不牢,地动山摇系列 ------ 软硬通吃 unity常用API

👨‍💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏 unity 实战系列 ⭐相关文章⭐ ——————————————————— -关于游戏剧情模式中用到的基础简单A…

第01讲:Git安装及基本操作

一、什么是Git 版本控制系统(VCS)是将『什么时候、谁、对什么文件做了怎样的修改』这样的信息以版本的形式保存并进行管理的系统。 简单来说,版本控制系统会去记录它所管理的文件的『历史版本』。 版本控制系统 “不是网盘,而胜…

linux常用命令(一)-路径切换及查看

切换路径-cd 我们可以使用cd(change directory,切换目录)的命令来进行目录切换 常规 其命令格式为 cd [相对路径或绝对路径] 例如: // 使用相对路径,切换到postfix目录下 cd ../postfix// 使用绝对路径切换到/var/…

Linux操作系统实验1——地址转换

实验要求: 1.在内核中先申请一个页面,使用内核提供的函数,按照寻页的步骤一步步的找到物理地址。这些步骤就相当于我们手动的模拟了mmu的寻页过程。(paging_lowmem.c) 2.通过mmap将物理内存的数据映射到一个设备文件中。 通过访问该设备就可以…

美图商业化2.0:探寻多元增长曲线

【潮汐商业评论/原创】 数字化智能化浪潮正席卷而来。与此前的工业革命、信息技术革命一样,这场箭在弦上的“数智化革命”核心也在于技术的突破与应用。 今年以来,AIGC作为AI技术在内容生产领域的应用,迎来了全球大厂的争相布局&#xff0c…

tensorflow2.x多层感知机模型参数量和计算量的统计

当创建了一个多层感知机模型后,如何调用接口获取该模型的参数量和计算量?首先,打印出模型结构,可通过graphviz模块实现 # 加载模型 model keras.models.load_model(modelPath) tf.keras.utils.plot_model(model, to_filemodel.p…

linux ubuntu 如何自动定时备份数据库到服务器 mysql mysqldump cron

linux ubuntu 如何自动定时备份数据库到服务器 mysql mysqldump cron 一、需求描述 我有一个小日记应用,从 2019 年到 2022 年已经出现了两次比较严重的数据丢失的情况,一次是服务器错误,一次是人为。 所以我急切需要它能自己自动备份数据库…

基于servlet+jsp+mysql实现的java web校园车辆管理系统

一、项目简介 本项目是一套基于servletjspmysql实现的java web校园车辆管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严…