【论文阅读】AN APPROACH BASED ON BAYESIAN NETWORKS FOR QUERY SELECTIVITY ESTIMATION

【论文阅读】一种基于贝叶斯网络的查询选择性估计方法

一、介绍

优化阶段的目标是在很短的时间内生成一个高效的查询计划,查询优化器利用成本模型为给定计划中的每个关系运算符生成基数估计值。基数估计通常基于从关系中收集并存储在数据库元数据中的一组统计数据,然它们通常不会捕捉属性依赖。
形式上一个查询Q,给定一组关系R、一组连接谓词J和一组属性谓词A上的查询,查询的基数计算如下:
在这里插入图片描述
其中P是查询的选择性,后面的是相关关系的笛卡尔积中的元组条数。问题是P不可用,此外估计它会很快导致组合爆炸,简化假设是为了逼近选择性同时确保现实的计算复杂性。
第一个假设是属性在每个关系内部和关系之间是独立的,这就是属性值独立性(AVI)。它允许简化计算如下:
在这里插入图片描述
其中P(Ar)是指属性R的选择性,P(ai)代表属性ai上谓词的选择性。实际上属性值独立性假设很容易出错,因为属性经常表现出相关性。然而它是极其实用的,因为每个分布p(ai)可以被压缩成一个一维的直方图。
接下来,连接谓词独立性假设意味着连接选择性可以独立计算,这导致以下近似:
在这里插入图片描述
假设我们有两个关系R和S,我们想在它们各自的属性R.K和S.F上连接这两种关系。在这种情况下,可以精确计算连接的选择性(用J表示):
在这里插入图片描述

如果一个连接中包含多个外键,前面的假设通常不成立。最后,连接一致性假设声明属性在连接后保持其分布。这允许以下简化:

在这里插入图片描述

大多数关系数据库都假设了前面所有的假设,这导致了下面的公式:
在这里插入图片描述
在实践中,以前的近似太粗糙,而且经常错几个数量级。然而,它只需要随属性数量线性增长的存储空间,并且不涉及任何禁止性计算。换句话说,精确的基数估计被用来换取低计算复杂度。自然的问题是,更好的权衡是否可能。也就是说,放松任何先前的假设。
许多工作已经发展到属性级别的概要,它近似于每个属性a的分布。这主要涉及使用直方图和其他研究充分的统计结构。虽然理论上合理,但这些方法无助于处理涉及多个属性谓词的常见查询。此外,已经提出了表级概要来捕获属性之间的依赖关系。问题是,这类方法(如多维直方图)通常需要的存储空间量会随着属性的数量呈指数级增长。表格级概要还包括各种抽样方法,这里的想法只是在数据库的一个样本上执行一个查询并推断基数。虽然它们不处理跨关系的依赖关系,但它们的计算效率很高,因为它们不需要连接。最后,模式级概要试图软化连接一致性和连接谓词独立性假设。尽管这些方法具有处理连接交叉相关性的潜力,但由于它们需要大量的连接,因此需要大量的计算资源。
目前已经提出了基于贝叶斯网络的精确模式级方法,贝叶斯网络分解一个分布,以便用低维分布的乘积表示它。每个低维分布捕获两个或多个属性之间的依赖关系。例如,分布P(头发,国籍)可以分解为P(头发|国籍)× P(国籍),因为一个人的头发颜色与其国籍相关。诀窍是找到正确的因子分解是一个NP难问题[18]。此外,产生估计值所需的时间随着分解的复杂性而增加。文献[16]中提出的方法成功地捕获了跨关系的属性依赖关系,但是它需要令人望而却步的计算复杂性,这使得它在实践中无法使用。[17]提出一种更简单的方法,最多只试图捕捉两者之间的依赖关系。虽然他们的建议更有效,但它仍然需要执行大量的连接。此外,两个提案中使用的因子分解结构会导致无法在线性时间内运行的推理过程。我们相信放弃现有提议的一些准确性会导致在准确性和计算复杂性之间取得更好平衡的方法。在这个程度上,我们建议只在每个关系中分解属性的分布。我们认为,对单个关系进行可靠的选择性估计是估计连接大小的基础。此外,我们提议扩展一种称为ChowLiu树的特殊类型的贝叶斯网络。这些允许我们使用在空间上有效的网络结构,并且可以在亚线性时间内查询。虽然我们的方法没有像[16]和[17]那样捕捉到那么多的依赖性,但它可以更快地编译,并且可以在更短的时间内产生选择性估计。此外,它仍然比假定独立的琐碎模型精确一个数量级。
本文的其余部分组织如下。第2节概述了现有的方法及其相关的优缺点。这也是我们介绍一些与贝叶斯网络相关的概念的地方。第3节是我们描述我们的模型,并展示它如何有效地用于选择性估计的任务。第4节将我们的模型与PostgreSQL的成本引擎和TPC-DS基准上的伯努利抽样估计器进行了比较。我们解释在什么情况下我们的模型成功了,在什么情况下它没有带来任何东西。最后,第5节总结并指出一些研究机会。

二、相关工作

2.1 分布估计

基于成本的查询优化中最突出的方法是近似给定数据库的属性分布。自从等宽直方图用于总结单一属性以来,这一直是一个研究领域。等高度直方图由于其可证明的较低平均误差而被普遍使用。同时[21]表明,最小化平均选择性估计误差的直方图是最小化每个桶内方差的直方图。这些直方图通常被称为V-最优直方图,并涉及令人望而却步的数学优化过程。作为妥协,[21]引入了有偏直方图的概念,以在记忆精确频率和近似频率之间找到平衡。直方图在理论上被很好地理解,并且在实践中被广泛使用,但是它们不能捕捉属性之间的依赖关系。
已经提出了多列直方图来处理两个或多个属性之间的相关性。虽然它们在理论上是可靠的,但在实践中很难构建,更新更是如此[23]。此外,它们需要的存储空间会随着属性的数量呈指数级增长。
为了减轻多维直方图的指数增长问题,一种方法是使用分布的因子化表示。这个想法是代表一个分布P(Ai,。。。,An)作为较小条件分布P(Ai | P parents(Ai))的乘积。例如,分布P(A1,A2,A3)可以估计为ˇP(A1,A2,A3) = P(A1|A2)P(A3|A2)P(A3)。P(A1,A2,A3)必然是一个近似值,因为它没有捕捉到A1,A2和A3之间的三向相互作用。好处是,尽管P(A1,A2,A3)是近似值,但它需要更少的存储空间。此外,如果a1和a3是独立的,则不会丢失任何信息。贝叶斯网络[18]已经被证明是找到这种近似的强有力的方法。然而,查询BN是一个NP-hard问题[24],并且根据网络的结构会花费大量的时间。此外,现成的实现并不限制最终近似的结构。这导致近似值,要么需要大量的存储空间,要么太慢,要么两者兼而有之。BNs是在单个表格数据集的背景下进行经典研究的。然而,在关系数据库中,数据包含在共享关系的多个关系中。[16]首先介绍了可以处理关系设置的概率关系模型。他们引入了连接指示器的概念,以放宽连接一致性假设。然而,对于结构学习和推理,他们使用现成的算法,其运行复杂性对于数据库环境来说太过令人望而却步。[17]扩展了这项工作,并提出将BN最多可以捕获的依赖关系限制在两个关系之间。即使他们的程序更有效,它仍然需要加入关系,尽管一次只有两个。这两个建议都在模式级别工作,并且需要执行大量的连接。尽管基于贝叶斯网络的现有方法看起来很有希望,但我们认为它们仍然太复杂,无法大规模使用。
学习分布的问题是它们不可避免地需要大量的存储空间。一种截然不同的方法是在数据库样本上执行查询,以便推断查询的基数。

2.2 抽样

抽样最常用于估计与单个关系相关的查询的选择性。最简单的方法是用概率pi对关系Ri进行采样。获得的样本ri将包含|Ri| ×pi个元组。为了估计查询的选择性,可以在相关联的样本上运行查询,并将输出的基数乘以p分之一。这通常被称为伯努利采样,并且在给定足够的样本量的情况下工作得相当好。还提出了自适应方法[10]来确定每个关系的最佳样本量。采样很有吸引力,因为它实现简单,并且自然地捕获属性之间的依赖关系。此外,可以对多个关系执行采样,以便捕获关系间的属性依赖关系。
跨多个关系进行采样是一项困难的任务。事实上[25]表明,独立的统一关系样本的连接不是关系连接的统一样本。已经为双向连接提出了许多方法[26,11]。他们的共同想法是使用散列函数h(a) → [0,1]来确保加入的样本共享密钥。假设R1有一个属性a1,它是关系R2的属性a2的外键。通过对两个属性应用相同的散列函数h(a ),可以通过保持满足h(a) < p的所有元组来获得保持连接关系的样本。这样,满足h(a) < p的两个关系的所有元组都将包含在样本中。联结结果大小的无偏估计量是J(R1,R2) =J(r1,r2) / p。虽然在理论上相当强大,但如果没有可用的索引,连接感知采样[27]需要禁止性地完全通过相关关系。此外,这种方法不一定扩展到涉及两个以上关系的连接[28]。

2.3 学习

为了完全避开查询优化固有的困难,已经提出了纠正错误的学习程序[29,30,14]。在数据库优化的情况下,学习已经被用来调整各种模型和记忆观察到的选择性。这是通过查询反馈来完成的,在查询执行阶段之后,成本模型可以访问实际基数[30]。通过将它所做的估计与实际值进行比较,它可以进行调整,以减少后续查询的错误。这个类别中最成功的方法是DB2的LEO优化器[29]。LEO采用的方法只是记住执行的查询计划中容易出错的部分的真实基数。这在给定查询重复运行的环境中非常有效。然而,这无助于估计看不见的查询的基数。最近还提出了一种基于深度学习的有趣方法[14]。除了LEO,学习方法还没有成熟到可以在实践中使用。

2.4 讨论

前面提到的所有方法在精确的基数估计、时间复杂度和空间复杂度方面提供了不同的折衷。一方面,直方图精确、快速、轻量。但是,如果希望获取属性依赖关系,它们需要大量的存储空间。另一方面,采样可以轻松捕获属性依赖;但是它太慢了,因为要么样本必须在线构建,要么加载到内存中。最后,学习是对问题的一种独创,但它对看不见的查询没有帮助。我们的贡献是使用贝叶斯网络来分解每个关系的属性分布。通过这种方式,我们可以捕获最重要的属性依赖关系,并忽略不重要的属性来保留存储空间。我们的方法的一个巨大好处是,我们可以在关联关系的样本上优化每个贝叶斯网络,以节省时间,而不会显著损失准确性。缺点是像大多数方法一样,我们忽略了不同关系的属性之间的依赖关系。

三、方法

3.1 找到一个好的网络

一个贝叶斯网络将一个概率分布P(X1, . . . , Xn)分解为条件分布乘积的形式。对于任何给定的概率分布P(X)可能存在很多的贝叶斯网络。例如,P(头发、国籍、性别)可以分解为P(头发|国籍)P(性别|国籍)P(国籍)以及P(头发|(国籍、性别))P(国籍)P(性别)(见图1)。
在这里插入图片描述

结构学习的目标是找到一个与P(X)紧密匹配的BN,同时保持较低的计算复杂度。事实上,对于任何给定的BN,存储它和计算边际?分布P(Xi)的成本取决于它的结构。
结构学习的经典方法是定义一个评分函数,确定BN在准确性和复杂性方面有多好,并对可能的结构进行数学优化。问题是这种程序太昂贵,不符合数据库通常强加的紧张计算预算。最近还提出了要求父母数量上限的线性规划方法;实际上,它们可以处理多达100个变量的问题,这远非理想。最后,我们还可以使用在多项式时间内运行的贪婪算法,但不一定能找到全局最优解。
Chow-Liu树[33]就是这样一种方法,它找到了一个BN,其中两个属性之间的依赖关系是唯一需要考虑的。建立一棵Chow-Liu树只需要三个步骤。最初,计算每对属性之间的互信息(MI)。这些值定义了一个全连通图G,其中每个MI值被转换为一个加权边。接下来,检索G的最小生成树(MST)。这可以在O(nlog(n))时间内完成,其中n是属性的数量。最后,必须通过随机选择一个节点并将其定义为根节点来引导MST。
我们选择Chow-Liu树有两个实际原因。首先,它们构造简单。唯一不能很好地扩展的部分是计算MI值。然而,这可以通过使用直方图等数据的粗略表示来加速。此外,该过程可以在关系的样本上运行。根据我们的经验,这两个技巧极大地减少了计算时间,而不会影响结果树的准确性。其次,输出网络是一棵树,因此每个节点只有一个父节点。这是可行的,因为从一棵树中检索边际分布——换句话说,推断——可以在线性时间内完成。此外,存储网络只需要保存n-1个二维分布和一个一维分布。除此之外,[33]证明了Chow-Liu树最小化了KL散度,这意味着从信息论的角度来看,它们是最好的树。缺点是它们不能捕捉两个以上变量之间的依赖关系——例如,只有在寒冷多雨的情况下才会下雪。然而,根据我们的经验,这种依赖关系并不常见。

3.2 估计条件概率

一旦找到令人满意的结构,就必须计算出必要的概率分布。事实上,回想一下,贝叶斯网络只不过是条件概率分布(CPD)的产物。给定一个或多个所谓的父变量的值,CPD给出变量的分布。例如,表2和表3是两个以国籍变量为条件的国家方案文件。
在这里插入图片描述
定义一个CPD所需的值的数量是C的P+1次方,其中c是每个变量的基数——为了简单起见,我们假设它是常数——p是父变量的数量。这源于这样一个事实,即每一个国家方案文件都与p + 1变量有关,每一个值的组合都必须加以说明。事实上,Chow-Liu树将每个节点的父节点数量限制为1,这意味着我们只需要为每个分布存储c的平方个值。此外,稀疏表示可以用来利用0频繁的事实。然而,如果变量的基数很高,那么仍然需要存储很多值。在受限的环境中,这可能会很成问题。
为了保持较低的空间复杂度,我们建议使用2.1小节中描述的端偏直方图。其思想是保留一个变量的k个最常见值的精确概率,并将其余概率放在j个等高区间内。使用等高间隔意味着我们不必存储每个间隔的频率。实际上,它只是1P I = 1P(M CVi),其中P(M CVi)表示最常见值的频率。相反,通过假设区间内的值是均匀分布的,我们只需要存储区间包含的不同值的数量。表4显示了带有间隔的CPD是什么样子的。在这个例子中,假设一个人是美国人,他的头发颜色在[深色,红色]区间的概率为1-(0.2+0.5)= 0.3。因为在[深色,红色]区间有3个不同的值,所以美国人有淡褐色头发的概率是1-(0.2+0.5)/3 = 0.1。在这里插入图片描述
以这种方式压缩CPD意味着我们只需要为每个分布存储(k+j)的平方个值。如果我们假设一个关系中有n个属性,那么存储一个贝叶斯网络总共需要(k + j)+(n-1)(k+j)平方个值——第一个(k+j)对应于网络的根节点,它不受任何其他变量的限制。这还有一个额外的优势,我们可以处理通常具有极高基数的连续变量。
幸运的是,使用GROUP BY和COUNT语句可以很容易地在关系数据库中检索CPD。此外,可以在关系的样本上计算CPDs,以减少计算时间。更重要的是,如果数据被附加到数据库中,那么如果假设贝叶斯网络的结构随着时间保持不变,那么只有CPD需要重新计算。然而,如果新的属性被添加到一个关系中,那么它的贝叶斯网络的结构必须从头开始重建。

3.3 乘积选择性估计

如前所述,推断是从贝叶斯网络中获得边际分布的任务。例如,我们可能想知道瑞典人有金色头发的概率(即P(hair =“金发碧眼”∧国籍=“瑞典”))。其思想是将获得的概率视为关联关系查询的选择性。对于查询中涉及的每个关系,我们识别查询中适用于该关系的部分,并确定其选择性。然后,通过假设不同关系的属性是独立的,我们简单地将选择性相乘。虽然这是一个强有力的假设,但我们认为捕获表级依赖仍然会对整体基数估计产生重大影响。当然,如果我们像[16,17]那样确定不同关系之间的依赖关系,我们会更加精确,但这必然涉及连接。换句话说,我们的方法在准确性和计算可行性之间提供了不同的权衡。
对BN进行推理是一个NP难问题[24]。然而,因为我们把我们的BNs限制在树上,我们可以充分利用只适用于树的目标构建算法。可变消除(VE)算法[34]是一种简单的精确推理算法,可应用于任何类型的网络拓扑。具体来说,VE的复杂度为O(nexp (w)),其中n为节点数,w为网络宽度[19]。然而,一棵树的宽度必然是1,这意味着VE可以在O(n)时间内运行。应用VE的公式在(7)中给出,其中从总共n个属性中查询k个属性。
在这里插入图片描述
VE的思想是以后顺序的方式在树上行走——即从叶子开始——并逐行总结每个CPD。这避免了不必要地计算超过所需的总和,并确保推理过程在线性时间内运行。通过注意到并非BN中的所有节点都需要获得给定的边际分布,可以进一步增加计算量[18]。事实上,VE算法只需在树的节点的必要子集上运行,该子集通常被称为斯坦纳树[35]。从树上提取斯坦纳树可以在线性时间内完成(见算法1)。
在这里插入图片描述
在我们的例子中,我们使用带间隔的CPD,这意味着我们必须围绕它们来定制价值工程算法。幸运的是,这很简单,因为我们只需要检查给定值是否是一个区间。范围查询可以通过在区间内插值来处理,而对于相等查询,我们可以假设区间内所有不同的值都是相同的频率。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值