跳到主要內容

您應該使用 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 儲存庫中進行

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

... 您想成為一個很棒社群的一份子

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

如果您有以下情況,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 查詢和 mutation。

如果您想要為您的資料庫取得開箱即用的 GraphQL 端點,其他工具可能更適合您的使用情境。

替代方案HasuraPostgraphile