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 新聞通訊

© . This site is unofficial and not affiliated with Prisma Data, Inc.