序言

自从开始我在软件工程领域的第一份工作以来,我就一直对数据库和查询语言着迷。向计算机提出问题并有效地获得有意义的数据,这似乎是一种神奇的事情。在作为一个普通的软件开发人员和数据技术的终端用户工作多年后,我开始为一家创业公司工作,这让我进入了分布式数据库开发的深渊。这是我希望在我开始这段旅程时就有的一本书。虽然这只是一本入门级的书,但我希望能揭开查询引擎工作的神秘面纱。

我对查询引擎的兴趣最终导致我参与了 Apache Arrow 项目,我在 2018 年捐赠了最初的 Rust 实现,然后在 2019 年捐赠了 DataFusion 内存查询引擎,最后,在 2021 年捐赠了 Ballista 分布式计算项目。我不打算在 Arrow 项目之外构建其他东西,现在继续在 Arrow 内部为这些项目做贡献。

现在 Arrow 项目有很多活跃的提交者和贡献者在进行 Rust 的实现,与我最初的贡献相比,它已经有了很大的改进。

虽然 Rust 是高性能查询引擎的最佳选择,但它并不适合教授围绕查询引擎的概念,所以我最近在写这本书时建立了一个新的查询引擎,用 Kotlin 实现。Kotlin 是一种非常简洁的语言,而且易于阅读,因此有可能在本书中加入源代码的例子。希望你在阅读本书的过程中熟悉源代码,并考虑做出一些贡献。没有什么比获得一些实践经验更好的学习方法了!

本书中所涉及的查询引擎最初打算成为 Ballista 项目的一部分(而且曾经有过一段时间),但随着项目的发展,很明显,将查询引擎保留在 Rust 中,并通过 UDF 机制支持 Java 和其他语言,比在多种语言中重复大量的查询执行逻辑更有意义。

现在 Ballista 已经捐给了 Apache Arrow,我已经更新了这本书,在配套的 代码仓库 中把查询引擎简单地称为 “KQuery”,即 Kotlin 查询引擎的简称,但如果有人对更好的名字有建议,请告诉我!

反馈

本书的更新内容将在上市后免费提供,所以请偶尔回来看看,或者在 Twitter 上关注我(@andygrove_io),以便收到新内容的通知。

本书的电子版、MOBI和PDF格式也可从 https://leanpub.com/how-query-engines-work 购买。

Copyright © 2020-2022 Grove Enterprises, LLC。保留所有权利。