Greptime 亮相北美 MDI 峰会,与 Dragonfly/MotherDuck/TiDB 等共聊现代数据系统 👉🏻 购买早鸟票

Skip to content
On this page
社区
2025-9-23

【社区投稿】修 Bug、进阶、喝酒:我在 GreptimeDB 社区住下了

从偶然点开的仓库,到提交第一个 Bug 修复,再到优化性能提升 10 倍,我在 GreptimeDB 学了很久的 Rust。本文记录了我对社区的认知过程和学习心得。如果你也想加入开源世界,这篇文章或许能给你一些启发。

本篇文章已投稿至“从 X 到 GreptimeDB——分享真实故事,赢取专属奖励”征稿计划,经 GreptimeDB 社区整理发表(最终解释权归社区所有)。欢迎大家继续投稿,最高赢取 5,000¥ 奖金和专属大礼包。投稿参考。

📢 介绍一下作者

伊洪,喜欢跑步,看书游戏开源,幸会! GitHub

写在前面

项目地址:

GreptimeDB

GreptimeDB 是一款用 Rust 写的开源可观测数据库。官方的介绍是:

化繁为一的可观测数据库。OpenTelemetry 原生、云原生,实时处理指标、日志和链路追踪数据,在任何规模下提供亚秒级洞察。

到现在为止,我已经提交了 51 个 PR,其中 44 个被合并,在所有贡献者里排第 20 名

这篇文章想聊聊,我是怎么从一个“路人”,逐渐变成 GreptimeDB 的长期贡献者,还成为了社区的布道师(Advocator)。

契机:看似偶然的叠加

我和 GreptimeDB 的缘分,没有直接的目的,而是一连串偶然的推波助澜:

  • 第一次听说:在大连云原生大会上,马道长提到有个用 Rust 写的数据库;
  • 认识 CTO:很早就在 Twitter 上关注了 @sunng87,后来才发现他是 Greptime 的 CTO;
  • Good First Issue:那时 Tison 在 Greptime,经常发一些对新人友好的 Issue;
  • Rust 的契机:去年年底发现 AI 写的 Python 代码总会带着一堆 Bug,我干脆换个语言,或许学点 Rust 可以解决这个问题;
  • 小插曲:一度被 Greptime 的某位同学“误拉黑”,反而让我对团队更好奇。

真正让我“动手”参与的契机,是某天发现 Greptime 的 CEO 在 LinkedIn 上关注了我。当时正好想找个 Rust 项目练手,就顺势点开了这个仓库,从此一脚踏进了 GreptimeDB。

初次试水:从 Bug 开始

我的第一个 PR 是 db#5274,最后没合并。

我比较倾向于从 Bug 入手一个项目,能够管中窥豹了解整个项目的逻辑。虽然最终因为涉及到架构设计问题被关掉了,但这个项目还是给了我一些启发:

  • 如何完整编译项目;
  • 熟悉 lint test 和 CI;
  • 他们 makefile 的写法很精巧,尤其 make help,直接启发我后来在 TiDB 贡献 patch

那一刻我意识到:

开源贡献其实没那么难。只要能把项目跑起来,你自然会知道下一步该怎么走。

于是就有了。

第一个真正合并的 PR

db#5279 是我第一个合并的 PR。

起因很随意:在首次尝试修复的过程中我发现 make fmt 要跑 40 秒,忍不下去,顺手优化成了 4 秒。这个贡献并不难,我们都可以做,甚至 AI 可以比我做得更好。

这件事让我意识到:在 AI 时代,模型能帮你写代码,但真正敏锐地发现“问题在哪”,仍然需要人。

边学 Rust 边交朋友

接下来我就一边学 Rust,一边贡献:

  • db#5301:写下第一行 Rust 代码,顺便加了测试;
  • db#5313:修 Bug 时顺带解决 Panic;
  • db#5338:研究 OpenDAL 的时候清理了无用 Import(因为 GreptimeDB 也用 OpenDAL);

其中有一条评论很有趣:LGTM. Why does cargo check or clippy is not reporting this?

  • db#5349:通过这条评论,我学习到了 cargo check 无法准确报告一些 useless code。那有没有可以的呢?于是学到了新的 Static check,有了一个 Patch(如下);
  • db#5352:在新的检查工具加持下提交优化。

后来我接触了 RAPx,一个更厉害的 Rust 静态分析工具,陆续提交了更多改进:db#5383db#5388db#5507 等等。

在这个过程中,我不仅学会了 Rust,还真正感受到 Rust 的安全哲学和工具链的力量。

三个让我自豪的 Patch

后面我就完成了一些常规修复。在所有贡献里,有三个让我特别有成就感:db#5518db#5561db#5497

它们让我体会到:

  • 性能优化不是玄学:比如 Fast path,自己写了才知道真能立竿见影;
  • 算法的魔力:只改几行代码,性能提升 10 倍。从 LeetCode 的题目,到真正跑在数据库里的算法,那种落地感很震撼。

从 GreptimeDB 到 OpenDAL,再回到 GreptimeDB

随着对 Rust 越来越熟,我也给 OpenDAL 提了不少 Patch。理解 OpenDAL 后,反过来又给 GreptimeDB 带来新的特性,比如 db#5585

再后面就是遇到啥好玩的,如果觉得对 Greptime 可能有用就顺手贡献一个。

社区的另一面:喝酒、跑步、写代码

代码只是开源的一半。

线下我认识了 @fengjiachun,在日本也联系到了 @sunng87

我们一起喝酒、聊往事。那一刻我才真切明白:

开源的价值不止在提交代码,它也是人与人之间的连接(这段是社区自己的升华)。

写在最后

在 GreptimeDB 的经历,让我学到了 Rust、理解了数据库优化,也认识了新朋友。

如果你也想找个入口加入开源,不妨先点开 GreptimeDB,从一个小 bug 开始。

说不定,这就是一个新故事的起点。

加入我们的社区

获取 Greptime 最新更新,并与其他用户讨论。