2025年4月30日

尝试新的“无 Rust”版本 Prisma ORM(抢先体验)

更快、更灵活、更优的开发体验:这就是我们从 Rust 转向 TypeScript 所带来的优势!但这不仅仅是从一种语言重写到另一种语言,它是 Prisma ORM 架构的根本性改进——您现在就可以立即尝试

Try the New "Rust-free" Version of Prisma ORM (Early Access)

Prisma ORM 简史

让我们快速回顾一下,了解 Prisma 架构及其基于 Rust 的查询引擎的起源。

从 GraphQL 到数据库

如果您是 Prisma 社区的新成员,这可能会让您感到惊讶:Prisma ORM 脱胎于一个名为 Graphcool 的 GraphQL 后端即服务。经过多次迭代,我们剥离了抽象层,从 API 层向下移至数据库层,最终于 2020 年发布了 Prisma ORM。

为何最初选择 Rust 查询引擎?

当 Prisma ORM 于 2020 年构思时,我们的目标是为多种语言构建 Prisma ORM。因此,我们选择了一种能够支持这一工作的架构,并将 Prisma ORM 的查询层分为两部分:

  • 一个查询引擎:负责生成 SQL 查询和管理数据库连接的繁重工作。
  • 一个轻量级语言特定客户端:让开发者可以轻松地向数据库发送查询。

更快、更灵活、更优的开发体验

五年后,开发者生态系统发生了巨大变化:TypeScript 正在成为 Web 的主导语言,开发者也倾向于无服务器部署。我们还深入了解了 Rust 引擎方法所造成的摩擦点,最突出的是与现代运行时的兼容性问题部署复杂性(例如,由于引擎二进制文件大小或需要为特定目标编译)以及由于跨语言边界额外的序列化步骤而导致的性能开销

有了这些经验,我们开始了一项旅程:从架构中移除 Rust,以创建更快、更灵活并提供整体更好开发体验的 Prisma ORM 版本!如果您想了解更多关于迁移过程的信息,请查看我们之前关于此主题的两篇文章:

Prisma ORM v6.7.0:无 Rust 引擎的新架构(抢先体验)

继我们之前的更新之后,我们很高兴地通过本周的 v6.7.0 版本发布,为 PostgreSQL 和 SQLite 带来了新的无 Rust 架构的抢先体验。请尝试使用并告诉我们您的想法!

与原生 JavaScript 驱动包一起使用

基于 Rust 的查询引擎曾负责通过内置数据库驱动(也是用 Rust 编写的)管理数据库连接。这就是为什么,与其他 ORM 不同,Prisma ORM 从未要求您安装额外的包(如 pgbetter-sqlite3)。

通过摒弃 Rust,Prisma ORM 将不再有内置驱动,现在需要依赖原生 JS 驱动才能使用。这通过驱动适配器实现,驱动适配器自 v5.4.0 起已成为 Prisma ORM 的一部分,并通过 driverAdapters 预览特性标志提供。

新 Prisma ORM 架构入门

要开始使用新的无 Rust 版 Prisma ORM,您需要将 prisma@prisma/client 的版本更新到 6.7.0,然后在 Prisma Client 生成器上设置 queryCompilerdriverAdapters 特性标志:

接下来,您需要运行以下命令重新生成 Prisma Client:

根据您使用的是 PostgreSQL 还是 SQLite,您需要安装 pgbetter-sqlite3 的驱动适配器。

安装完成后,您可以按如下方式实例化您的 PrismaClient 实例:

此时,您可以像往常一样使用您的 PrismaClient 实例——与数据库交互的使用方式没有其他变化。如果您在 monorepos、Bun 和 Deno 等较新的运行时中使用 Prisma ORM,或者将应用程序部署到无服务器和边缘环境,此更改将特别有用。

无 Rust 引擎的 Prisma ORM 性能提升

新架构不仅更灵活,提供了更友好的开发体验。在查询性能方面,它也展现出更好的数据。这并非因为 Rust 本身慢(恰恰相反),而是因为当查询和数据跨越语言边界时,一些查询会产生显著的序列化开销。新架构省去了这种开销,使查询执行更精简、更快速。

我们已经开始比较新旧架构的性能,发现几乎所有查询都显著加快,有时速度是原来的两倍甚至更快

有关详细信息,您可以查看我们最近的文章,其中详细介绍了这些测量结果。

Prisma ORM 的下一步计划?

Prisma ORM 目前正在经历重大变革。几个月前,我们发布了ORM 宣言,其中包含了我们开源治理流程变更的所有细节。从那时起,我们一直致力于通过新功能,如新的prisma-client 生成器基于 TypeScript 的配置文件(名为 prisma.config.ts),以及移除魔法行为(如将 Prisma Client 生成到 node_modules 中),使 Prisma ORM 变得更简单、更健壮、更灵活。查看我们的路线图以了解下一步计划!

试用无 Rust 的 Prisma ORM

总而言之,新的无 Rust Prisma ORM 架构:

  • 无需额外二进制文件,使 Prisma ORM 更加轻量化
  • 节省跨语言边界的序列化开销,使 Prisma ORM 速度更快
  • 部署更简单(不再需要“二进制目标”),提供更好的开发体验

试一试,并在 X 和我们的 Discord 上告诉我们您的看法!


试用无 Rust 引擎的 Prisma ORM

不要错过下一篇文章!

订阅 Prisma 新闻通讯

© . All rights reserved.