Query Compiler 專案透過將傳統的 Rust 引擎替換為基於 WASM 模組和 TypeScript 構建的更精簡的解決方案,升級了 Prisma ORM。這一改變提升了查詢效能,將打包體積減小了 85-90%,同時還改善了與各種 Web 框架和打包工具的相容性。隨著 Prisma ORM 邁向版本 7,開發者可以期待更流暢、更高效的體驗。
突破效能瓶頸
快速回顧一下,Query Compiler 專案旨在用精簡的 WASM 模組和輔助 TypeScript 程式碼來取代用 Rust 編寫的 Prisma 查詢引擎。透過此舉,我們期望實現更快的查詢速度和更小的佔用空間,現在我們已經運行了基準測試來證明這一點。
自上次更新以來,我們的團隊一直全身心投入到這個專案中。隨著 Prisma ORM 6.4 的釋出,我們達到了一個重要的里程碑:Query Compiler 的工作原型。這個 alpha 版本包含了運行針對現有 Prisma Client 實現的全面基準測試所需的 API。您可以在我們的ORM 基準測試倉庫中檢視程式碼和完整的基準測試結果。
Prisma Client 的新架構
帶有 Query Compiler 的 Prisma Client 架構建立在我們當前 Driver Adapters 的架構之上。在當前的 Driver Adapters 實現中,Prisma Client 查詢從 TypeScript 傳送,經過查詢引擎、驅動介面卡和資料庫驅動,最終到達您的資料庫。

有了 Query Compiler,Prisma Client 查詢會首先被翻譯成內部查詢計劃,然後傳回客戶端,透過相同的驅動介面卡和資料庫驅動設定傳送到您的資料庫。如果您今天正在使用 driverAdapters 預覽功能,新的實現方式將非常相似。

這一轉變不僅僅是現代化;它是為了讓 Prisma ORM 更快、更簡單。我們相信新架構將顯著減少“意外”,讓開發者無需擔心相容性問題,即可將 Prisma ORM 整合到他們的技術棧中。
新架構的主要優勢
更快的效能
這個專案背後的主要驅動力是,雖然 Rust 速度很快,但 Rust 和 TypeScript 之間資料序列化的成本非常高。這個成本抵消了我們將查詢引擎放在 Rust 中的任何好處,我們已經看到新架構帶來了顯著的改進。
不再需要額外二進位制檔案
透過消除對 Rust 二進位制檔案的依賴,我們解決了在開發流程中管理額外檔案所導致的一整類問題。從嚴格網路無法安裝二進位制檔案的簡單問題,到確保生產和開發環境擁有正確檔案的複雜問題,所有這些問題在 Query Compiler 專案中都不復存在。
此外,移除二進位制檔案意味著只要您的環境可以執行 JavaScript,就能執行 Prisma ORM。我們預計 AWS Lambda 或 Cloudflare Workers 等環境中的主要痛點將得到解決。您的 Prisma Client 現在將自然地融入您的應用程式技術棧。
顯著減小的打包體積
我們的初步測試表明,基於 Rust 的 Prisma 查詢引擎大約為 14 MB(gzip 壓縮後為 7 MB),而新的 Query Compiler 僅為 1.6 MB(gzip 壓縮後為 600 KB),平均尺寸減少了 85-90%。更少的磁碟空間意味著您的部署更快,並且您的應用程式可以更容易地部署到更多平臺。
基準測試結果
這些數字不言自明。與現有的 Rust 查詢引擎相比,新的 Query Compiler (QC) 架構帶來的效能提升會隨著檢索資料量的增加而逐漸變得更好。它恰恰在最關鍵的時候更快。
根據我們的測試,我們發現對於大量資料,Query Compiler 始終比基於 Rust 的引擎更快,在某些情況下甚至快三到四倍。當只返回少量資料時,兩種實現的效果基本相同。Query Compiler 為現有 Prisma ORM 使用者帶來了巨大好處,並且沒有負面影響。
然而,這些只是最初的基準測試示例。我們計劃擴充套件這些基準測試,並在受限環境中(如 AWS Lambda 或 Cloudflare Workers)執行它們,以便我們對資料充滿信心。此外,我們將繼續改進我們的實現,以提高效率和帶來更多好處。
擁抱未來:Prisma ORM 7 及更高版本
我們對這對 Prisma ORM 使用者意味著什麼感到非常興奮。突破性的效能和減小的打包體積不僅使您的應用程式更快、更高效,而且還使我們能夠更快地創新。在接下來的幾個月裡,我們將從一個預覽版本開始,邀請您試用這些改進。此後不久,Prisma ORM 7 將全面採用 Query Compiler,標誌著 Prisma 與資料庫通訊方式邁向新紀元。
一如既往,我們關注社群,並期待聽到您的想法!
- 關注最新動態,並在 GitHub 上加入討論
- 在我們的開發者 AMA 中,在 Discord 上向我們提出緊急問題
- 甚至可以 自己執行基準測試!
不要錯過下一篇文章!
訂閱 Prisma 新聞郵件