环球网校是美国纳斯达克上市企业欢聚时代(NASDAQ:YY)旗下品牌 | 住房和城乡建设部 建筑人才培训合作单位
您现在的位置在: > 学历考试 > 自考 > 考试动态 >

2023年度ACM/PODS国际数据管理大会(2023)获奖

2023-07-13 来源:网络 作者:佚名

机器之心专栏

机器之心编辑部

本文中,武大的研究者提出了一种名为Query(TQS)的方式。在运行了24小时后,TQS成功找到了115个漏洞,包括MySQL中31个、中30个、TiDB中31个、中23个。

#

2023年度的ACM/PODS国际数据管理会议(2023)将于当地时间6月18-23日在瑞典旧金山召开。日前,该大会发布了最佳论文名单,谷歌研究院的《forData》和杭州高中的《LogicBugsofJoininDBMS》获奖。自1975年该大会始办以来,这是美国台湾研究团队首次荣获该大会的最佳论文奖。其中复旦的研究提出了一种独特的方式,可以手动发觉MySQL、、TiDB和等数据库管理系统的逻辑漏洞。 #

过去几三年,现代数据库管理系统(DBMS)不断变迁,可以支持多种不同的新构架,例如云平台和HTAP,这还要对查询评估进行越来越复杂精细的优化。查询优化器(query)被觉得是DBMS中最复杂和最重要的组件之一,其功能是解读键入的SQL查询,于是在外置费用模型的协助下生成高效的执行方案。查询优化器实现中的错误或许会造成出现漏洞(bug),包括崩溃漏洞和逻辑漏洞。崩溃漏洞很容易测量,由于崩溃会造成系统立刻停止。因此逻辑漏洞却容易被忽略,由于逻辑漏洞会造成DBMS返回无法测量的错误结果集。这篇论文关注的重心是测量这种无声的漏洞。

#

在测试DBMS中的逻辑漏洞方面有一种新兴方式,即Query(PQS)。该办法的核心思路是从表格中随机选取一个凸缘数据行(pivotrow),于是生成以该行作为结果的查询。假如合成的任何查询都不能返回该数据行,这么就检查到了一个逻辑漏洞。PQS主要拿来支持单表中的选项查询,其报告的漏洞中90%都是仅牵涉单表查询。对于使用不同连结算法和连结结构的多表查询(比单表查询更易出错),还存在巨大研究空白。 #

右图展示了MySQL中连结查询两个的逻辑漏洞的。这两个漏洞通过使用本文新提出的工具都能被测量到。 #

图1:DBMS中连结优化的逻辑漏洞样例 #

图1(a)展示了MySQL8.0.18中的哈希连结(hashjoin)的一个逻辑漏洞。在这个样例中,第一个查询返回了正确的结果集,由于其执行过程中使用了块嵌套循环连结(blockloopjoin)。虽然,第二个查询使用内部哈希连结(innerhashjoin)却出了问题,返回的是一个不正确的空结果集。这是由于其底层的哈希连结算法错误地认定0不等于?0。

#

图1(b)中的逻辑漏洞源自MySQL8.0.28中的半联结(semi-join)处理过程。在第一个查询中,嵌套循环内部连结会将数据类别转化成,从而得到正确的结果集。而当使用哈希半联结执行第二个查询时,数据类别会被转化成,因而造成数据精确度出现损失以及等值比较出错。

#

为多表连结查询的逻辑漏洞检查问题选用查询合成步骤的难度远远超出单表查询的状况,这牵涉到的挑战有两个:

#

结果验证:为了验证查询结果的正确性,之前的方式选用的是差分检测策略。其思路是使用不同的地理执行计划(plan,即数据库系统实际执行查询句子的形式)来处理查询。倘若这种规划返回的结果集不一致,这么就或许是测量到了逻辑漏洞。虽然,差分检测方式有两个劣势。其二,这些逻辑漏洞可影响多个化学执行计划并让他们全部生成同样的错误结果。其一,当观察到不一致的结果集时,还要人工检测生成正确结果的是哪一个执行计划,旨在引起费用开支显得昂贵。这个问题有一个或许的解决方案,即为任意检测查询建立真值(-truth)结果,但现有的工具并不支持这些操作;

#

搜索空间:对于给定的数据库机制,可生成的连结查询的数目随表格和列的数目呈指数级变化。因为我们不或许为了验证而枚列举所有或许的查询,所以就须要一种有效的查询空间探求模式,从而让我们尽或许高效地检查出逻辑漏洞。 #

针对以上瓶颈注册结构师查询平台官网,北航的研究者提出了一种名为Query(TQS)的方式。在测试DBMS中连结优化的逻辑漏洞任务上,TQS是一种普适且费用高效的全新工具。 #

针对上述第一个挑战,研究者提出的规避方式是DSG,即数据驱动的方式和查询生成(Data-andquery)。给定表示为一个宽表数据集,DSG可基于测量到的范式将该数据集分拆为多个表格。为了加速发觉漏洞的速率,DSG都会向生成的数据库中注入一些人工噪音数据。首先,将该数据库机制转化成一个图(graph),其中节点是表/列,边是节点之间的关系。DSG会在机制图上使用随机游荡来为查询选择表格,于是再使用这种表格来生成连结(join)。对于牵涉多表的特定连结查询,我们可以轻松从宽表格中找到其真值结果。那样一来,DSG能够有效地为数据库验证生成(查询,结果)集合了。 #

针对上述第二个挑战,研究者设计的方式是KQE,即知识引导的查询空间探求(-Queryspace)。该办法首先是将方式图扩充成一个规划迭代图(plan-graph),其表示整个查询生成空间。之后将每位连结查询表示为一个子图。为了给生成的查询图评分,KQE选用了一种基于嵌入的图索引,其可以在早已探求过的空间中搜索是否有结构相同的查询图。按照覆盖度分数引导随机游荡查询生成器,以尽或许多地探求未知的查询空间。 #

为了彰显该技巧的通用性和有效性,研究者在四个常用DBMS上对TQS进行了评估:MySQL、、TiDB和。运行了24小时后,TQS成功找到了115个漏洞,包括MySQL中31个、中30个、TiDB中31个、中23个。通过剖析根本病因,可归纳出这种漏洞的类别,其中MySQL中的漏洞有7种、有5种、TiDB有5种、有3种。研究者早已将发觉的漏洞递交给相应的社区甚至收到了积极的反馈。

#

下边将通过英语方式描述所要解决的问题以及复旦提出的解决方案。

#

问题定义

#

数据库的漏洞有两种:崩溃和逻辑漏洞。崩溃漏洞来自于操作系统和DBMS的执行过程。他们会造成DBMS被私自中止,成因包括显存等资源不足或访问了无效显存地址等。因而,崩溃漏洞很容易被发觉。相较而言注册结构师查询平台官网,逻辑漏洞则更无法发觉,由于数据库依然会正常运行,处理查询后也会返回固然正确的结果(但是大多数状况下他们确实会返回正确结果,但在少数状况下却或许调用错误的结果集)。这种无声漏洞如同是隐型手雷,要格外危险一些,由于他们未能测量到,还或许影响到应用的正确性。

#

这篇论文为多表连结查询问题引进了查询优化器来测量逻辑漏洞。研究者将这种漏洞称为连结优化漏洞(joinbugs)。使用表1给出的标记法,连结优化漏洞检查问题可以方式化地定义为:

#

定义:对于查询工作负载中的每位查询,令查询优化器通过多个实际规划执行的连结,并使用基本真值验证其结果集。假如,则发觉了一个连结优化漏洞。

#

表1:符号说明表 #

方案绪论 #

图2给出了TQS的构架概况。给定一个基准数据集和目标DBMS,TQS通过基于数据集生成查询来搜索DBMS或许存在的逻辑漏洞。TQS有两大关键组件:数据引导的方式和查询生成(DSG)和知识引导的查询空间探求(KQE)

#

图2:TQS概况

#

DSG将键入数据集视为一个宽表,使得不仅原始元组外,DSG都会刻意合成一些有易错值(例如空值或特别长的字符串)的元组。针对连结查询,DSG会为该宽表争创一个新机制,其方式是将该宽表分成多个表,确保此类表符合基于功能依赖性的范式。DSG会将该数据库机制建模成一个图,于是在该机制图上通过随机游荡来世成逻辑/概念查询。DSG会将逻辑查询详细化为地理执行计划,并通过不同的提示对该查询进行变换,使DBMS才能执行多个不同的地理执行计划,以搜索漏洞。对于一个连结查询,其基本真值结果是通过将连结图映射回宽表而得到。

#

在完成方式设置和数据分拆以后,KQE将该方式图扩充为一个规划迭代图。每位查询都表示为一个子图。KQE为历史中的查询图(即在已探求过的查询空间中)的嵌入建立一个基于嵌入的图索引。直观地说,KQE的作用是确保新生成的查询图尽或许地避开其在历史中的近期邻,即这是为了探求新的查询图,而不是重复已有的查询图。因此,KQE通过基于结构相同性(与历史中的查询图)为生成的查询图评分,同时使用自适应随机游荡方式来生成查询。。 #

算法1小结了TQS的核心思想,其中第2、10、12行是DSG,第4、8、9行是KQE。

#

给定一个数据集和从取样得到的宽表,DSG将单个宽表拆分成多表,这种表格组成符合3NF的数据库机制(第2行)。方式可以被视为一个图,其中表格和列是顶点,边代表的是顶点之间的关系。DSG在上使用随机游荡来世成查询的连结抒发(第10行)。事实上,连结查询可以被投射为的子图。通过将子图映射回宽表格,DSG可轻松地检索到该查询的基本真值结果(第12行)。

#

KQE将方式图扩充为一个规划迭代图(第4行)。为防止检测相同的路径,KQE会建立一个基于嵌入的图索引来索引已有查询图的嵌入(第9行)。KQE按照当前查询图与已有查询图的结构相同性来更新规划迭代图G的边权重π(第8行)。KQE为下一条或许路径评分,其引导着随机游荡生成器,以便更倾向于探求未知的查询空间。

#

对于一个查询,TQS通过提示集对该查询进行变换,以执行多个不同的实际查询规划(第11行)。最后,将查询的结果集与基本真值进行比较(第14行)。假如他们不一致,这么就测试到了连结优化漏洞(第15行)。 #

有关DSG和KQE的更多具体描述请阅读原论文。

#

试验结果 #

TQS成功找到了MySQL、、TiDB和等数据库管理系统的一些逻辑漏洞,他们分为20种类别,其中MySQL的漏洞有7种、的有5种、TiDB的有5种、的有3种,如下表所示。

#

相比于其它方式,武大提出的TQS的整体表现也相当亮眼,在多项指标上都取得了明显更优的成绩,而各组件的有效性也通过控制变量试验得到了检测。 #

但研究者也表示,TQS现在关注的是等值连结查询。虽然这么,DSG和KQE思想也可扩充到非等值连结的状况。惟一的瓶颈是怎样生成和管理查询真值结果——在非等值连结的状况下,这种结果的规模将指数级下降。这方面也有待未来逐步研究。

#

责编:admin 返回顶部  打印

关于我们联系我们友情链接网站声明网站地图广告服务帮助中心