我真的需要用于 graphql 的 prisma ORM 吗?

Posted

技术标签:

【中文标题】我真的需要用于 graphql 的 prisma ORM 吗?【英文标题】:Do I really need prisma ORM for graphql? 【发布时间】:2019-10-11 17:29:11 【问题描述】:

我最近开始学习graphql,目前我觉得这很方便。但是,在将其与object-relationalobject-oriented 数据库管理系统连接时,基于每个 DBMS 的基础都会有一些复杂性。出于这个原因,我开始寻找可以提高流程效率的解决方案,并找到了 prisma。我知道prisma 正在执行将我的数据映射到任何数据库的所有繁重工作,但是,我认为它充当了我的服务器和数据库之间的中间层。所以,我的问题是:

在应用程序中使用 prisma 真的值得吗?如果是,我该如何解释中间层增加的开销(在性能方面)?

【问题讨论】:

嘿@MariosSimou,如果您没有其他问题,您介意接受我的回答吗? :) 【参考方案1】:

我在 Prisma 工作,很想对此作出回应。

编写 GraphQL 服务器时,Prisma 的最大好处是它可以为您节省大量 CRUD 样板文件,否则您必须在解析器中编写这些样板文件。与GraphQL Nexus 搭配使用,您可以通过生成的 CRUD 构建块以编程方式开发 GraphQL 架构,同时还为您提供类型安全的 API 来访问您的数据库。

我如何解释中间层增加的开销(在性能方面)?

当与您的应用程序服务器一起托管时,Prisma 服务器并不会真正增加任何性能损失。另请注意,我们目前正在用 Rust 重写在 Prisma 服务器中运行的查询引擎,这将使 Prisma 服务器成为可选的,您将能够将 Prisma 用作一个简单的库(类似于您使用 TypeORM 或 Sequelize )。然后,查询引擎作为二进制文件在与您的 Web 服务器相同的主机上运行,​​并从那里连接到您的数据库。

更新:2019 年 7 月 22 日:我们发布了 Prisma 2 的第一个版本。您可以找到所有信息 here。

我建议您查看GraphQL Nexus docs 以了解有关具体工作流程的更多信息。如果您还有其他问题,请告诉我,我很乐意提供帮助:)

【讨论】:

如果我是正确的,GraphQL Nexus 是 prisma 的最新版本,它试图将其集成到现有的运行服务器中,而不是分离到容器中。我对么?谢谢您的回答。我会花一些时间在 GraphQL Nexus 上,我会给出我的反馈 “GraphQL Nexus 是 prisma 的最新版本,它试图将其集成到现有的运行服务器中,而不是分离到容器中” 这不太正确。 GraphQL Nexus 是一个简单的 npm 库,用于以 code-first 的方式构建 GraphQL 模式(很像 graphql-js)。它可以在有或没有 Prisma 的情况下使用。例如,如果您在没有 Prisma 的情况下使用它,您可以使用 Sequelize 或编写普通 SQL 来与解析器中的数据库对话。 在没有所需服务器组件的情况下运行 Prisma 将是一项新功能,将在几周内启用。 @nburk 你能更新一下“重写查询引擎”的状态吗?一个 GitHub 问题的链接会很棒。谢谢 嘿@Antoni4,我们在几周前发布了 Prisma 2 的第一个预览版(包括重写的查询引擎)。您可以在这里找到所有信息:github.com/prisma/prisma2

以上是关于我真的需要用于 graphql 的 prisma ORM 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Prisma 和 GraphQL 创建自解析对象类型数组

为啥在使用 Prisma 时需要使用 GraphQL 关系?

为啥在后端环境中使用 Prisma?

GraphQL/Prisma 订阅仅针对 DELETE 触发

Prisma GraphQL-Yoga:解析器需要异步吗?

Apollo 和 Prisma Graphql 显式模型关系不可查询