更快、更灵活、更优的开发体验:这就是我们从 Rust 转向 TypeScript 所带来的优势!但这不仅仅是从一种语言重写到另一种语言,它是 Prisma ORM 架构的根本性改进——您现在就可以立即尝试!
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 从未要求您安装额外的包(如 pg
或 better-sqlite3
)。
通过摒弃 Rust,Prisma ORM 将不再有内置驱动,现在需要依赖原生 JS 驱动才能使用。这通过驱动适配器实现,驱动适配器自 v5.4.0 起已成为 Prisma ORM 的一部分,并通过 driverAdapters
预览特性标志提供。
新 Prisma ORM 架构入门
要开始使用新的无 Rust 版 Prisma ORM,您需要将 prisma
和 @prisma/client
的版本更新到 6.7.0
,然后在 Prisma Client 生成器上设置 queryCompiler
和 driverAdapters
特性标志:
接下来,您需要运行以下命令重新生成 Prisma Client:
根据您使用的是 PostgreSQL 还是 SQLite,您需要安装 pg
或 better-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 新闻通讯