CN114328570A - 一种数据库对查询进行基数估计的方法及装置 - Google Patents
一种数据库对查询进行基数估计的方法及装置 Download PDFInfo
- Publication number
- CN114328570A CN114328570A CN202111401639.7A CN202111401639A CN114328570A CN 114328570 A CN114328570 A CN 114328570A CN 202111401639 A CN202111401639 A CN 202111401639A CN 114328570 A CN114328570 A CN 114328570A
- Authority
- CN
- China
- Prior art keywords
- flow model
- standard flow
- data
- query
- estimation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 101
- 238000005070 sampling Methods 0.000 claims abstract description 37
- 230000008878 coupling Effects 0.000 claims description 34
- 238000010168 coupling process Methods 0.000 claims description 34
- 238000005859 coupling reaction Methods 0.000 claims description 34
- 238000012549 training Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 19
- 238000013528 artificial neural network Methods 0.000 claims description 17
- 230000006870 function Effects 0.000 claims description 15
- 230000009466 transformation Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 10
- 238000007476 Maximum Likelihood Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 5
- 230000001131 transforming effect Effects 0.000 claims description 4
- 238000012614 Monte-Carlo sampling Methods 0.000 abstract description 2
- 230000010354 integration Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 1
- RJKFOVLPORLFTN-LEKSSAKUSA-N Progesterone Chemical compound C1CC2=CC(=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H](C(=O)C)[C@@]1(C)CC2 RJKFOVLPORLFTN-LEKSSAKUSA-N 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种数据库中对查询进行基数估计的方法及装置,其中,该方法包括:确定目标查询表格,并构建标准流模型,利用标准流模型学习目标查询表格中的数据分布,得到训练后的标准流模型,之后接收数据库查询,根据训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将数据库查询转换为多维的积分问题。该方法利用蒙特卡洛采样方法,通过采样实现对基数的准确估计。通过直接学习数据的分布,保证了模型可以支持各种类型各种分布的查询,提高了方法的通用性。
Description
技术领域
本发明涉及信息检索技术领域,尤其涉及一种数据库对查询进行基数估计的方法及装置,该方法可以通过学习数据库表中数据的分布,在无需过去负载中查询日志的情况下准确地对各种数据库查询进行基数估计,以此帮助优化器选择出更优的执行计划来节约更多的执行时间。
背景技术
在数据库中,基数估计是查询优化中重要的问题。对于一个数据库查询,需要在预期执行时间内尽快执行计划,这依赖于对每个备选计划的各个子计划的执行结果事先进行基数估计。如何在尽量短的时延下占用尽量少的内存空间来得到尽可能准确的基数估计一直是一个关键问题。
相关技术中,传统的启发式方法使用直方图和一些统计信息或是通过采样的方法进行估计,但是直方图对于分布存在各列之间的独立性假设,这一假设在现实情况中数据分布复杂的情况下,一般不符合,因而会造成较大的误差。采样方法则面对着零行问题——当采到的条目全都不符合查询的限制时,则只能估计出非常不准确的结果。近年来出现了许多基于学习的方法尝试对这些问题进行解决。这些基于学习的方法大致可以分为两类:基于查询的方法和基于数据的方法。基于查询的方法通过历史执行过的查询记录,学习一个由查询到结果基数的映射函数,如CIDR’19的MSCN算法。以及,由于上述方法的泛化性受限于对负载分布不变的依赖,当未来查询负载发生变化时,整个模型都需要重新训练,不然无法给出准确的估计结果。基于数据的方法,则是借助神经网络学习数据库表中的数据分布,来利用学到的分布对各种查询进行估计。不同的基于数据的方法差别在于对列之间的独立性假设程度不同,假设程度越低,对数据分布学习得就越精确。
但是,在相关技术中,VLDB’20的DeepDB使用和积网络,对原始数据不断进行行和列的划分来描述数据分布,但假设最后划分出的部分彼此之间独立,因而在准确度上仍存在一定限制;VLDB’21的NeuroCard算法,利用自回归模型建模分布,摆脱了独立性假设,但是,该方法将所有类型的数据都当作离散型来学习分布,对于不同元素个数多的列会产生巨大开销和时延,估计结果准确度也会降低。因此,需要支持各种类型数据的并且没有独立性假设的模型,以及如何训练和使用上述模型来进行基数估计的方法。
发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种数据库对查询进行基数估计,以实现通过学习数据库中原始数据的分布,在占用较少内存的情况下高效地对各种查询提供更准确的基数估计,以帮助优化器生成更好的查询计划,以节约查询时间。
本发明的第二个目的在于提出一种数据库对查询进行基数估计装置。
本发明的第三个目的在于提出一种计算机设备。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
为达上述目的,本发明第一方面实施例提出了一种基于学习的基数估计器方法,包括:
确定目标查询表格;
构建标准流模型,利用标准流模型学习所述目标查询表格中的数据分布,得到训练后的标准流模型;
接收数据库查询,根据所述训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将所述数据库查询转换为多维的积分问题。
可选地,在本申请的一个实施例中,所述利用标准流模型学习所述目标查询表格中的数据分布,包括:
分别将所述目标查询表格中各种类型的数据编码转换为相同维度的连续型数值;
将多维连续型数值作为训练数据输入到标准流模型,使用最大似然估计对标准流模型进行训练,以使标准流模型学习到连续型数值以联合概率密度形式表达的数据分布。可选地,在本申请的一个实施例中,
可选地,在本申请的一个实施例中,所述根据所述训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将所述数据库查询转换为多维的积分问题,包括:
将所述概率密度形式表达的数据分布作为被积函数,构建蒙特卡洛积分方法以快速计算积分;
所述将所述概率密度形式表达的数据分布作为被积函数,构建蒙特卡洛积分方法以快速计算积分,包括:
对每一维度数据分桶来表示数据分布,利用桶的宽度表示不同维度数据不同取值范围的稀疏程度;
在每个桶内均匀采样,得到不同批次的采样点,将不同批次的采样点输入至标准流模型,输出每个批次的采样点的概率密度,利用各个批次的采样点的概率密度对各个维度的桶的宽度进行调整;
在判断桶宽度的变化小于一定阈值时,利用各个批次的采样点及标准流模型计算的概率密度完成对积分的估计;
在判断桶宽度的变化不小于一定阈值时,重复上述按照桶的宽度生成采样点和更新桶的宽度的步骤,直至收敛时整合完整迭代过程中采集到的点,得到积分的估计。
可选地,在本申请的一个实施例中,在得到积分的估计之后,还包括:
将估计的选择度与全表基数的乘积作为对基数的估计返回给优化器或用户。
可选地,在本申请的一个实施例中,所述分别将所述目标查询表格中各种类型的数据编码转换为相同维度的连续型数值,包括:
对于类别型数据,将各个类别离散化为整数形式,通过去量化方法对每个离散数值在离散间距内生成噪声进行调整,以将离散形式转变为连续形式;
对于数值型数据,在数值型数据为离散型时,利用上述方式将离散型的数值型数据通过去量化方式变换为连续型的数值型数据,在数值型数据为连续型时,利用上述方式中对离散型数据进行去量化相同的方法添加噪声;
对于字符串数据,利用完整的字符串数据简历字典树结构,按照深度优先遍历序将字典树中的作为字符串数据中任意字符串结尾的节点编号,利用编号实现将任意字符串数据中的字符串转换为离散形式的整数,再利用上述步骤中的方法将转换后的整数去量化,转化为连续形式。
可选地,在本申请的一个实施例中,所述构建标准流模型,利用标准流模型学习所述目标查询表格中的数据分布,得到训练后的标准流模型,包括:
构建标准流模型,所述标准流模型由多个耦合层组成,每个耦合层包括一个由多层全连接神经网络决定变换系数的变换函数,每个耦合层的输入输出维度相同;
将所述目标查询表格中的原始数据按照上述编码方式进行处理转换为连续形式的数据,再将连续形式的数据输入至标准流模型,在标准流模型中经过各个耦合层,传给每个耦合层对应的全连接神经网络,以使全连接神经网络输出得到耦合层变换的参数;
重复上述步骤,直至经过所有耦合层,得到最终的输出结果,使用最大似然估计作为标准流模型的损失函数,通过梯度下降与反向传播更新标准流模型中各个全连接神经网络的参数;
对训练得到的标准流模型进行验证,其中,将所述目标查询表格中所有条目编码输入到标准流模型,得到每一个条目的概率密度的估计,计算所有概率密度的对数之和,在所有概率密度的对数之和大于历史最大值时,将标准流模型作为最优标准流模型;
重复上述步骤,直至达到指定的训练次数,或者,标准流模型达到收敛。
为达上述目的,本发明第二方面实施例提出了一种数据库对查询进行基数估计的装置,包括:
确定模块,用于确定目标查询表格;
训练模块,用于构建标准流模型,利用标准流模型学习所述目标查询表格中的数据分布,得到训练后的标准流模型;
查询模块,用于接收数据库查询,根据所述训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将所述数据库查询转换为多维的积分问题。
为达上述目的,本申请第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现本申请第一方面实施例所述的弱监督单目车辆空间位置预测的方法。
为达上述目的,本申请第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请第一方面实施例所述的弱监督单目车辆空间位置预测的方法。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例所提供的一种数据库对查询进行基数估计方法的流程示意图。
图2为本发明实施例所提供的一种数据库对查询进行基数估计装置的结构示意图。
图3为本发明所述的数据库对查询进行基数估计的构建和训练的流程框图。
图4为本发明所述的数据库对查询进行基数估计的编码方式。
图5为本发明所述的数据库对查询进行基数估计中标准流模型的示意图。
图6为本发明所述的数据库对查询进行基数估计示例的示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述本发明实施例的数据库对查询进行基数估计方法和装置。
图1为本发明实施例所提供的一种数据库对查询进行基数估计的方法流程示意图。
如图1所示,该数据库对查询进行基数估计方法包括以下步骤:
步骤S1,确定目标查询表格,。
步骤S2,构建标准流模型,利用标准流模型学习目标查询表格中的数据分布,得到训练后的标准流模型。
在本发明的一个实施例之中,利用标准流模型学习目标查询表格中的数据分布,包括:
分别将目标查询表格中各种类型的数据编码转换为相同维度的连续型数值;
将多维连续型数值作为训练数据输入到标准流模型,使用最大似然估计对标准流模型进行训练,以使标准流模型学习到连续型数值以联合概率密度形式表达的数据分布。
具体而言,构建一个模型学习步骤S1确定的表中的数据分布,包括以下步骤:
步骤1:分别将表中各种类型(类别型、字符串等)的数据编码转换为相同维度的连续型数值表示;
步骤2:将经过步骤1处理的多维连续型数据作为训练数据输入到标准流模型中,使用最大似然估计进行训练,使标准流模型学习到连续型数据以联合概率密度形式表达的数据分布;
步骤3:接收数据库查询,将查询中的各个谓词转化为各个维度上区间的限制,最终将数据库查询转换为多维的积分问题。
在本发明的一个实施例中,根据训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将数据库查询转换为多维的积分问题,包括:
将概率密度形式表达的数据分布作为被积函数,构建蒙特卡洛积分方法以快速计算积分;
以及,将概率密度形式表达的数据分布作为被积函数,构建蒙特卡洛积分方法以快速计算积分,包括:
对每一维度数据分桶来表示数据分布,利用桶的宽度表示不同维度数据不同取值范围的稀疏程度;
在每个桶内均匀采样,得到不同批次的采样点,将不同批次的采样点输入至标准流模型,输出每个批次的采样点的概率密度,利用各个批次的采样点的概率密度对各个维度的桶的宽度进行调整;
在判断桶宽度的变化小于一定阈值时,利用各个批次的采样点及标准流模型计算的概率密度完成对积分的估计;
在判断桶宽度的变化不小于一定阈值时,重复上述按照桶的宽度生成采样点和更新桶的宽度的步骤,直至收敛时整合完整迭代过程中采集到的点,得到积分的估计。
本发明的一个实施例中,在得到积分的估计之后,还包括:
将估计的选择度与全表基数的乘积作为对基数的估计返回给优化器或用户。
具体的,在本公开的一个实施例之中,将上述标准流模型学习到的表中数据的概率密度形式的数据分布作为被积函数,构建一种蒙特卡洛积分方法快速计算这一积分,包括以下步骤:
步骤a:对每一维度数据分桶来表示分布,用桶的宽度表示不同该维度数据不同取值范围的稀疏程度。最初用等宽划分的桶进行初始化,如果有之前的记录,则使用之前蒙特卡洛积分过程中采过的点进行桶宽度的初始化;
步骤b:对桶均匀采样,并在每个桶内均匀采样,得到该批次的采样点。将该批次采样点输入到步骤2中的标准流模型中,得到这些采样点的概率密度作为输出。利用这一批采样点及对应的概率密度对各个维度的桶的宽度进行调整更新;
步骤c:如果步骤b中对桶的更新后,桶宽度的变化小于一定阈值,停止该过程,用各个批次采到的点及步骤2中标准流模型计算的概率密度完成对积分的估计。如果桶宽度的变化大于阈值,则回到步骤b,继续迭代:按照桶的宽度生成采样点、更新桶的宽度的过程,直到收敛时整合完整迭代过程中采到的点,得到积分的估计值;
步骤d:将步骤c中计算得到的结果作为对该查询结果的选择度的估计。将估计的选择度与全表基数的乘积作为对基数的估计返回给优化器或用户。
其中,在在本发明的一个实施例中,分别将目标查询表格中各种类型的数据编码转换为相同维度的连续型数值,包括:
对于类别型数据,将各个类别离散化为整数形式,通过去量化方法对每个离散数值在离散间距内生成噪声进行调整,以将离散形式转变为连续形式;
对于数值型数据,在数值型数据为离散型时,利用上述方式将离散型的数值型数据通过去量化方式变换为连续型的数值型数据,在数值型数据为连续型时,利用上述方式中对离散型数据进行去量化相同的方法添加噪声;
对于字符串数据,利用完整的字符串数据简历字典树结构,按照深度优先遍历序将字典树中的作为字符串数据中任意字符串结尾的节点编号,利用编号实现将任意字符串数据中的字符串转换为离散形式的整数,再利用上述步骤中的方法将转换后的整数去量化,转化为连续形式。
具体的,在本公开的一个实施例中,上述数据库中对查询进行基数估计的方法中,上述的将各种类型数据转换为连续型数值型的编码方法,其框架如图4所示,包括以下方法:
方法一:对于类别型数据,首先将各个类别离散化为整数形式。之后通过去量化方法给每个离散数值在离散间距内生成噪声进行调整,由此将离散形式转变为连续形式。通过这种方式,原本的每个离散值被用一个区间的范围表示。该去量化方法,是通过给离散型数据添加噪声,将离散数据连续化表示。以及,该离散间距,是对每个离散数值下一个大于它的值与它的差;
方法二:对于数值型数据,可分为离散型和连续型。在方法一中已说明了对于离散型的数值型数据通过去量化的方式将其变换为连续型。对于连续型数据,采用与方法一中对离散型数据进行去量化相同的办法添加噪声,区别在于离散间距的大小不再像离散化后连贯的整数一样全都一致,而是互不相同;
方法三:对于字符串数据,首先利用完整的字符串数据建立字典树结构。之后按照深度优先遍历序将字典树中的作为字符串数据中任意字符串结尾的节点编号。利用该编号方式,可以实现将任意字符串数据中的字符串转换为离散形式的整数。之后通过方法一将转换后的整数去量化,转换为连续形式。为了在推断阶段加速查询中LIKE谓词对字符串的定位,对所有字符串的长度不超过事先的设定的的子串建立辅助的字典树索引结构。所述字典树,是一种有序树,用于保存关联数组,其中的键是字符串,一个节点的所有子孙都有相同的前缀,也就是这个节点对应的字符串,而根节点对应空字符串。一般情况下,不是所有的节点都有对应的值,只有叶子节点和部分内部节点所对应的键才有相关的值。所述深度优先遍历序,是指通过深度优先搜索,按照搜索过程中到达每个结点的顺序进行标记得到的序号。所述深度优先搜索,是一种用于遍历或搜索树或图的算法。这个算法会尽可能深的搜索树的分支。当节点v的所在边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点,则选择其中一个作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。
在本公开的一个实施例之中,构建标准流模型,利用标准流模型学习目标查询表格中的数据分布,得到训练后的标准流模型,包括:
构建标准流模型,标准流模型由多个耦合层组成,每个耦合层包括一个由多层全连接神经网络决定变换系数的变换函数,每个耦合层的输入输出维度相同;
将目标查询表格中的原始数据按照上述编码方式进行处理转换为连续形式的数据,再将连续形式的数据输入至标准流模型,在标准流模型中经过各个耦合层,传给每个耦合层对应的全连接神经网络,以使全连接神经网络输出得到耦合层变换的参数;
重复上述步骤,直至经过所有耦合层,得到最终的输出结果,使用最大似然估计作为标准流模型的损失函数,通过梯度下降与反向传播更新标准流模型中各个全连接神经网络的参数;
对训练得到的标准流模型进行验证,其中,将目标查询表格中所有条目编码输入到标准流模型,得到每一个条目的概率密度的估计,计算所有概率密度的对数之和,在所有概率密度的对数之和大于历史最大值时,将标准流模型作为最优标准流模型;
重复上述步骤,直至达到指定的训练次数,或者,标准流模型达到收敛。
具体的,在本公开的一个实施例之中,上述数据库中对查询进行基数估计的方法中,上述的标准流模型框架如图5所示,其构建和训练,包括以下步骤:
(1)构建标准流模型,标准流模型由多个耦合层组成。每个耦合层是一个由多层全连接神经网络决定变换系数的变换函数,如仿射变换。每个耦合层的输入输出维度相同。
(2)对(1)中的标准流模型进行训练,即,将表中的原始数据按照上述编码方式进行处理,转换为连续形式。再将处理过的数据作为输入传递给标准流模型,在标准流模型中逐层经过各个耦合层。逐耦合层输入,传给每个耦合层对应的全连接神经网络,全连接神经网络输出得到该耦合层变换的参数。按照确定了参数的变换将该耦合层的输入使用变换进行处理,变换后的结果作为该耦合层的输出,传递给下一个耦合层。重复该过程,直到经过所有耦合层,得到最终的输出。最终的输出结果位于一个多维正态分布空间,由最终输出结果的坐标可以得到该点的概率密度。各个耦合层的变换对应的雅可比矩阵可以通过各个耦合层确定的变换参数确定,将这些方形的雅可比矩阵的雅可比行列式的结果与最终输出点处的概率密度相乘,即可以得到对原始输入点的概率密度的估计。使用最大似然估计作为标准流模型的损失函数,通过梯度下降与反向传播更新标准流模型中各个全连接神经网络的参数;
(3)对步骤(2)训练得到的标准流模型进行验证,即,将表中所有条目编码输入到步骤(2)建立的标准流模型,得到对每一个条目的概率密度的估计,计算所有概率密度的对数之和,当该值大于历史最大值时,作为最优模型保存到磁盘上;
(4)重复步骤(2)和步骤(3),直到达到指定的训练次数,或模型达到收敛。
步骤S3,接收数据库查询,根据训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将数据库查询转换为多维的积分问题。
示例的,在本公开的一个实施例之中,如图6所示:
设定本发明方法中的标准流模型已经提前构建和训练,数据库中数据的查询过程如下:
接收数据库的结构化查询,将查询中的各个谓词转化为各个维度上区间的限制。对于示例中的查询,其三个谓词“=Cook”,“>=1.6”和“Like‘A%’”通过给定的编码方式先转换为三个维度上的区间[0,1),[1.6,2.0)和[0,4),再通过标准化,将这些区间转换为[-1.345,-0.221),[-1.872,2.612)和[-1.846,1.034)。这些区间就是转化后的积分区间,原本的基数估计问题就变成了对这些积分区间求解积分的转换为多维的积分问题。在编码后的数据上训练得到的标准流模型的概率密度函数则是这一积分中的被积函数。对于这一示例查询,通过蒙特卡洛积分估计的过程包括以下步骤:
步骤1:对每一维度数据分桶来表示分布,用桶的宽度表示不同该维度数据不同取值范围的稀疏程度。如图6所示,最初每一维度都是用等宽划分的桶进行初始化。如果有之前的记录,则使用之前蒙特卡洛积分过程中采过的点进行桶宽度的初始化;
步骤2:对桶均匀采样,如图6所示,在每一维度上,均匀选取3个桶。并在每个桶内均匀采样,由此得到该批次的采样点,如图6中的白色圆,表示仅生成了采样点而尚未确定采样点的概率密度。将该批次采样点输入到训练完毕的标准流模型中,得到这些采样点的概率密度作为输出,图6中不同深浅颜色的圆表示这些采样点。利用这一批采样点及对应的概率密度对各个维度的桶的宽度进行调整更新;
步骤3:如果步骤2中对桶的更新后,桶宽度的变化小于一定阈值,停止该过程,用各个批次采到的点及步骤2中标准流模型计算的概率密度完成对积分的估计。如果桶宽度的变化大于阈值,则回到步骤2,继续迭代:按照桶的宽度生成采样点、更新桶的宽度的过程,直到收敛。可以看到图6中收敛后的桶相较最初均匀宽度的桶产生了较大的变化。之后整合完整迭代过程中采到的点,得到积分的估计值;
步骤4:将步骤3计算得到的结果作为对该查询结果的选择度的估计。将估计的选择度与全表基数的乘积作为对基数的估计,示例的估计结果为3,将其返回给优化器或用户。
以及,数据库对查询进行基数估计的估计器的构建和训练的流程框图,如图3所示。
本申请的技术效果:不含任何独立性假设地准确学习数据库表中数据的分布。在查询阶段,将查询转换为对数据各个维度上的区间限制,将基数估计转换为在合法区间内的转换为多维的积分问题。除了常见的范围、相等谓词,还进一步支持了字符串相关的复杂谓词。利用蒙特卡洛采样方法,通过采样实现对基数的准确估计。
图2为本发明实施例所提供的一种数据库对查询进行基数估计的装置的结构示意图。
如图2所示,该数据库对查询进行基数估计的装置包括以下模块:
确定模块,用于确定目标查询表格;
训练模块,用于构建标准流模型,利用标准流模型学习目标查询表格中的数据分布,得到训练后的标准流模型;
查询模块,用于接收数据库查询,根据训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将数据库查询转换为多维的积分问题。
本申请的优点:通过直接学习数据的分布,保证了模型可以支持各种类型各种分布的查询,提高了方法的通用性。
为达上述目的,本申请第三方面实施例提出了一种计算机设备,其上存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被处理器执行时实现本申请第一方面实施例所述的一种弱监督单目车辆空间位置预测的方法。
为达上述目的,本申请第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本申请第一方面实施例所述的一种弱监督单目车辆空间位置预测的方法。
尽管参考附图详地公开了本申请,但应理解的是,这些描述仅仅是示例性的,并非用来限制本申请的应用。本申请的保护范围由附加权利要求限定,并可包括在不脱离本申请保护范围和精神的情况下针对发明所作的各种变型、改型及等效方案。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (9)
1.一种数据库对查询进行基数估计的方法,其特征在于,该方法包括以下步骤:
确定目标查询表格;
构建标准流模型,利用标准流模型学习所述目标查询表格中的数据分布,得到训练后的标准流模型;
接收数据库查询,根据所述训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将所述数据库查询转换为多维的积分问题。
2.根据权利要求1中所述的方法,其特征在于,所述利用标准流模型学习所述目标查询表格中的数据分布,包括:
分别将所述目标查询表格中各种类型的数据编码转换为相同维度的连续型数值;
将多维连续型数值作为训练数据输入到标准流模型,使用最大似然估计对标准流模型进行训练,以使标准流模型学习到连续型数值以联合概率密度形式表达的数据分布。
3.根据权利要求2中所述的方法,其特征在于,所述根据所述训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将所述数据库查询转换为多维的积分问题,包括:
将所述概率密度形式表达的数据分布作为被积函数,构建蒙特卡洛积分方法以快速计算积分;
所述将所述概率密度形式表达的数据分布作为被积函数,构建蒙特卡洛积分方法以快速计算积分,包括:
对每一维度数据分桶来表示数据分布,利用桶的宽度表示不同维度数据不同取值范围的稀疏程度;
在每个桶内均匀采样,得到不同批次的采样点,将不同批次的采样点输入至标准流模型,输出每个批次的采样点的概率密度,利用各个批次的采样点的概率密度对各个维度的桶的宽度进行调整;
在判断桶宽度的变化小于一定阈值时,利用各个批次的采样点及标准流模型计算的概率密度完成对积分的估计;
在判断桶宽度的变化不小于一定阈值时,重复上述按照桶的宽度生成采样点和更新桶的宽度的步骤,直至收敛时整合完整迭代过程中采集到的点,得到积分的估计。
4.根据权利要求3中所述的方法,其特征在于,在得到积分的估计之后,还包括:
将估计的选择度与全表基数的乘积作为对基数的估计返回给优化器或用户。
5.根据权利要求2-4任一项中所述的方法,其特征在于,所述分别将所述目标查询表格中各种类型的数据编码转换为相同维度的连续型数值,包括:
对于类别型数据,将各个类别离散化为整数形式,通过去量化方法对每个离散数值在离散间距内生成噪声进行调整,以将离散形式转变为连续形式;
对于数值型数据,在数值型数据为离散型时,利用上述方式将离散型的数值型数据通过去量化方式变换为连续型的数值型数据,在数值型数据为连续型时,利用上述方式中对离散型数据进行去量化相同的方法添加噪声;
对于字符串数据,利用完整的字符串数据简历字典树结构,按照深度优先遍历序将字典树中的作为字符串数据中任意字符串结尾的节点编号,利用编号实现将任意字符串数据中的字符串转换为离散形式的整数,再利用上述步骤中的方法将转换后的整数去量化,转化为连续形式。
6.根据权利要求5中所述的方法,其特征在于,所述构建标准流模型,利用标准流模型学习所述目标查询表格中的数据分布,得到训练后的标准流模型,包括:
构建标准流模型,所述标准流模型由多个耦合层组成,每个耦合层包括一个由多层全连接神经网络决定变换系数的变换函数,每个耦合层的输入输出维度相同;
将所述目标查询表格中的原始数据按照上述编码方式进行处理转换为连续形式的数据,再将连续形式的数据输入至标准流模型,在标准流模型中经过各个耦合层,传给每个耦合层对应的全连接神经网络,以使全连接神经网络输出得到耦合层变换的参数;
重复上述步骤,直至经过所有耦合层,得到最终的输出结果,使用最大似然估计作为标准流模型的损失函数,通过梯度下降与反向传播更新标准流模型中各个全连接神经网络的参数;
对训练得到的标准流模型进行验证,其中,将所述目标查询表格中所有条目编码输入到标准流模型,得到每一个条目的概率密度的估计,计算所有概率密度的对数之和,在所有概率密度的对数之和大于历史最大值时,将标准流模型作为最优标准流模型;
重复上述步骤,直至达到指定的训练次数,或者,标准流模型达到收敛。
7.一种数据库对查询进行基数估计的装置,其特征在于,包括:
确定模块,用于确定目标查询表格;
训练模块,用于构建标准流模型,利用标准流模型学习所述目标查询表格中的数据分布,得到训练后的标准流模型;
查询模块,用于接收数据库查询,根据所述训练后的标准流模型将查询中的各个谓词转化为各个维度上区间的限制,最终将所述数据库查询转换为多维的积分问题。
8.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-6中任一所述的方法。
9.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111401639.7A CN114328570A (zh) | 2021-11-19 | 2021-11-19 | 一种数据库对查询进行基数估计的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111401639.7A CN114328570A (zh) | 2021-11-19 | 2021-11-19 | 一种数据库对查询进行基数估计的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114328570A true CN114328570A (zh) | 2022-04-12 |
Family
ID=81047091
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111401639.7A Pending CN114328570A (zh) | 2021-11-19 | 2021-11-19 | 一种数据库对查询进行基数估计的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328570A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115099414A (zh) * | 2022-05-31 | 2022-09-23 | 西安电子科技大学 | 一种基于索引表达式的梯度下降算法的建模方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110825738A (zh) * | 2019-10-22 | 2020-02-21 | 天津大学 | 一种基于分布式rdf的数据存储、查询方法及装置 |
US20210056108A1 (en) * | 2019-08-19 | 2021-02-25 | Technion Research & Development Foundation Limited | Estimating query cardinality |
CN113010547A (zh) * | 2021-05-06 | 2021-06-22 | 电子科技大学 | 一种基于图神经网络的数据库查询优化方法及系统 |
-
2021
- 2021-11-19 CN CN202111401639.7A patent/CN114328570A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210056108A1 (en) * | 2019-08-19 | 2021-02-25 | Technion Research & Development Foundation Limited | Estimating query cardinality |
CN110825738A (zh) * | 2019-10-22 | 2020-02-21 | 天津大学 | 一种基于分布式rdf的数据存储、查询方法及装置 |
CN113010547A (zh) * | 2021-05-06 | 2021-06-22 | 电子科技大学 | 一种基于图神经网络的数据库查询优化方法及系统 |
Non-Patent Citations (1)
Title |
---|
JIAYI WANG 等: "FACE: A Normalizing Flow based Cardinality Estimator", PROCEEDINGS OF THE VLDB ENDOWMENT, vol. 15, no. 1, 1 September 2021 (2021-09-01), pages 72 - 84 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115099414A (zh) * | 2022-05-31 | 2022-09-23 | 西安电子科技大学 | 一种基于索引表达式的梯度下降算法的建模方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111310438B (zh) | 基于多粒度融合模型的中文句子语义智能匹配方法及装置 | |
CN109241313B (zh) | 一种基于高阶深度哈希学习的图像检索方法 | |
Sun et al. | Learned cardinality estimation: A design space exploration and a comparative evaluation | |
Gatterbauer et al. | Linearized and single-pass belief propagation | |
US7743062B2 (en) | Apparatus for selecting documents in response to a plurality of inquiries by a plurality of clients by estimating the relevance of documents | |
CN113515539B (zh) | 一种数据库中数据的查询方法 | |
CN111581454A (zh) | 基于深度图压缩算法的并行查询表现预测系统及方法 | |
CN108733745B (zh) | 一种基于医学知识的查询扩展方法 | |
US6973446B2 (en) | Knowledge finding method | |
CN111444317A (zh) | 一种语义敏感的知识图谱随机游走采样方法 | |
Chen et al. | Efficient join order selection learning with graph-based representation | |
CN113515540A (zh) | 一种数据库的查询重写方法 | |
CN114328570A (zh) | 一种数据库对查询进行基数估计的方法及装置 | |
CN110580252B (zh) | 多目标优化下的空间对象索引与查询方法 | |
Zhu et al. | Developing cost models with qualitative variables for dynamic multidatabase environments | |
Malec et al. | Inductive logic programming meets relational databases: An application to statistical relational learning | |
CN116304213B (zh) | 基于图神经网络的rdf图数据库子图匹配查询优化方法 | |
Gou | Quick multiple test procedures and p-value adjustments | |
CN116861373A (zh) | 一种查询选择率估算方法、系统、终端设备及存储介质 | |
CN117010373A (zh) | 一种电力设备资产管理数据所属类别和组的推荐方法 | |
Barranco et al. | A B+-tree based indexing technique for fuzzy numerical data | |
CN114661912A (zh) | 基于无监督句法分析的知识图谱构建方法、装置及设备 | |
CN114168625A (zh) | 一种语法树的优化方法、装置 | |
Du et al. | Representation learning of knowledge graph integrating entity description and language morphological structure information | |
CN115600121B (zh) | 数据分层分类方法及装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |