pgrust:用Rust重写、兼容Postgres的高性能数据库
pgrust是以Rust重写、与Postgres 18.3磁盘兼容的开源数据库实现,目标在保留Postgres行为的前提下,通过多线程与AI辅助改进探索显著的性能与架构优化,适用于研究验证与性能对比场景。
GitHub malisper/pgrust 更新 2026-07-12 分支 main 星标 2.1K 分叉 50
Rust 关系型数据库 Postgres兼容 高性能 AI辅助开发 多线程架构 磁盘兼容 AGPL-3.0

💡 深度解析

5
pgrust 解决了 Postgres 内部变更难的问题吗?它具体如何解决这些核心痛点?

核心分析

项目定位:pgrust 的核心价值在于提供一个兼容 Postgres 行为与磁盘格式的现代内核实现,以便在不破坏兼容性的前提下做架构性实验。

技术分析

  • 回归测试作为规范:将官方 Postgres 回归套件作为“oracle”把行为回归当作可验证约束,降低功能改动引入语义回归的风险。
  • 磁盘兼容性:可直接从 Postgres 18.3 数据目录启动,允许用真实数据做对比测试与性能基准,显著降低迁移测试成本。
  • Rust 重写带来的变更成本下降:Rust 提供的内存安全、抽象和并发工具链(thread-per-connection、内置连接池)使得做深层次的存储或并发重构更可控。

实用建议

  1. 用于研发/验证平台:把 pgrust 用于内核改动试验、新存储方案或并发模型验证。利用 scripts/run-regression 来确保行为一致性。
  2. 用真实数据目录做对比:在隔离测试环境下把现有 Postgres 18.3 数据目录挂到 pgrust,跑回归与性能基准,以评估语义兼容性与性能变化。
  3. 结合容器/WasM demo 快速评估:先用官方 Docker 镜像或 WebAssembly demo 避免构建环境复杂性。

注意事项

重要:pgrust 明确不是生产就绪。扩展(如 PL/Python)和某些 contrib 模块尚未普遍支持,性能宣称需复现验证。

总结:pgrust 减少了在保持 Postgres 兼容性的前提下做内核级实验的障碍,是一个面向研究和架构实验的高价值平台,但需在受控环境中逐步验证改动效果。

85.0%
为什么用 Rust 重写 Postgres 是合理的技术选型?pgrust 的架构有哪些具体优势?

核心分析

项目定位:用 Rust 重写旨在为数据库内核带来更强的内存安全、现代并发模型与更低的重构成本,从而便于做线程模型、存储层等架构性实验。

技术特点

  • 内存安全与零成本抽象:Rust 的 borrow checker 和类型系统能在编译期捕捉内存和并发错误,降低出现难以复现的内核崩溃风险。
  • 并发模型改进:从 process-per-connection 到 thread-per-connection 能减少进程上下文开销、加速共享内存访问并简化跨连接内存共享的实现。
  • 实验友好且可验证:磁盘兼容+回归测试保障允许替换存储或引入 no-vacuum 设计后仍能验证行为正确性。
  • 运行时 guardrails:设计上支持在内核层加入对恶意或 AI 生成 SQL 的保护逻辑,提高可控性。

实用建议

  1. 针对并发改造做基线测试:在目标工作负载下,对比 thread-per-connection 和 process-per-connection 的上下文切换、内存占用与延迟行为。
  2. 逐步迁移存储实验:先在测试目录上做 no-vacuum 或自定义存储层实验,并用回归套件验证语义一致性。
  3. 关注实现细节:尽管 Rust 提供语言保障,但性能与稳定性取决于具体内存管理、锁策略与 IO 实现。

注意事项

重要:语言选择并非自动解决所有并发/性能问题。错误的锁策略或不当 IO 实现仍会带来瓶颈,需通过基准与代码审查验证。

总结:Rust 为内核重写提供了强有力的语言基础和现代并发路径,pgrust 的架构方向在理论上能带来更易实验和可控的内核改造环境,但最终效果需通过工程实现和基准验证来确认。

85.0%
作为运维/DBA,把现有 Postgres 数据迁移到 pgrust 做测试时会遇到什么用户体验与实践挑战?

核心分析

问题核心:pgrust 支持从 Postgres 18.3 数据目录直接启动,这在迁移评估时非常有吸引力,但实际运维体验会被构建依赖、扩展兼容性与测试负担所影响。

技术分析

  • 磁盘兼容的好处:能在不做 dump/restore 的情况下用真实数据验证行为与性能,减少变异来源。
  • 构建与运行要求:本地构建需要设置 PGRUST_PGSHAREDIRRUST_MIN_STACK 等环境变量,并安装 icu4copenssl@3libpq 或相应的系统包;配置不当会导致无法启动或回归测试失败。
  • 扩展与 PL 限制:很多第三方扩展和过程式语言尚未支持,依赖这些扩展的数据库对象可能无法正常工作或需要迁移方案。

实用建议

  1. 在隔离环境测试:复制生产数据目录到独立测试节点,避免直接在生产目录上操作。
  2. 检查扩展依赖:列出数据库中所有扩展/PL,并提前验证它们在 pgrust 中的可用性或替代方案。
  3. 使用 Docker/WasM 快速验证:先用官方 Docker 镜像或 WebAssembly demo 做语法与基本查询兼容性验证,减少本地构建负担。
  4. 运行回归与性能基准:使用 scripts/run-regression 和自定义基准来验证行为和性能宣称。

注意事项

重要:pgrust 目前“非生产就绪”且扩展支持有限;切忌直接将生产服务切换到 pgrust。

总结:迁移用于测试的门槛低——磁盘兼容是核心优势,但需提前准备构建环境、核查扩展兼容并在隔离环境中做全面回归与性能验证。

85.0%
pgrust 的性能宣称(事务 +50%、分析型 ~300x)可靠吗?如何验证这些性能改进?

核心分析

问题核心:pgrust README 提出显著的性能改进,但缺乏公开、可复现的基准细节;因此这些数字需要通过严格、可对比的测试来验证。

技术分析

  • 宣称的来源不明确:项目给出百分比和倍数,但未公开基准参数(硬件、IO 配置、并发、查询集),这些都会显著影响结果。
  • 实现与配置影响大:性能受 IO 方法(sync/async)、锁策略、缓存管理、并发模型(thread vs process)影响;这些在不同场景中对结果有放大或抵消效应。
  • 复现能力存在工具支持:项目提供 Docker、WebAssembly demo 与回归测试 runner,可用于搭建基线环境以便复现测试。

实用建议(如何验证)

  1. 建立可比基线:在同一硬件上用 Postgres 18.3 启动相同数据目录并记录系统/DB 参数。
  2. 固定系统变量:锁定 IO 调度、fsync、CPU 频率、NUMA、内存与磁盘缓存设置,确保公平对比。
  3. 使用标准化基准:运行事务性(如 TPC-C/pgbench)和分析型(如 clickbench)基准,同时运行 README 中提到的示例查询集合。
  4. 收集低层指标:测量 CPU、IOPS、latency、context-switch、锁等待、缓存命中等指标以定位瓶颈。
  5. 公开复现步骤:记录并分享配置与脚本以确保结果可审计。

注意事项

重要:即使在某些测试中 pgrust 显著更快,也不代表在所有生产工作负载或扩展/PL 依赖场景下相同表现。

总结:pgrust 的性能宣称值得关注但须实证。通过受控基线测试、标准基准和详尽指标采集来确认其在你特定工作负载上的实际收益。

85.0%
在什么场景下应该选择用 pgrust 做评估或原型?有哪些明显的限制使其不适合某些场景?

核心分析

问题核心:pgrust 适合哪些应用场景?哪些情形下应避免使用?

适用场景

  • 内核研究与架构实验:需要验证新的存储方案(例如 no-vacuum)、并发模型或运行时保护的研发团队。
  • 兼容性验证与迁移评估:希望在不做 dump/restore 的前提下用真实数据目录对比行为和性能的 DBA/运维团队。
  • 原型与教学:教学或探索数据库内核改动影响的场景,利用回归测试作为行为合规检查。

不适合的场景(限制)

  • 生产替换:项目自述“尚不适合生产环境”,缺乏长期维护与高可用保障。
  • 依赖广泛扩展/PL 的应用:很多扩展和 PL(PL/Python 等)尚未兼容,依赖这些特性的系统无法直接迁移。
  • 对许可敏感的商业场景:AGPL-3.0 可能限制闭源产品的嵌入或二次分发。
  • 跨版本或自定义 Postgres 构建:兼容性保证仅针对 Postgres 18.3,其他版本或自定义选项不保证。

实用建议

  1. 把 pgrust 作为实验床:在隔离环境中进行存储、并发或查询优化实验,并使用回归套件验证语义一致性。
  2. 评估扩展依赖:对于依赖扩展的系统,先确认替代路径或在 pgrust 上移植关键扩展的可行性。
  3. 考虑许可影响:在商业化或闭源集成前做法律合规评估。

注意事项

重要:pgrust 的设计目标是“可实验、可替换、可测量”,但当前阶段更适合研究与原型,而非直接上生产。

总结:当你的目标是对 Postgres 内核或存储做可验证实验时,pgrust 是高价值工具;若需要生产稳定性、完整扩展生态或许可友好性,则应选择成熟的 Postgres 发行版或商用替代品。

85.0%

✨ 核心亮点

  • 通过>46,000条Postgres回归测试验证兼容性
  • 与Postgres 18.3磁盘兼容,可直接从数据目录启动
  • 宣称在事务与分析场景上显著优于Postgres
  • 社区活跃度低:0贡献者、0星,维护风险显著

🔧 工程化

  • 目标与Postgres行为兼容,使用真实测试作为行为基准
  • 磁盘级兼容设计,可从Postgres 18.3数据目录直接启动
  • 采用Rust实现并结合AI辅助编程探索服务器内部改进

⚠️ 风险

  • 尚非生产就绪,文档和性能尚未完成全面优化
  • 现有扩展与过程语言(PL/Python等)兼容性有限
  • 社区与维护资源稀缺,长期支持与安全响应存在不确定性
  • 采用AGPL-3.0许可,可能对闭源商业使用产生约束

👥 适合谁?

  • 数据库系统研究者、核心存储和查询引擎开发者
  • 寻求Postgres兼容但需性能/架构改进的工程团队
  • 愿意在非生产环境测试、验证并贡献的开源社区成员