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

知危

0获赞 3649粉丝
投资不立危墙之下,提供敏锐、独到商业参考
财经领域创作者
关注
0
0
收藏
分享