跳到主要內容

您應該使用 Prisma ORM 嗎?

Prisma ORM 是一種新型 ORM,與其他任何工具一樣,它也伴隨著其自身的權衡。本頁將解釋何時 Prisma ORM 是一個很好的選擇,併為其他情況提供替代方案。

如果以下情況,Prisma ORM 很可能適合您...

... 您正在構建與資料庫互動的伺服器端應用程式

這是 Prisma ORM 的主要用例。伺服器端應用程式通常是 API 伺服器,透過 REST、GraphQL 或 gRPC 等技術公開資料操作。它們通常被構建為微服務或單體應用程式,並透過長時間執行的伺服器或無伺服器函式進行部署。Prisma ORM 非常適合所有這些應用程式和部署模型。

請參閱 Prisma ORM 支援的資料庫(關係型、NoSQL 和 NewSQL)完整列表。

... 您關心生產力和開發者體驗

生產力和開發者體驗是我們構建工具的核心。我們致力於為那些手動執行時複雜、易出錯且耗時的任務構建對開發者友好的抽象層。

無論您是 SQL 新手還是老手,Prisma ORM 都將為最常見的資料庫工作流程帶來顯著的生產力提升。

以下是我們設計和構建工具時採用的一些指導原則和通用實踐

... 您在一個團隊中工作

Prisma ORM 在協作環境中尤其出色。

宣告式 Prisma schema 提供了一個易於所有人理解的資料庫當前狀態概覽。這相對於傳統工作流程是一個重大改進,在傳統工作流程中,開發者必須深入研究遷移檔案才能理解當前的表結構。

Prisma Client 極簡的 API 表面使開發者能夠快速上手,無需太多學習成本,因此新開發者加入團隊變得更加順暢。

Prisma Migrate 工作流的設計旨在涵蓋協作環境中的資料庫模式更改。從最初的模式建立到將模式更改部署到生產環境以及解決由並行修改引入的衝突,Prisma Migrate 都能滿足您的需求。

... 您想要一個能全面覆蓋資料庫工作流程的工具

Prisma ORM 不僅僅是“又一個 ORM”。我們正在構建一個數據庫工具包,涵蓋與資料庫互動的應用程式開發者的日常工作流程。例如:

... 您重視型別安全

Prisma ORM 是 TypeScript 生態系統中唯一完全型別安全的 ORM。生成的 Prisma Client 即使對於部分查詢和關係也能確保型別化的查詢結果。您可以在與 TypeORM 的型別安全比較中瞭解更多資訊。

... 您想編寫原始、型別安全的 SQL

除了直觀、高階的查詢 API 外,Prisma ORM 還提供了一種方法,讓您編寫完全型別安全的原始 SQL

... 您想要一個開發過程透明、維護良好且支援完善的 ORM

Prisma ORM 開源工具的開發是公開進行的。大部分開發直接在 GitHub 的主 prisma/prisma 倉庫中進行

  • 我們倉庫中的 issues 和 PR 會被分類並優先處理(通常在 1-2 天內)
  • 每三週會發布包含新功能和改進的新版本
  • 我們有一個專門的支援團隊,會在 GitHub Discussions 中回覆問題

... 您想成為一個出色社群的一員

Prisma 擁有一個活躍的社群,您可以在 Discord 上找到。我們還定期舉辦 Meetup、會議和其他以開發者為中心的活動。加入我們吧!

如果以下情況,Prisma ORM 很可能適合您...

... 您需要對所有資料庫查詢有完全控制

Prisma ORM 是一種抽象層。因此,Prisma ORM 的一個固有權衡是,以犧牲部分控制為代價換取更高的生產力。這意味著,在某些情況下,Prisma Client API 的功能可能不如純 SQL。

如果您的應用程式對資料庫查詢有 Prisma ORM 無法滿足的要求,且變通方案成本過高,那麼使用允許您透過純 SQL 完全控制資料庫操作的工具可能更適合您。

注意:如果您可以解決某個限制但仍希望 Prisma ORM 改進處理方式,我們鼓勵您在 GitHub 上提交一個功能請求,以便我們的產品和工程團隊進行研究。

替代方案:SQL 驅動(例如 node-postgresmysqlsqlite3 等)

... 您不想為後端編寫任何程式碼

如果您不想為後端編寫任何程式碼,而只是想開箱即用地生成 API 伺服器和資料庫,那麼您可能更傾向於為您的專案選擇後端即服務 (BaaS)。

使用 BaaS,您通常可以透過高階 API(例如 GraphQL SDL)或視覺化編輯器配置您的資料模型。基於此資料模型,BaaS 會為您生成 CRUD API 並提供資料庫。在這種設定下,您通常無法控制 API 伺服器和資料庫執行的基礎設施。

使用 Prisma ORM,您將使用 Node.js 或 TypeScript 自行構建後端。這意味著與使用 BaaS 相比,您需要進行更多的編碼工作。這種方法的好處是,您可以完全靈活地構建、部署、擴充套件和維護您的後端,並且不依賴第三方軟體來完成技術棧的關鍵部分。

替代方案AWS AppSync8baseNhostSupabaseFirebaseAmplication

... 您想無需編寫任何程式碼即可獲得 CRUD GraphQL API

雖然像 nexus-plugin-prismatypegraphql-prisma 等工具允許您在 GraphQL API 中快速為 Prisma ORM 模型生成 CRUD 操作,但這些方法仍需要您手動設定 GraphQL 伺服器,並做一些工作來公開 Prisma schema 中定義的模型的 GraphQL 查詢和變異。

如果您想開箱即用地為資料庫獲取 GraphQL 端點,其他工具可能更適合您的用例。

替代方案HasuraPostgraphile

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