我们在 2024 年开发了什么

作为 MariaDB 基金会的首席开发官,我的工作是确保我们的开发工作聚焦在最重要的地方。在 2024 年的最后一天,我想回顾一下我们取得的重大技术成就以及促成这些成就的协作过程。

我们今年的工作目标是构建一个更强大、更活跃的 MariaDB 社区。通过分享我们的进展和经验,我希望能够提供一些见解,以启发和支持其他开源项目。

最后,我将概述基金会 2025 年的愿景以及我们计划如何将其变为现实。

Buildbot:我们的 CI/CD 流水线是开发的核心支柱

我想强调的第一个关键项目是 MariaDB Server、Galera 和相关生态系统软件(如 WordPress、PHP 等)的 CI/CD 流水线。这个流水线位于 https://buildbot.mariadb.org,是核心开发者日常使用的工具。

对于可能不了解的人来说,每当开发者向 MariaDB Server 的 Github 仓库推送更改或创建拉取请求时,该提交都会在 100 多种不同的测试和架构组合上进行测试。我们必须这样做,因为 MariaDB Server 是我所说的“基础软件”。我们对用户有责任提供一个稳定的数据库。而且,仅在 dockerhub 上,我们的下载量就已接近 30 亿次,拥有如此庞大的用户群,我们不能容忍出现回归问题。

我们有一组核心测试组合(我们称之为受保护的构建器),用于强制执行分支保护。任何提交都无法合并到 MariaDB Server 仓库中,除非这些测试通过,没有任何例外。对于任何希望提高代码质量的项目,我建议查看 Github 上的分支保护和状态检查

我们还开始试验 GitHub 的自动合并功能。到目前为止,结果令人鼓舞,尽管偶尔会出现一些拉取请求即使所有测试都通过了也未能自动合并的小问题。然而,这些情况很少见。

我们正在努力让贡献者们的生活更轻松。通过创建拉取请求,贡献者可以看到他们的补丁正在接受我们全面的 CI/CD 套件测试。随着构建器及其测试的成熟,我们将它们添加到此流水线中,以提供更广泛的覆盖范围,同时最大程度地减少新贡献者的误报。

在内部,我们做了不少事情:

  • 将整个部署迁移到了 Docker Compose 栈。这简化了 Buildbot 的更新,并包含了我们的 CrossReference 插件,用于跟踪测试失败。您也可以在 Github 上找到 CrossReference 插件的代码
  • 将主节点机器迁移到了更新的硬件,具有更大的存储空间。这将使我们能够存储更多的构建工件,并帮助开发人员追踪偶发的测试失败。
  • 添加了一个专用的 MinIO 实例,用于 S3 存储测试。
  • 从旧的 CI/CD 系统移植了 PAM 认证测试。
  • 利用 Github actions 在开发环境中构建我们的测试镜像。借助容器标签,我们可以立即将它们迁移到生产环境。我们所做的就是将开发镜像标记为其生产等效项。例如,将 ubuntu2404_dev 标记为 ubuntu2404。这极大地减少了我们的停机时间,尤其是在发行版进行较大更新时。
  • MariaDB 官方 docker 镜像现已基于 Red Hat 系统提供,更多详情请参阅 Daniel 的文章
Community pull request to MariaDB Server shows status checks passing.

MariaDB Vector:分析能力的一个里程碑

经过巨大的努力,MariaDB Vector 现在已成为稳定版本 (11.7) 的一部分。尽管有大量博客文章探讨其功能——包括 RAG (检索增强生成) 示例性能基准测试框架集成——在这里我想重点介绍其开发背后的社区驱动方法。

  1. 从一开始就协作:我们建立了一个项目页面,概述了治理结构,明确表示欢迎外部贡献,最终的语法将是社区共同努力的结果。
  2. 行业和学术研究:我们审查了现有的实现和最新的研究,以避免陷阱并采用最佳实践。
  3. 任务管理和范围:我们在 JIRA 中概述了项目,帮助我们跟踪和分享进展,完善规范,并将工作分配给不同的开发者。
  4. 吸引贡献者:我们联系了像 PlaneScale、Google 和 Amazon 这样的关键参与者。特别是 Amazon,在与我们通过定期会议和电子邮件密切合作的同时,贡献了性能基准测试和关键错误修复。
  5. 社区反馈循环:一旦预览版准备就绪,我们便邀请社区进行测试和提供反馈。这种互动,包括与 SkySQL 的协作,促成了错误报告和如 LLamaIndex 的集成
  6. 更广泛的宣传:FrosConOpen Source India 等会议以及我们的柏林 ServerFest 上的演示提供了宝贵的反馈,这些反馈现在正在塑造未来的开发计划。
  7. 赏金计划:我们启动了一个“Vector 赏金”计划,以鼓励 MariaDB Vector 与各种 AI 框架进行更多集成。

Catalogs:MariaDB Server 中的多租户功能

两年前启动的 Catalogs 项目在 2024 年取得了重大进展。Catalogs 旨在通过在单个服务器中整合多个租户,从而实现更经济、更节能的 MariaDB Server 部署。

尽管该功能仍位于一个单独的仓库中,但我们对即将发布预览版持乐观态度。关键里程碑:

这是我们首个通过结构性基金资助的项目。NlNet 正在资助一部分开发工作。我们希望未来能有更多这样的项目。

展望未来:2025 年及以后

在我们结束 2024 年之际,我们对即将到来的事物感到兴奋。MariaDB 在支持 AI 驱动应用程序以及为我们的社区提供高性能、可扩展解决方案方面的作用比以往任何时候都更加清晰。

在 2025 年,我们将重点关注以下关键领域:

  • 扩展 MariaDB Vector 的功能,以保持在 AI 浪潮中的领先地位。这意味着要确保 MariaDB 在尽可能多的 AI 框架中得到支持。我们将听取社区反馈并进一步改进我们的向量搜索。还有许多索引算法有待探索。
  • 进一步增强我们的 CI/CD 基础设施,以支持更快、更可靠的开发。我们将重点关注开发流程,简化核心开发者的工作流程,并让社区贡献者也能受益于相同的全面测试。我们还将致力于尽可能自动化发布流程,以减少人为错误,并将这些资源更好地用于其他地方。
  • 将 Catalogs 作为一个完全完善的功能交付给 MariaDB Server。这一点非常直接。我们启动了一个项目,并且打算完成它。欢迎社区贡献者开始试验和构建围绕 Catalogs 的工具。如果您需要某项功能来使其变得更好,请联系我们!
  • 促进开源生态系统内的更大协作,鼓励更多社区贡献。我们了解到,在对 MariaDB 的贡献方面有许多可以改进的地方,这就是我们今年将要做的事情。重点将放在及时审阅社区贡献、改进文档、为新贡献者提供更容易找到的错误供其修复以及增加会议露面等方面。

MariaDB 基金会致力于透明、创新并赋能我们充满活力的社区。感谢所有今年做出贡献、测试或仅提供反馈的人。我们正在共同构建卓越的事物。

祝愿 2025 年取得更辉煌的成就!