当全世界都在用 Rust 重写一切时,Prisma 却选择了反方向

Prisma 6.9.0 不只是一个版本更新,而是对当前技术趋势的一次深度反思。当整个行业都在谈论用 Rust 重写一切时,Prisma 选择了相反的道路------用 TypeScript 重写 Rust 引擎。

2025年6月5日发布的 Prisma 6.9.0 标志着一个重要的技术转折点。这个版本最大的亮点不是新增了什么炫酷的功能,而是做了一个看似"倒退"的决定:放弃 Rust 查询引擎,全面拥抱 TypeScript。

一个矛盾的时代背景

要理解这个决定的意义,我们先要看看当前的技术环境。2024-2025年是 Rust 重写的黄金时代。SQLite 正在被 Rust 重写为 Limbo,GNU coreutils 正在被重写为 uutils,甚至连最基础的系统工具都在拥抱 Rust。根据最新的性能测试,Rust 在很多场景下比 C++ 快 20-40%,同时减少了 70% 的内存错误。

在这样的背景下,Prisma 的选择显得格外引人注目。他们不仅没有更深入地使用 Rust,反而在 6.9.0 中推出了完全无 Rust 引擎的预览版本。这个版本目前支持 PostgreSQL 和 SQLite,其他数据库将在未来的版本中支持。

技术决策背后的深层逻辑

序列化成本:被忽视的性能杀手

Prisma 团队发现了一个有趣的现象:虽然 Rust 引擎本身很快,但在大数据集测试中,新的 TypeScript 查询编译器居然比基于 Rust 的引擎快 3-4 倍。这个结果初看违反直觉,但背后的原因很值得深思。

问题的核心在于"序列化税收"。当你的核心引擎是 Rust,但 API 层是 JavaScript/TypeScript 时,每次查询都需要这样的数据流转:JavaScript 数据 → 序列化为 Rust 可理解的格式 → Rust 处理 → 序列化回 JavaScript 格式 → 返回结果。

对于 ORM 这种需要频繁进行数据交换的工具,这个序列化成本可能比语言本身的性能优势更重要。Prisma 的新架构直接在 TypeScript 中构建查询计划,然后通过驱动适配器发送到数据库,完全跳过了这个序列化步骤。

生态系统兼容性的战略考量

6.9.0 版本的另一个重大变化是 Prisma Postgres 现在支持任何工具连接。这意味着你可以用 Drizzle、Kysely、TypeORM、甚至原生的 psql 来连接 Prisma Postgres,而不再局限于 Prisma ORM。

这个变化背后反映了一个重要的产品哲学转变:从"工具锁定"到"生态系统开放"。Prisma 意识到,在激烈竞争的 ORM 市场中,强制用户使用特定工具只会限制自己的发展空间。通过开放 Prisma Postgres,他们实际上是在为自己的数据库服务争取更大的市场份额。

新推出的 @prisma/ppg 驱动程序更是这种思路的体现。这个驱动允许你通过 HTTP 发送原生 SQL 查询,完全不需要 Prisma ORM。对于 Cloudflare Workers、AWS Lambda 这类不支持长连接 TCP 的环境,这提供了一个轻量级的解决方案。

开发体验的革命性改进

本地开发的无缝体验

6.9.0 在本地开发体验上的改进同样值得关注。新版本的 prisma dev 命令现在支持数据持久化,这意味着你重启开发环境时不会丢失数据。更重要的是,你可以同时运行多个本地实例,这对于微服务架构的开发和测试非常有用。

这些看似小的改进实际上解决了开发者的真实痛点。之前使用 Prisma 本地开发时,每次重启都要重新创建测试数据,这在复杂项目中是一个巨大的效率杀手。

VS Code 集成:工具链的完整闭环

新版本在 VS Code 中集成了完整的数据库管理功能。你现在可以直接在编辑器中创建和删除远程 Prisma Postgres 实例,查看和编辑数据,甚至可视化数据库架构。这种深度集成减少了工具切换的认知负担,让开发者能够保持在一个环境中完成所有工作。

两种技术哲学的碰撞

Prisma 的选择实际上代表了两种不同的技术哲学:

系统优化 vs 局部优化:虽然 Rust 在单一组件性能上可能更优秀,但 Prisma 选择优化整个系统的性能。他们发现,通过减少语言边界的开销,整体性能反而更好。

实用主义 vs 技术纯粹性:当全行业都在追求 Rust 的内存安全和性能优势时,Prisma 更关注实际的开发体验和部署简便性。新的 TypeScript 架构彻底消除了二进制文件管理的复杂性,这在 serverless 和 edge 环境中尤其重要。

对开发者生态的深远影响

重新定义性能基准

Prisma 的做法提醒我们,性能不仅仅是 CPU 周期或内存使用量,还包括开发效率、部署复杂度、维护成本等因素。在很多实际项目中,这些"软性能"指标可能比纯粹的执行速度更重要。

技术选择的新思路

6.9.0 的发布也为其他技术团队提供了一个思路:不要盲目跟随技术趋势,而要基于自己的具体使用场景做决策。Prisma 的成功证明,有时候"老技术"的新组合可能比最新的技术栈更有效。

未来的技术演进方向

从 Prisma 的路线图可以看出几个有趣的趋势:

无服务器优先的设计思路正在成为主流。新的 PPG 驱动、HTTP 连接支持、以及对 edge 环境的优化,都表明云原生应用对工具提出了新的要求。

工具生态的开放性变得越来越重要。Prisma Postgres 支持任何 ORM 连接,实际上是在为整个 TypeScript 数据库工具生态做贡献,这种"利他"的策略可能会带来更大的长期收益。

开发体验正在成为技术选择的决定性因素。VS Code 集成、一键备份恢复、多区域支持等功能,都是围绕让开发者工作更轻松而设计的。

给技术决策者的启示

Prisma 6.9.0 的发布对技术决策者有几个重要启示:

质疑技术炒作:不要因为某种技术很热门就盲目采用。每个技术选择都应该基于具体的业务需求和技术约束。

系统性思考:评估技术方案时,要考虑整个系统的复杂度,而不仅仅是单个组件的性能。

长期视角:技术选择的影响往往在几年后才会完全显现。维护成本、团队学习曲线、生态系统支持都是需要考虑的长期因素。

结语:技术进步的多元化道路

Prisma 6.9.0 的意义不在于证明 TypeScript 比 Rust 更好,而在于展示了技术进步的多元化可能性。在一个人人都在谈论 Rust 重写的时代,Prisma 选择了一条不同的道路,并且取得了令人印象深刻的成果。

这个选择提醒我们,最好的技术解决方案往往不是最酷的那一个,而是最适合具体问题的那一个。随着 Prisma 6.9.0 的发布,我们可能会看到更多工具开始重新思考他们的技术架构选择。

技术的未来不是单一的,而是多元的。Rust 有它的用武之地,TypeScript 也有自己的优势。关键是找到正确的匹配,而不是追逐技术时尚。

相关推荐
代码搬运媛8 小时前
Jest 测试框架详解与实现指南
前端
counterxing9 小时前
我把 Codex 里的 Skills 做成了一个 MCP,还支持分享
前端·agent·ai编程
wangqiaowq9 小时前
windows下nginx的安装
linux·服务器·前端
之歆9 小时前
DAY_12JavaScript DOM 完全指南(二):实战与性能篇
开发语言·前端·javascript·ecmascript
星星也在雾里9 小时前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
发现一只大呆瓜9 小时前
Vite凭什么这么快?3分钟带你彻底搞懂 Vite 热更新的幕后黑手
前端·面试·vite
Maimai1080810 小时前
React如何用 @microsoft/fetch-event-source 落地 SSE:比原生 EventSource 更灵活的实时推送方案
前端·javascript·react.js·microsoft·前端框架·reactjs·webassembly
雨辰AI11 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城202411 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
kyriewen11 小时前
产品经理把PRD写成“天书”,我用AI半小时重写了一遍,他当场愣住
前端·ai编程·cursor