【问题标题】:Can I use GraphQL for mongoDB or mySQL?我可以将 GraphQL 用于 mongoDB 或 mySQL 吗?
【发布时间】:2019-02-26 22:50:51
【问题描述】:
我开始学习 GraphQL,发现 GraphQL 是一种很棒的查询语言。
但是我想知道我是否可以将 GraphQL 用于现有数据库,例如 mongoDB 或 mySQL。
也请解释一下棱镜。
prisma 是云数据库还是什么?
【问题讨论】:
-
GraphQL 是一个 API 层,不依赖于任何特定的数据库后端。 SO 问题似乎喜欢将它用作 MongoDB 的外观,但它不适合,因为 GraphQL 是非常类型化的,而 MongoDB 记录是非常无类型的。 graphql.org 和 prisma.io 都将提供有用的背景信息(请注意在 graphql.org 上完全没有提及数据库)。
标签:
graphql
prisma-graphql
【解决方案1】:
正如在上一篇文章中提到的 - 是的,你可以。
举个例子,如果您在 .NET 堆栈上编写后端应用程序 - 您可能会使用(猜想两个)经过真正测试的主要库,并且人们在实际项目中使用它(谷歌 GraphQL.Net 和第二个库应该拼写几乎相同)
但是,这两个库都只给您处理 graphql 查询和描述方案(“accounts {id name}”意味着您应该定义从 db 或其他数据源返回数据的解析器)
大多数人使用 EF(EntityFramework)作为 GraphQL 和 db 之间的数据适配器。但是,从我的角度来看,它是没有用的,特别是如果我们正在谈论从 db 获取数据并且这可能是数千个请求。
我们实现了基于轻量级数据库库的组件(适用于几乎所有流行的数据库,如 MSSQL、Postgresql、MySQL 或 Elasticsearch),能够非常轻松地配置 GraphQL 方案并提供排序、分页和复杂过滤等主要功能。
【解决方案2】:
是的,您可以将其与现有数据库一起使用。
Prisma 是使用 GraphQL 服务器构建的 ORM 层,它抽象出数据库并让您使用 GraphQL 查询与数据库进行交互。它目前支持 MySQL、MongoDB、AWS RDS 和 PostgreSQL。它不是数据库,但您可以将其托管在云端。
通常,您需要另一个 GraphQL 服务器,其中的解析器将调用 Prisma 的 GraphQL 服务器。此 GraphQL 服务器是客户端调用的服务器。