尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

pgrust 横空出世:Rust 版 PostgreSQL 凭什么挑战 ClickHouse?

pgrust 横空出世:Rust 版 PostgreSQL 凭什么挑战 ClickHouse? pgrust 横空出世Rust 版 PostgreSQL 凭什么挑战 ClickHouse【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrustpgrust 是一个用 Rust 语言从零重写 PostgreSQL 的开源数据库项目目标是对齐 PostgreSQL 18.3 的完整兼容性同时借助 Rust 的内存安全与并发优势把性能推向新高度。项目官方披露其新一代版本在分析型负载上比 PostgreSQL 快约 300 倍甚至有望超越以快著称的 ClickHouse——这个口号一经发布立刻引爆了整个数据库圈。pgrust 是什么用 Rust 重写 PostgreSQL 的开源数据库简单来说pgrust 不是在 PostgreSQL 外面包一层壳而是把 PostgreSQL 的核心模块一一移植为纯 Rust 实现从存储引擎、查询优化器、执行器到事务管理与 WAL 日志全部重写。目前项目对齐 PostgreSQL 18.3并已经达成两大关键里程碑✅磁盘级兼容pgrust 可以直接挂载并启动一个现有的 PostgreSQL 18.3 数据目录未来迁移几乎零成本✅回归测试 46,000 通过以 PostgreSQL 官方回归测试作为标准答案pgrust 在 46,000 多条回归查询上与官方输出完全一致。这两点意味着 pgrust 从一开始就不是另一个玩具数据库而是试图成为 PostgreSQL 的完整替代实现。凭什么挑战 ClickHouse一组惊人的性能数据pgrust 敢于叫板 ClickHouse靠的不是营销话术而是一组实打实的性能数字来自项目披露的未发布版本负载类型性能表现事务型负载OLTP比 PostgreSQL 快约 50%分析型负载OLAP比 PostgreSQL 快约 300 倍ClickBench 基准测试目前约为 ClickHouse 的 1/2 速度官方认为可进一步超越换句话说OLTP 场景它比原版 PostgreSQL 更快OLAP 场景它直逼专业分析数据库。这种一鱼两吃的能力正是它引爆社区关注的根本原因。这里补充一个背景知识ClickBench 是 ClickHouse 官方推出的分析型基准测试包含 43 个真实业务查询覆盖过滤、聚合、排序等典型场景是衡量分析型数据库性能的试金石。能在 ClickBench 上被拿来和 ClickHouse 相提并论本身就是一种实力的证明。为什么性能能提升这么多三大技术底气1. 一连接一线程告别进程开销 ⚡原生 PostgreSQL 采用一连接一进程process per connection模型每个客户端连接都要 fork 一个进程内存与上下文切换开销巨大。pgrust 新一代版本改用一连接一线程thread per connection模型配合 Rust 的并发能力大幅降低了连接成本与共享开销——这正是事务型负载提速 50% 的关键所在。2. Rust 的内存安全与零成本抽象Rust 在编译期就能消除空指针、悬垂引用、数据竞争等一大类内存错误同时不引入垃圾回收GC的运行时开销。对于数据库这种性能即生命的软件Rust 让开发者可以放心写出高性能代码又不必像写 C 那样时刻提心吊胆。3. AI 辅助编程加速内核改造pgrust 的另一个特色是深度使用 AI 辅助编程。传统上修改 PostgreSQL 内核是出了名的高门槛庞大的 C 代码库、复杂的宏与全局状态。项目借助 AI 把 C 代码翻译为 Rust并以官方回归测试作为裁判不断验证正确性——这正是它能快速推进到 46,000 回归查询的原因。在 pgrust 的代码仓库中你可以清楚地看到这套逐步移植的工程思路核心实现分布在crates/backend目录如存储、执行器、优化器而crates/_support/seam提供了一整套缝合点机制用来在移植过程中隔离尚未完成的部分保证整体始终可编译、可运行。兼容性如何46,000 回归查询验证了什么对数据库用户来说换内核最怕的就是不兼容。pgrust 把兼容性当作第一优先级官方回归测试作为唯一标准项目直接复用 PostgreSQL 18.3 自带的回归测试文件位于仓库vendor/postgres-18.3目录通过scripts/run-regression脚本一键运行、逐条比对输出磁盘格式完全一致pgrust 可以直接读取现有 PostgreSQL 数据目录意味着未来从 PostgreSQL 切换到 pgrust 无需导出再导入数据部分 contrib 模块已内置仓库contrib目录下已经移植了 hstore、pg_trgm、citext 等多个常用扩展。当然也要客观看待pgrust 目前尚未达到生产就绪production-ready状态部分扩展如 PL/Python、PL/Perl还不兼容性能也尚未全面优化。它更像是一颗潜力巨大的种子选手。如何快速体验 pgrust最简单的上手方法方式一浏览器直接体验零安装️pgrust 提供了 WebAssembly 版本你可以在浏览器里直接运行一个完整的 pgrust 实例无需安装任何软件非常适合先尝个鲜。方式二Docker 一键启动pgrust 提供了与官方 postgres 镜像完全同构的 Docker 镜像使用方式几乎一模一样docker run -d --name pgrust -e POSTGRES_PASSWORDsecret malisper/pgrust:v0.1启动后即可用 psql 连接使用psql -h 127.0.0.1 -U postgres -c select version(), 1 1 as two容器内的初始化流程、环境变量POSTGRES_USER、POSTGRES_DB 等都与官方镜像保持一致换手成本极低。详细的容器说明可以查看docker/README.md。方式三从源码编译如果你是 Rust 开发者想深入源码研究可以克隆仓库后通过cargo build --release编译完整步骤见README.md的 Build From Source 部分再用项目自带的--initdb驱动初始化数据目录即可启动一个纯 Rust 的 PostgreSQL 服务。pgrust 路线图接下来会发生什么根据项目公开的路线图pgrust 计划推进的方向包括多线程内核进一步挖掘 Rust 的并发优势内置连接池省去 PgBouncer 等外部组件更强的 JSON 负载支持无 VACUUM 的存储设计尝试彻底解决 PostgreSQL 的膨胀与回收问题️面向 AI 生成 SQL 的运行时护栏拦截坏查询与突变的执行计划。其中无 VACUUM 存储尤其值得期待——如果实现成功将从根源上改变 PostgreSQL 的运维模式。总结pgrust 能否撼动 PostgreSQL 与 ClickHousepgrust 的故事本质上是一场用现代语言重写经典数据库的实验它证明了 Rust 有能力承接 PostgreSQL 这样级别的复杂系统也展示了 AI 辅助编程在大型系统移植中的惊人效率。对普通用户来说现在最值得做的三件事是在浏览器或 Docker 里体验一把感受Rust 版 PostgreSQL的手感持续关注它的回归测试进度——这是兼容性最可信的指标等待它发布生产级版本届时数据库选型的天平很可能再次倾斜。至于它能否真正超越 ClickHouse答案已经写在性能数据里剩下的交给时间。⏳【免费下载链接】pgrustPostgres rewritten in Rust, now faster than Postgres and Clickhouse项目地址: https://gitcode.com/GitHub_Trending/pg/pgrust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表