跳至主要内容

您应该使用 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 仓库中进行。

  • 我们仓库中的问题和 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 等工具允许您快速生成 Prisma ORM 模型在 GraphQL API 中的 CRUD 操作,但这些方法仍然需要您手动设置 GraphQL 服务器,并进行一些工作以公开 Prisma schema 中定义的模型的 GraphQL 查询和变异。

如果您想开箱即用地为数据库获取一个 GraphQL 端点,其他工具可能更适合您的用例。

替代方案HasuraPostgraphile

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