acm-header
登录

ACM通信

观点

数据库对话与帕特塞林格


Patricia G. Selinger是IBM阿尔马登研究中心数据库技术研究所的研究员和退休主任,为数据库行业做出了巨大的贡献。在1975年加入IBM研究院后,塞林格成为了构建System R团队的主要成员,这是关系数据库技术实用性的第一个证明。她在基于成本的查询优化方面的创新工作已被大多数关系数据库供应商所采用,并被大多数大学的数据库课程所教授。塞林格管理阿尔马登计算机科学系,并建立了数据库技术研究所,这是IBM研究院和IBM软件开发团队的一个联合项目,旨在将先进技术加速到数据管理产品中,如用于z/OS的DB2通用数据库、IMS、Linux、Windows和Unix上的DB2 UDB。

本文介绍的采访是由James Hamilton进行的,他是微软SQL Server团队的成员,曾经是DB2的首席架构师和IBM c++编译器项目的负责人。一个

詹姆斯•汉密尔顿让我们从关系数据库管理系统中查询优化器的角色以及您发明的基于成本的优化器开始。

帕特其密封如您所知,关系数据库的基本原则是数据存储在行和列中。它是基于价值的,因为价值本身代表了数据。指针中不包含任何信息。所有信息都反映在一系列表中,这些表具有一定的众所周知的形状和形式:有订单表、客户表、员工表,等等。每个表都有一组固定的列:名、姓、地址。

关系系统有一种更高级的语言,称为SQL,这是一种面向集合的查询语言。这是一个独特的概念,也是关系数据库系统与之前或之后的任何系统的真正区别所在。

查询语言的面向集合概念允许询问在部门50工作的所有程序员;或者所有超过5000美元的订单;还有圣何塞所有订单超过5000美元的客户;等等。关系表中的信息可以以多种不同的方式组合,仅基于它们的值。

如何将用户提出的这个面向集合的高级问题转化为导航磁盘和从每个不同表中的每个不同记录获取信息的精确方法?这个过程就是查询优化:即从较高级SQL映射到较低级配方或访问数据所经过的一系列操作。

查询优化器已经发展成为一种支持技术,使这种高级编程语言成为数据访问语言SQLwork。如果不这样做,您将会使用蛮力:让我们查看每一行,看看它是否符合所要求的描述。是50部吗?是超过5000美元的订单吗?在所有时间扫描所有数据是非常低效的。

因此,我们有访问技术,允许您只查看数据的子集,然后您必须计划哪些访问技术对任何给定类型的查询有意义。

基于成本的查询优化的技巧是估计每种访问数据的不同方式的成本,每种连接来自多个表的信息的不同方式的成本,并估计结果的大小和缓冲池中的数据所节省的成本,估计如果使用索引访问数据实际接触的行数,等等。

对访问数据的成本建模得越深入,选择的访问路径就越好。我们在20世纪70年代末发明了这种基于成本的查询优化,并提供了一个足以在合理的时间内搜索非常大的选择空间的模型,然后得出一个非常好的成本估计,因此,这是一个非常好的访问路径。

JH令人惊讶的是,这么多年过去了,这项工作仍然是关系数据库系统查询优化的主要方法。基于成本的优化器在从研究到工业的技术转移方面取得了真正的成功。你能告诉我们为什么它这么成功吗?

PS基于成本的查询优化的质量确实使人们能够进行相对轻松的应用程序开发。也就是说,应用程序开发人员不需要了解磁盘上数据的布局、记录的确切位置以及对这些记录的确切访问路径。从应用程序生产率的角度来看,能够进行非常好的基于成本的查询优化有很大的好处。因此,具有良好的基于成本的查询优化具有强大的市场力量。

我参与了System R查询优化器的发明,它被投入到IBM的DB2关系数据库产品中,并在该产品中得到了不断的增强。许多简化的假设使得问题可以追溯到20世纪70年代末,这些假设已经被消除了,现在的模型更加深入和丰富,包括更多的访问数据的技术。


出色的基于成本的查询优化对于提高应用程序生产力和降低总体拥有成本至关重要。”


这是一门不断发展的科学,我认为这是它成功的一部分。随着访问数据或以不同方式连接数据的新发明的出现,它能够成长和适应。所有关系数据库产品都采用了基于成本的查询优化方法,而不是基于规则的方法,这种方法实在太不灵活了,无法一直获得良好的性能。

该技术仍有发展空间,例如,当数据本身的行为与模型假设的不同时。许多优化器并没有很好地建模高度相关的数据。例如,90210是一个只在加州存在的邮政编码。邮政编码不是平均分布在各个州,也不是每个州都有90210。对于用户请求,将邮政编码确定为90210就足够了,并且应用另一个谓词(比如state = California)不会改变结果。它不会减少行数,因为唯一的90210位于加州。

JH工业查询优化器的敌人之一是复杂性,这有时会导致查询计划缺乏健壮性。查询或正在查询的数据中的微小更改可能导致截然不同的计划。客户经常要求我提供一个稳定的好计划,而不是一个经常以不可预测的方式变化的近乎最佳的计划。在最优查询计划与查询计划健壮性问题上,我们应该从哪个方向取得进展?

PS我认为我们必须从两方面着手。其一,您必须能够执行良好的计划,并且在执行计划的过程中,您希望注意到实际数据何时与您的预期发生了显著的偏差。如果你期望有5行,但你得到了100万行,你的计划很可能做得不好,因为你是基于5行的假设来选择的。因此,能够中途纠正是IBM正在追求的查询优化器的一个增强领域。

其次,您必须继续深化模型,因为您必须提出合理的计划,然后才能动态地微调它们。理解不同表中的行之间或列之间的相关性(注意前面给出的邮政编码示例)是继续深入理解数据并因此能够更好地进行查询优化的一个非常重要的部分。

事实是,随着客户使用越来越多的压缩包装包或有一年没有上过SQL学校的临时用户,确实需要能够进行良好的查询优化。您不能让数据库管理员跑进房间说:“还没有按回车键。我必须查看你的查询,看看它是否可行。”出色的基于成本的查询优化对于提高应用程序生产率和降低总体拥有成本至关重要。

JH让我们看看查询优化,以及在哪些方面可以使用数据库管理系统之外的技术。IBM和整个行业近年来一直在投资自动调优和自主计算。你认为基于成本的优化在这个应用领域会发挥作用吗?

PS绝对的。公司有很多结构良好的数据,如订单、客户、员工记录,但这可能是公司所有数据的15%。其余的在文档文件中,在XML中,在图片中,在网页上,所有这些信息也需要管理。XML提供了一种能够做到这一点的机制,但是数据的结构不那么规范。它非常动态。即使在订单或文档等相关集合中,每个记录看起来也可能不同于下一个记录。

因此,您必须有一种查询语言,比如XQuery,它将能够导航并就这种新类型的数据提出面向集合的问题。这提供了不同的数据访问技术,需要增强查询优化过程。但我认为,绝对有必要继续走自动查询优化的道路,而不是让程序员回到理解确切数据结构和手动在应用程序中进行导航的游戏中。这只是浪费。

JH着眼于新的优化技术、反馈导向系统和动态执行时间决策,这些都是持续研究的重要领域,你认为未来五年左右最重要的步骤是什么?

PS我认为每个客户都在考虑拥有的成本,不仅仅是因为他们中的一些人仍然处于或刚刚经历的经济衰退,而是因为处理器、磁盘空间和内存的成本都在下降,而劳动力成本在上升。

此外,还必须查看需要多少管理员来处理1tb的数据。除非你能显著提高这个比率,否则当你积累了越来越多的tb数据时,很快你就会需要半个地球的人来管理它。因此,我们正在发明各种方法,使管理员能够处理比现在多20倍、100倍、1000倍的数据。

与此同时,我们也面临着整合、搜索、理解和利用这些信息的压力,这些信息来自于更加非结构化的电子邮件。公司希望能够通过查看电子邮件或客户服务文件来为客户提供更好的服务,因此必须管理、理解和分析更多种类的信息。当我们着眼于如何做到这一点时,我们必须改变组织、管理和搜索这些数据的成本。

JH我看到了两幅描绘非结构化数据未来的图画。其中一种是通过搜索设备增强的文件系统,另一种是基于结构化存储的扩展作用,这种存储更灵活,更能处理动态模式和内容。文件系统和搜索设备有角色吗?你觉得会发生什么?

PS我不认为任何当前或未来的数据存储机制会取代所有其他的。例如,在许多情况下,文件系统就很好,这就是您所需要的一切,人们对此非常满意。我们必须能够通过元引擎接触到这些数据源,该元引擎知道如何接触和访问所有这些不同的数据存储库,了解所有不同的格式。jpg、。mpg、。doc,并知道如何解释这些数据。

星系间大小的集中式存储库的概念既不合理也不实用。你不能对客户说:“把你所有的数据放在我的存储库中,我就能解决你所有的问题。”从我的角度来看,正确的答案是,客户的数据将位于文件系统和数据库引擎中的各种应用程序的各种位置。他们不会将数据集中在一种数据存储中。这是不现实的。这在经济上不可行

因此,文件系统仍然会存在。它们可能会通过特殊的搜索技术得到增强,因为我们在RAID系统、磁盘服务器、文件服务器等方面有了更强的能力和处理能力,关系系统将在它们能处理的内容上变得更丰富,但我们不会用任何一个单一的答案取代所有的技术。


他说:“我认为,每个客户都在考虑拥有产品的成本,这不仅仅是因为经济衰退……而是因为……劳动力成本在上升。”


JH您认为未来的内容管理系统主要是在关系数据库系统上进行分层的,还是将其视为使用我们在过去30年的关系技术中所学到的一些知识构建的独立存储?

PS我喜欢DB2内容管理器中的体系结构,其中DB2是库服务器和卡片目录,可以说,它在围绕DB2的系统级应用程序中使用一些额外的语义,包括一些新的用户定义类型和函数,以及实现这些应用程序的存储过程。然后它有独立的资源管理器,能够处理特定类型的数据类型和样式,这些类型的文档,这些类型的图像。它们可以物理地存储在DB2中作为库服务器,也可以存储在多个不同引擎上的单独位置或文件系统中。

它提供了一个灵活的结构。例如,您可以尽可能多地利用DB2XML的功能,也可以选择使用其中一些存储库管理器。它们可能没有那么丰富的功能,但在特定类型的信息方面是专家,可以存储到您需要的地方,特别是当它是大量数据时,如质谱结果。这些都是巨大的文件,你希望它们靠近你进行分析的地方。

JH既然关系存储现在支持XML和全文搜索,那么还缺少什么呢?为什么扩展关系系统没有在非结构化世界中产生更大的影响?

PS内容管理的语义不仅仅是数据存储部件、数据存储引擎和DB2s。还有一组重要的其他抽象和管理技术,它们要么必须在内容管理系统之上,要么必须来自使用和利用扩展关系引擎但不完全依赖它的内容管理系统。

例如,内容管理系统允许Pat访问文档的第1章,允许James访问第2章,允许Ed访问第1章和第2章,在子子文档级别。这是今天的关系系统做不到的。类似地,文件夹,文档集合的概念实际上与类似的结构无关,但与一些更高级的语义内容相关联,这超出了关系系统目前的工作范围。


“我喜欢开源的想法。我的梦想是,在人们通常不会去购买数据库引擎的地方,这将为使用数据库提供更多的机会。”


JH您认为内容管理器和关系存储是否还需要在其他领域进行研究,以改进和帮助客户管理更广泛的数据?

PS如果我今天选择做研究或高级开发,有很多领域对我来说非常非常有趣。自治地区需要不断的发明创造。你需要做些什么才能拥有一个真正可以嵌入任何东西的免提数据系统呢?要在数百万个系统(例如,Internet)级别上实现真正的大规模并行,您需要做些什么?随着商用硬件变得越来越小,我们能否将系统连接起来,与之对话,并在数百万的规模上进行计算,而今天我们的技术水平只有数千?如何处理查询是固定的,数据是匆匆经过的数据流,它可能是非结构化数据?如何积累元数据并使其保持最新?你如何管理它,从中学习,从中获取信息?

搜索仍处于第一代阶段。有很多机会让搜索变得更好。如果当你在搜索引擎中输入三个关键字时,它知道你很生气,这会帮助它理解你在搜索什么吗?如果它知道你在输入搜索关键字之前看到了什么邮件,这会帮助它理解你在寻找什么吗?搜索引擎如何找到你想要的而不是你输入的内容?

获得的信息有多可靠?不可靠的原因有很多。如果我得到的信息只有一半是正确的呢?我如何将这些信息与其他一直正确的信息来源进行比较?我如何将这些信息连接在一起,以及我对所得到的连接信息的信心程度是多少?

所有这些事情,当我们开始处理非结构化的数据,不完整的答案和不精确的答案等等,都是研究和高级发展的好机会。

JH我们已经开始看到开源在服务器端计算中扮演越来越重要的角色。特别是在数据库领域,我们现在有了两个开源的竞争对手。开源对数据库世界是好事吗?

PS我喜欢开源的想法。当时我是IBM Cloud-scape团队的经理,我们将其贡献给Apache,在那里它已经成为一个名为Derby的孵化器项目。我的梦想是,在人们通常不会去购买数据库引擎的地方,这为使用数据库提供了更多的机会。

因此,开源可以为另一类应用程序——小企业——带来可靠性、可恢复性和面向集合的查询功能的好处,并能够在更丰富的应用程序集上利用数据库系统的奇妙特性。我认为这对整个行业有好处。

回到顶部

脚注

a.这次采访发生在塞林格2005年10月从IBM退休之前。

之前的采访刊登在2005年4月刊上ACM队列

DOI: http://doi.acm.org/10.1145/1409360.1409373


©2008 acm 0001-0782/08/1200 $5.00

允许制作本作品的全部或部分的数字或硬拷贝用于个人或课堂使用,但前提是该拷贝不是为了盈利或商业利益而制作或分发,并且该拷贝在第一页上带有本通知和完整引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。

数字图书馆是由计算机协会出版的。版权所有©2008 ACM有限公司

Baidu
map