MariaDB 是 Google Summer of Code 2023 的一部分

我们很高兴地宣布,今年 MariaDB 再次被接受为 Google Summer of Code 的组织之一。通过这篇博客文章,我想展示我们将要承担的项目,并祝愿我们的学员们在夏天好运!
在 MariaDB,我们坚信开源的成长,并鼓励新开发者做出贡献。Google Summer of Code 使我们能够拥有专注的贡献者,让他们在几个月内专注于一个项目,并且知道费用已经得到保障。然后,我们 MariaDB 的人就可以专注于核心方面——编写代码和发展我们的社区。这是我们十多年来一直自豪地担任导师的主要原因。
我们指导的一些贡献者最终留在了这个生态系统中,有些人甚至最终成为我们的全职员工。(咳咳,作者就是这样成为基金会一员的 😉 )
今年我们收到了许多优秀的提案,并且从 Google 那里获得了 6 个名额来分配导师。尽管遴选过程很困难,但以下是 MariaDB 今年将指导的项目
ColumnStore 是明星项目
ColumnStore 有 5 个项目被接受,很明显这将是今年的亮点。
cpimport 中的 Parquet 支持
Bin Ruan 将改进向 ColumnStore 导入数据的方法。 在列式存储引擎中添加数据很棘手,特别是如果想要进行大量“行”插入时。这就是为什么 ColumnStore 有一个专用的工具(cpimport)用于批量导入数据。扩展其对多种数据格式的功能将使 ColumnStore 能够与更多应用和数据源一起使用。
ColumnStore 的模糊测试流水线
测试是确保软件质量的核心。而测试永远不嫌多。正因如此,今年,Lajat Manekar 将为 ColumnStore 实现模糊测试流水线。
我们已经对 MariaDB Server 及其更传统的存储引擎进行了全面的测试。然而,考虑到其分布式架构,ColumnStore 是一个完全不同的问题。这就是为什么我们期待将适当的高级测试引入 ColumnStore。我们也希望在这里学到的经验可以进一步移植到 buildbot.mariadb.org 上运行的 CI 中。
ColumnStore 中 SQL 表达式和函数的 SIMD 优化
为了获得顶级性能,软件需要利用硬件特性。编写通用代码只能在一定程度上提升性能。而 CPU 中称为单指令多数据 (SIMD) 的专用并行指令可以带来巨大的好处。ColumnStore 中的数据已经以“向量”格式存储,因此 在可能的情况下应用 SIMD 优化似乎很自然,这也是 Mu He 今年将要进行的工作。我们期待看到一旦利用 SIMD 后能够获得的性能提升。
优化 Maria DB Columnstore 中的 GROUP BY 操作
关于性能的话题:GROUP BY 是一个复杂的操作,有多种可能的执行计划。这通常是空间和时间之间的权衡。一个计划可能使用更多的 RAM(或磁盘存储),而另一个计划可能只扫描更多的行,执行时间更长,但内存开销小。可以对键进行排序以加快查找速度,或者使用哈希表。聚合方法常常不得不将中间结果溢出到磁盘。这些执行步骤中的任何一步都可能对最终查询性能产生影响。
Theresa Hradilak 将致力于改进 ColumnStore 中的 GROUP BY 性能。 重点领域将是实验不同的哈希表以及通过 liburing 引入异步 I/O。
实验 ColumnStore 中 SQL 表达式的 JIT 优化
ColumnStore 的最后一个项目是关于实验现代 JIT 编译能力的编译器,例如 LLVM, MIR。由 Qijun Xie 进行的这个项目 的目标是确定为 SQL 表达式引入 JIT 编译的字节码是否会带来任何性能提升。像 t1.a + FLOOR(t1.b)
这样的表达式由于所有的类型检查和评估过程会产生性能开销。我们相信消除这种开销将对性能产生积极影响。
MyRocks(又名 RocksDB)正在获得一些姗姗来迟的关注
最后,走出 ColumnStore 的领域,我们还有一个存储引擎项目,这次是关于 MyRocks。MyRocks 最早是在 MariaDB 10.2 中引入的。这个存储引擎特别之处在于它依赖于 RocksDB,一个由 Facebook 开发的键值存储。MariaDB 一直没有跟上 RocksDB API 的最新变化,现在我们无法简单地升级 RocksDB 版本。由 Junqi Xie 进行的这个项目 的目标是创建必要的包装器和修改,以便 MyRocks 可以使用最新版本的 RocksDB 进行编译。
说了这么多,我们祝愿我们的学员和导师们有一个富有成效的夏天!