Introduction 介绍

我自从开始第一份软件工程师的工作以来,一直痴迷于数据库和查询语言。向计算机提问并且高效地获取有用的数据是一件非常神奇的事情。在做了多年的常规软件开发人员和数据技术的终端用户后,我开始为一家初创公司工作,这让我深入了解分布式数据开发。这是一本我开始这段旅程之前就已经存在的书。尽管它只是一本入门级的书,当我希望能够揭开查询引擎工作原理的神秘面纱。

我对于查询引擎的性质最终致使我参与了 Apache Arrow 项目,在该项目中,我在 2018 年贡献了最初的 Rust 实现,然后再 2019 年贡献了 DataFusion 内存式查询引擎,最终在 2021 年贡献了 Ballista 分布式计算项目。

在 Rust 实现方面,Arrow 项目现在有着许多活跃的提交者和贡献者,并且与我最初贡献的版本相比,它有了显著的改进。

尽管对于高性能查询引擎而言,Rust 语言是一个不错的选择,但它并不适合教授关于查询引擎的概念,因此我最近在写这本书的适合用 Kotlin 实现了一个新的查询引擎。Kotlin 是一门非常简洁易读的语言,因此可以子啊本书中包含源代码示例。我将鼓励您在阅读本书的过程中熟悉源代码,并考虑做出一些贡献。没有什么是比实践更好的学习方法了。

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

现在 Ballista 项目已经贡献给了 Apache Arrow,我已经将这本书中配套代码库中的查询引擎简单地称为 "KQuery",是 Kotlin Query Engine 的简称,但如果有人有更好的名称建议,请告诉我。

这本书的后续篇章将可用版本更新时免费提供,因此请偶尔查看本书地址或者在 Twitter 上关注我 (@andygrove_io) 以便接收新内容可用通知。

Feedback 反馈

如果您对本书有任何反馈,可以给我的 Twitter 账户 @andygrove_io 发送站内信或者向 agrove@apache.org 发送邮件。