pgrust:用 Rust 重写 PostgreSQL,通过 100% 回归测试的数据库革命

如果你是一名后端开发者,PostgreSQL 几乎是你绕不开的数据库。它稳定、强大、功能丰富——但 40 年的 C 语言代码积累也让它在某些方面显得笨重。最近,一个名为 pgrust 的项目在 GitHub Trending 上引起了轰动:开发者用 Rust 完全重写了 PostgreSQL,并且通过了 100% 的回归测试(超过 46,000 条查询),日增 500+ star。

什么是 pgrust?

pgrust 是由 Michael Malis(前 Heap 工程师,PostgreSQL 深度用户)发起的项目,目标是用 Rust 从零开始重建 PostgreSQL 18.3,保持完全兼容。

项目的核心理念是:保持行为与 PostgreSQL 完全一致,但用更现代的技术栈重构底层。它甚至可以直接从现有的 PostgreSQL 18.3 数据目录启动,磁盘格式完全兼容。

为什么值得关注?

1. 从进程模型到线程模型

PostgreSQL 使用进程模型(fork 子进程处理连接),这在 40 年前是合理的,但现代场景下进程开销太大。pgrust 采用 Rust 的线程模型,在多连接场景下性能大幅提升。据作者测试,在线程模型下的简单基准中,单查询性能可提升 3 倍

2. 惊人的开发速度(AI 辅助)

作者仅用了两周时间就写出了 25 万行 Rust 代码,复现了 PostgreSQL 的所有主要子系统。工作流程是:用 Codex 分析 PostgreSQL 源码理解每个组件 → 用 Rust 编写最小可行版本 → 与 PostgreSQL 的 5 万条回归测试比对。没有 AI 编码助手,这种速度根本不可能。

3. 最新版性能数据

根据项目最新更新,pgrust 正在开发的新版本取得了惊人的成绩:

  • ✅ 通过 100% PostgreSQL 回归测试
  • ✅ 线程模型替代进程模型
  • 🚀 事务负载比 PostgreSQL 快 50%
  • 🚀 分析负载比 PostgreSQL 快约 300 倍
  • 🚀 ClickBench 基准测试仅比 ClickHouse 慢 2 倍(有望超越)

性能为何能提升这么多?

关键原因包括:

  • 多线程内核:不需要每次 fork 进程,减少上下文切换开销
  • 内置连接池:不需要额外部署 PgBouncer 之类的连接池
  • 更好的 JSON 支持:PostgreSQL 不收集 JSONB 列的统计信息,pgrust 可以
  • SIMD 加速正则:Rust 正则引擎使用 SIMD 指令,比 Postgres 的 C 实现快 10 倍

快速体验

在线 Demo

可以直接在浏览器中体验 WASM 编译版本的 pgrust:pgrust.com

Docker 运行

docker run -d --name pgrust -e POSTGRES_PASSWORD=secret malisper/pgrust:v0.1
# 等待启动后
docker exec -it -e PGPASSWORD=secret pgrust psql -h 127.0.0.1 -U postgres
# 验证版本
select version(), 1 + 1 as two;

从源码构建(macOS)

brew install icu4c openssl@3 libpq
export LIBRARY_PATH="$(brew --prefix openssl@3)/lib:$LIBRARY_PATH"
export PKG_CONFIG_PATH="$(brew --prefix openssl@3)/lib/pkgconfig:$(brew --prefix icu4c)/lib/pkgconfig:$PKG_CONFIG_PATH"

cargo build --release --locked --bin postgres

# 初始化数据目录
target/release/postgres --initdb -D /tmp/pgrust-data   -U postgres --no-locale --encoding UTF8

# 启动
RUST_MIN_STACK=33554432 target/release/postgres   -D /tmp/pgrust-data -F -k /tmp -p 5432

从源码构建(Ubuntu/Debian)

sudo apt-get install -y build-essential pkg-config   libicu-dev libssl-dev libldap2-dev libpam0g-dev   postgresql-client-18

cargo build --release --locked --bin postgres

未来的可能性

pgrust 的野心不止于”性能更好的 PostgreSQL”,作者还规划了很多激动人心的方向:

  • 🔧 不依赖 Vacuum 的存储引擎设计(PostgreSQL 最头疼的问题之一)
  • 🔧 快速 Fork 和 Branch 数据库(类似 Git 的分支工作流)
  • 🔧 AI 生成 SQL 的运行时护栏
  • 🔧 更好的执行计划稳定性(减少突然的性能退化)

注意事项

pgrust 目前还不是生产就绪的——它仍处于早期开发阶段,性能优化尚未完成。现有的 PostgreSQL 扩展和过程语言扩展(如 PL/Python、PL/Perl)还不兼容。但部分内置 contrib 模块已被移植。

项目采用 AGPL-3.0 许可证

总结

pgrust 代表了数据库领域一个令人兴奋的方向:保留 PostgreSQL 的生态和兼容性,用现代语言彻底重构底层实现。两周写出 25 万行代码、通过 100% 回归测试、分析负载快 300 倍——这些数字本身就说明了一切。

如果你对数据库底层感兴趣、或者正在为 PostgreSQL 的性能瓶颈头疼,这个项目值得持续关注。

GitHub 地址:github.com/malisper/pgrust

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享