数据库漏洞检测系统TQS获SIGMOD最佳论文,为什么?
中国学术界又迎来了历史性事件。
近日在美国西雅图举行的2023 ACM SIGMOD会议上,阿里云与浙江大学提出的数据库漏洞检测系统TQS(Transformed Query Synthesis)荣获今年SIGMOD最佳论文。
这是自1975年SIGMOD成立以来,中国大陆研究团队首次获此殊荣。
有些朋友可能不知道SIGMOD是什么。 它是计算机数据库领域三大顶级会议之一。 另外两个是VLDB会议(超大型数据库)和ICDE(IEEE国际数据工程会议)会议。
这三个顶级会议中,SIGMOD是最重要的,也是最难接受论文的。 平均录取率仅为17%左右。 由此可见,这次获得最佳论文是多么有价值。
TQS此次获奖的理由,评审给出了:
它优雅而有效地解决了现代数据库管理系统(DBMS)的关键问题之一——调试执行连接查询(Join Queries)时的复杂逻辑漏洞,并在开源、业界领先的系统中证明了TQS的有效性。 能力。
那么这个数据库管理系统有多重要呢? 为什么解决了逻辑漏洞就能拿到顶级会议的最佳论文呢?
我们首先得谈谈什么是数据库。
构建当今信息时代的三大核心基础技术。 它们是操作系统、芯片技术和数据库。
操作系统和芯片的重要性不用多说,大家应该都明白。 其中只有数据库技术通常在媒体上宣传得不多。 为什么它也是三大核心技术之一?
因为在计算机中财经网,无论什么应用,都离不开存储数据的需要。
随着数据量变得越来越大,如何有组织地存储这些数据以方便检索和阅读已经成为一个非常重要的事情。
于是数据库和数据库管理系统就诞生了。
数据库就像一个大仓库。 存储数据时,会根据不同数据库设定的分类方法对数据进行分类存储,以方便建立索引。
例如,在最早的层次数据库中,数据以树形结构互连并逐层递进。
网络数据库相对复杂。 数据并不局限于逐层的效果,而是具有多重连接。
现在最常用的关系型数据库中,数据都是以行和列的形式存储的,整个数据类型更像是二维表的集合。
无论是否有数据库,存储和索引数据所需的时间可能会有很大差异。
打个简单的比方,有两个仓库,第一个只是简单的文件系统,第二个有数据库。
当我们把东西存放在第一个仓库时,因为没有数据库和相应的管理系统,仓库员工只能自己把东西放在任何地方,或者按照自己的想法将它们分成简单的类别。
当所有的仓库空间都满了的时候,如果有人想要在仓库中找到相应的材料,他就必须在一大堆材料中一件一件地翻找,或者依靠自己的记忆来想起之前放置的大概位置。 。 ,这个时候找一个素材可能要花一整天的时间。
有了数据库,仓库就有了自己的物料放置逻辑。 例如,将电子设备放置在第一排,并根据电子设备的品牌和类型进行放置。 书籍根据书籍的类型和标题放置在第二排。 按字母顺序排列它们。
这样,当我想查找某种类型时,直接根据索引找到该对象的位置即可,省时省力。
但是,只要是系统,就存在一定的出错概率,数据库管理系统也是如此。
而且随着应用复杂度的增加,对DBMS的安全性能要求也越来越高,因为看似很小的数据库漏洞往往会带来非常严重的后果。
今年1月,美国联邦航空管理局因系统故障停飞了全美数万个航班。
原因是数据库中有一个文件损坏。
因此,如何测试和发现DBMS中的Bug也是DBMS开发中极其重要的一部分。
通常,在 DBMS 中常见的查询错误中,有两种类型的错误。
一类是系统崩溃bug(Crash Bugs),另一类是逻辑bug(Logic Bugs)。
系统崩溃错误是指在查询过程中整个系统直接崩溃停止。 这种类型的错误很容易检测和发现。 毕竟,整个程序都为你停止了,任何人都可以对此做出反应。
第二种逻辑错误要危险得多。 这类bug就是系统运行正常,但是当你查询的时候,会返回一个不正确的结果集。 如果没有额外的数据验证,这种错误通常很难被发现。 发现。
例如下面的代码。
第一个查询使用 Block Nested Loop Join 执行并返回正确的结果集。
当使用内部哈希联接(Inner Hash Join)连接第二个查询时,会返回错误的空结果集,因为底层断言“0”不等于“-0”。
最近,提出了一种非常有效的逻辑错误检测方法PQS(Pivoted Query Synthesis)。 该方法随机选择表单中的一行,然后对该行的数据构造一系列数据查询。 如果查询结果中不包含这一行数据,则说明存在逻辑bug。
不过目前这种方法更侧重于单表查询。 对于不同连接算法和结构组成的多表查询还存在很多研究空白。
此次获奖论文发明了一种新的数据库测试方法(TQS),可以快速发现DBMS中的逻辑错误以进行连接优化。
在尝试查找数据库中的逻辑错误时,您面临两个主要挑战。
首先是如何构造查询真值,以进行准确的查询执行正确性验证。
二是探索空间问题。 随着表单数量的增加,遍历的所有可能的查询数量将呈指数级增长。 在这种情况下,不可能在短时间内列出所有可能的查询进行验证。
针对这两个问题,TQS都有相应的解决方案。 首先是构建真值问题。 TQS会将一个给定的宽表(简单理解就是数据量较大的表)拆分成多个较小的表,并插入一些噪声数据作为样本进行边缘测试。
同时,表格被索引并使用添加的噪声数据进行更新。
然后,根据这个数据库的图模型,生成一系列随机查询请求,最后将查询结果与直接在宽表中查询到的理论真实值进行比较。 如果都匹配,就说明没有问题。
这种通过一张表构建多表模型的方法成功解决了多表模型中无法获取正确真值的问题。
通俗地解释一下,因为传统的测试方法中,没有办法知道多表任务中查询的结果是true还是false,那么我会把一个大表拆分成几个相关的小表,这样我就可以通过Query大表数据得到正确的理论值,方便大家对比测试多表查询的结果是否正确。
对于探索空间,TQS主要关注避免过度重复的查询。 首先,TQS 将模式图扩展为计划迭代图来表示整个查询空间。 如图所示,每个节点代表不同的行和列。
然后构建索引以支持各种查询连接操作。 在查询任务中,特别注意查询连接部分的逻辑错误检测。
还建立了图索引以供检索。 这样,就可以判断当前生成的查询是否已经被搜索到,即被检测到。 如果查询已被检测,则无需再次检测。
用一句话来解释,尝试测试不同类型的查询方法。 类似的查询任务不会被检查,这将大大减少需要查询的任务数量。
既然这两个问题都解决了,那么TQS在实际测试中的结果如何呢?
笔者使用 TQS 对 MySQL、PolarDB 等 4 个数据库进行了 24 小时的数据库测试后,共检测出 115 个逻辑错误,其中 MySQL 31 个、MariaDB 30 个、TiDB 31 个、PolarDB 23 个。 总共有 20 个错误类别。
与传统的PQS、NoRec和TLP测试方法的效率相比,TQS也遥遥领先。
值得一提的是,本文是阿里云与浙江大学的联合研究成果。 该成果的第一作者、浙江大学唐修博士在阿里云实习期间主导完成。 另一位作者李飞飞是阿里云数据库负责人,也是行业领军人物。 作为第一作者获得2016年SIGMOD最佳论文奖。
有趣的是,该课题的提出源于阿里云瑶池数据库团队内部的一次PolarDB云原生数据库内核测试。 当时组织了一次会议,讨论如何检测这个逻辑漏洞。 大家对这种找bug的方法很感兴趣。 他们对这个过程非常感兴趣,于是开始开发自动化数据库逻辑测试工具,检测出50多个程序错误,汇总并提交了相关程序错误信息,形成了这个结果。
事实上,在数据库领域,学术界和工业界的关系非常密切。 毕竟,数据库技术源于现实生活的需求,学术界研究的问题基本来自于现实中遇到的bug和需要解决的需求。
阿里云数据库在学术界取得如此突破性的成就,正是因为阿里云产业规模足够大,对数据库安全性要求极高。
此外,阿里云瑶池数据库团队在公有云上为数百万客户提供数据库服务。 这些来自各行各业的用户在云数据库中运行各种SQL查询请求。
开发一个保证所有SQL操作的正确性和高性能的系统是一个非常大的挑战。 本最佳论文的研究目标就是致力于解决这一问题。
也就是说,只有阿里云瑶池数据库的规模才能创造这样的技术挑战和解决方案实验验证的土壤。
过去,数据库领域一直是国外公司占据主导地位。 自1982年Oracle推出Oracle系统以来,Oracle一直是数据库系统领域的全球领导者。
随着时间的推移,数据库系统也从离线本地部署转向云端数据库。
国际市场研究机构Gartner发布的《2022年全球云数据库管理系统魔力象限报告》中房地产市场,象限中全球领先者前四名均为外资企业。
不过,在第一象限(领导者象限)财经日历,你也可以找到像阿里云这样的国内厂商。 此外,阿里云是中国唯一连续第三年入选报告“领导者”象限的服务。 商业。
如果我们回顾一下阿里云在数据库方面取得的学术成就,我们就会知道,这些成就与阿里云10多年来对数据库的不断发展是分不开的。
2022年,阿里云数据库团队共有17篇论文入选三大数据库顶级会议,成果涵盖云原生、分布式、智能、安全可信、时序时空等前沿数据库研究方向。
从2023年至今,短短半年时间,已有18篇论文入选,其中包括一篇SIGMOD最佳论文。
说阿里云数据库团队科研实力全球领先、国内第一并不为过。
从市场份额来看,阿里云占据主导地位。 在公有云部署市场,阿里云以42%的份额连续四年排名第一。 市场份额大于2至4名的总和,继续展现领先优势。
毕竟,只有先进的技术才能赢得市场。
正是因为在学术界有如此多的成就,阿里云才能挤下全球数据库市场的领导地位。
很多人认为,当前社会是一个人工智能时代财经数据库,但同时也是一个数据时代。 如果没有先进的数据处理,前者就不会存在。
事实上,不仅仅是人工智能。 可以毫不夸张地说,基本上所有现代技术都是建立在数据之上的。
因此,我们需要更多像TQS这样的成果,需要更多像阿里云这样的公司。
数据库这种与芯片、操作系统一样重要的技术,应该牢牢掌握在我们自己手中。