我真的需要用于 graphql 的 prisma ORM 吗?
Posted
技术标签:
【中文标题】我真的需要用于 graphql 的 prisma ORM 吗?【英文标题】:Do I really need prisma ORM for graphql? 【发布时间】:2019-10-11 17:29:11 【问题描述】:我最近开始学习graphql
,目前我觉得这很方便。但是,在将其与object-relational
或object-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 关系?