Preface
自上一版《数据库系统读物》问世以来的十年里,数据管理领域发生了爆炸式增长。如今,数据库和数据密集型系统在前所未有的数据量上运行,这在很大程度上是由“大数据”的兴起以及存储和计算成本的大幅下降所推动的。云计算和微架构趋势使分布和并行性几乎无处不在。从越来越多的异构格式和来源收集数据,并用于越来越多的任务。因此,商用数据库系统在多个方面发生了长足的发展,从使用新的存储介质和处理器设计,到查询处理体系结构、编程接口以及事务处理和分析中新兴的应用程序要求。这是一个激动人心的时刻,市场发生了相当大的变化,研究也产生了许多新的想法。
在这个瞬息万变的时代,我们对传统“红皮书”的更新旨在提供该领域核心概念的基础,以及对选定趋势的评论。一些新技术与过去几十年的前辈有着惊人的相似之处,我们认为熟悉原始资料对我们的读者很有用。与此同时,技术趋势需要重新评估数据库系统的几乎所有维度,许多经典设计需要修改。我们在这个集合中的目标是揭示重要的长期经验教训和基础设计,并突出我们认为最新颖和相关的新想法。
因此,我们从早期数据库文献中选择了经典的传统论文,以及对近期发展最具影响力的论文,包括事务处理、查询处理、高级分析、Web 数据和语言设计。除了每一章,我们还提供了一个简短的评论,介绍了这些论文并描述了我们选择每篇论文的原因。每条评论都由其中一位编辑撰写,但所有编辑都提供了意见;我们希望评论不乏意见。
在选择阅读材料时,我们寻找符合一组核心标准的主题和论文。首先,每个选择都代表了数据管理的一个主要趋势,研究兴趣和市场需求都证明了这一点。其次,每个选择都是规范的或接近规范的;我们为每个主题寻找最具代表性的论文。第三,每个选择都是主要来源。本系列中的许多主题都有很好的调查,我们在评论中引用了这些调查。然而,阅读原始资料提供了历史背景,让读者接触到塑造有影响力的解决方案的思想,并有助于确保我们的读者在该领域有良好的基础。最后,这个系列代表了我们当前对“最重要”的品味;我们希望我们的读者以批判的眼光看待这个系列。
与之前版本的红皮书相比,一个主要不同的是我们对分析和数据集成的最后两部分的处理方式。很明显,在研究和市场上,这是当今数据管理中最大的两个问题。它们在研究和实践中也是快速发展的主题。鉴于这种变化的状态,我们发现我们很难就这些主题的 “规范 ”解读达成一致。在这种情况下,我们决定省略官方读数,而是提供评论。这显然导致了对该领域发生的事情的高度偏见。因此,我们不建议将这些部分作为红皮书传统上试图提供的那种“必读”内容。相反,我们将这些视为可选的最终事项:“对移动目标的偏见观点”。读者要对这两个部分持保留态度(甚至比本书其余部分使用的还要大)。
我们免费发布此版本的红皮书,并对我们的文本进行许可,允许以多种格式无限制地进行非商业性重新分发。我们没有确保推荐论文的权利,而只是提供了指向 Google 学术搜索的链接,这些链接应该可以帮助读者找到相关论文。我们预计这种电子格式将允许更频繁地版本“书籍”。我们计划根据需要改进该系列。
最后一点:这个系列自 1988 年以来一直存在,我们预计它在未来会有很长的生命。因此,我们为灰胡子编辑添加了一点“年轻血液”。在适当的情况下,此集合的编辑可能会随着时间的推移而进一步发展。
Background introduced by Michael Stonebraker
Readings:
Joseph M. Hellerstein and Michael Stonebraker. What Goes Around Comes Around. Readings in Database Systems, 4th Edition (2005).
Joseph M. Hellerstein, Michael Stonebraker, James Hamilton. Architecture of a Database System. Foundations and Trends in Databases, 1, 2 (2007).
我很惊讶这两篇论文写得仅仅十年前!我对解剖学论文的惊讶在于,仅仅几年后,细节就发生了很大变化。我对数据模型论文的惊奇之处在于,似乎没有人从历史中学到任何东西。让我们先谈谈数据模型论文。
十年前,嗡嗡声全是 XML。供应商打算将 XML 添加到他们的关系引擎中。行业分析师(以及许多研究人员)将 XML 吹捧为“下一件大事”。十年后,它已成为一个小众产品,该领域已经向前发展。在我看来,(正如论文中预测的那样)它屈服于以下因素的组合:
过于复杂(没有人能理解)
关系引擎的复杂扩展,它似乎表现得不是那么好,并且
没有被广泛接受的引人注目的用例
有点讽刺的是,论文中预测 X 将通过成功简化 XML 而获得图灵奖。这个预测被证明是完全错误的!净净结果是关系赢了,XML 输了。
当然,这并没有阻止 “新手 ”重新发明轮子。现在是 JSON,可以通过以下三种方式之一查看:
一种通用的分层数据格式。任何认为这是个好主意的人都应该阅读 IMS 数据模型论文的部分。
稀疏数据的表示形式。考虑有关员工的 attributes,并假设我们希望记录 hobbies 数据。对于每个爱好,我们记录的数据都会有所不同,爱好从根本上来说是稀疏的。这在关系 DBMS 中建模很简单,但它会导致非常宽、非常稀疏的表。这对于基于磁盘的行存储来说是灾难性的,但在列存储中工作正常。在前一种情况下,JSON 是 “hobbies” 列的合理编码格式,并且一些 RDBMS 最近添加了对 JSON 数据类型的支持。
作为“读取时模式”的机制。实际上,该模式非常广泛且非常稀疏,基本上所有用户都希望此模式的某种投影。从宽的稀疏架构中读取时,用户可以说出他希望在运行时看到的内容。从概念上讲,这只不过是一个投影作。因此,“读取时架构”只是对 JSON 编码数据的关系作。
总之,JSON 是稀疏数据的合理选择。在这种情况下,我希望它有相当数量的 “腿”。另一方面,作为一种通用的分层数据格式,这是一场正在酝酿中的灾难。我完全期望 RDBMS 将 JSON 仅仅归入其系统中的一种数据类型(众多数据类型中)。换句话说,这是对备用关系数据进行编码的合理方法。
毫无疑问,下一个版本的红皮书将摒弃一些新的等级制度格式,这些格式是由那些站在前任的脚趾上而不是站在前任的肩膀上的人发明的。
在过去十年中引起广泛关注的另一个数据模型是 Map-Reduce,它是由 Google 专门构建的,用于支持他们的网络爬虫数据库。几年后,Google 停止为该应用程序使用 Map-Reduce,而是转向 Big Table。现在,世界其他地方正在看到 Google 早些时候发现的东西;Map-Reduce 不是一个具有任何广泛适用性的架构。相反,Map-Reduce 市场已经演变成 HDFS 市场,并且似乎准备成为关系 SQL 市场。例如,Cloudera 最近推出了 Impala,这是一个构建在 HDFS 之上的 SQL 引擎,而不是使用 Map-Reduce。
最近,HDFS 领域还有另一个值得讨论的推动力,即“数据湖”。HDFS 集群的合理使用(到目前为止,大多数企业已经投资并希望找到对他们有用的事情来做)是作为已摄取的数据文件的队列。随着时间的推移,企业将找出哪些值得花精力进行清理(数据管理;在本书的第 12 章中介绍)。因此,数据湖在此期间只是一个文件的“垃圾抽屉”。此外,我们将在第 5 章中对 HDFS、Spark 和 Hadoop 进行更多介绍。
总而言之,在过去的十年里,似乎没有人听从“comes around”的教训。新的数据模型已经发明出来,只是为了演变成 SQL on table。等级结构已经被重新发明,失败是预测的结果。如果看到未来十年更加相同,我不会感到惊讶。人们似乎注定要重新发明轮子!
关于解剖学论文;仅仅十年后,我们可以注意到 DBMS 的构建方式发生了重大变化。因此,细节已经发生了很大变化,但论文中描述的整体架构仍然几乎是正确的。该白皮书描述了大多数遗留 DBMS(例如 Oracle、DB2)的工作原理,十年前,这是流行的实现。现在,这些系统是历史文物;什么都不太擅长。例如,在数据仓库市场中,列存储已经取代了本文中描述的行存储,因为它们的速度提高了 1-2 个数量级。在 OLTP 世界中,具有非常轻量级事务管理的主内存 SQL 引擎正迅速成为常态。这些新的发展记录在本书的第 4 章中。现在很难找到传统行存储具有竞争力的应用领域。因此,它们应该被送到“退役软件之家”。
很难想象“一刀切”会再次成为主导架构。因此,“大象”有一个糟糕的“创新者困境”问题。在 Clayton Christiansen 的经典著作中,他认为传统技术的供应商很难在不失去客户群的情况下转变为新的结构。然而,大象将如何尝试已经很明显了。例如,SQLServer 14 至少是两个引擎(Hekaton - 主内存 OLTP 系统和传统的 SQLServer - 遗留的行存储)联合在一个公共解析器下。因此,Microsoft 的策略显然是在其旧式解析器下添加新引擎,然后支持将数据从陈旧的引擎移动到更现代的引擎,而不会干扰应用程序。这将有多成功还有待观察。
但是,这些新系统的基本架构继续遵循论文中描述的解析/优化器/执行器结构。此外,螺纹模型和工艺结构在今天与十年前一样重要。因此,读者应该注意,并发控制、崩溃恢复、优化、数据结构和索引的细节处于快速变化的状态,但 DBMS 的基本架构保持不变。
此外,这些遗留系统需要很长时间才能消亡。事实上,仍有大量的 IMS 数据在生产中使用。因此,建议该领域的任何学生了解(暂时占主导地位的)系统的架构。
此外,随着计算架构的发展,本文的各个方面在未来可能会变得更加相关。例如,NVRAM 即将到来可能会为新的架构概念或旧概念的重新出现提供机会。