PostgreSQL是世界上最流行的开源SQL数据库之一,GraphQL是一种日益流行的API规范

将经过验证和众所周知的PostgreSQL与GraphQL带来的API创建方式集成在一起不是很好吗?

本文中,我们讨论了六个不同的项目,它们试图将SQL与GraphQL世界合并。其中一些甚至允许基于数据库结构自动创建模式

数据库中心的方法

数据库中心解决方案试图消除大多数配置架构设置。他们将检查我们数据库外观,并为我们提供类型和端点。

由于他们知道数据库结构,他们可以为我们生成高性能解析器,因此我们不会遇到N+1查询问题

1. Hasura

Instant Real-time GraphQL on Postgres

Hasura可能是目前球场上最令人兴奋的球员。这是服用类固醇的PHPMyAdmin

它在Docker容器中运行,作为数据库前面服务器,并为我们提供一个DB和API的管理UI,就像PHPMyAdmin一样。

具有自己身份验证授权功能,甚至可以与其他身份验证提供商集成

没有托管服务的情况下,它就像BaaS一样,所以如果像AWS AppSync这样的东西不是你喜欢的,但你喜欢一些它的便利性,那就去Hasura吧。

它是Apache 2.0许可下的开源软件,大部分是用Haskell编写的。

此外,创作者还提供付费支持计划

2. Postgraphile

Instantly spinup a GraphQL API server by pointing PostGraphile at your existing PostgreSQL database

Postgraphile与Hasura类似,它允许从PostgreSQL模式生成GraphQL API,并在我们的DB前作为服务器运行。它只是朝着一个不同的方向实现这个目标

它不使用Docker容器,并尝试尽可能多地重用Postgres功能。例如用户管理通过RLS的授权和可自动更新视图

因此,它非常适合那些在设置和配置这样一个数据库方面有多年经验的Postgres专业人士。他们可以使用他们所有的技能,让Postgraphile为他们做API工作

Postgraphiles还主要关注CLI来完成所有交互,这可能是DB管理员更喜欢的。

这是一个在MIT许可下发布开源产品,主要使用TypeSCript编写

作者还提供付费专业版,提供额外功能付费支持

3. Prisma &ampGraphQL Nexus

[Updated 2021-05-02]

Prisma replaces traditional ORMs

[Nexus is a] Declarative, Code-First GraphQL Schemas for JavaScript/TypeScript

Prisma是一套开源数据库工具用于数据访问(类似于传统的ORM)、迁移数据管理

开发人员可以使用SDL的一个子集定义数据模型,Prisma将其映射到他们的数据库,从而简化数据库迁移过程

Prisma然后生成一个类型安全数据库客户端,可以在API服务器中使用。当与GraphQL-Nexus(一个代码优先的GraphQL模式构建库)和Nexus-prisma集成配对时,开发人员可以利用数据库模型的自动生成CRUD操作。这样就可以在几行代码中生成完整的GraphQL CRUD API!

然后,可以根据应用程序的使用情况自定义扩展生成的API。

它是在Apache 2.0下授权开源软件,使用Scala编写

Prisma还提供付费企业版。

Moesif是什么?Moesif是最先进的REST和GraphQL分析平台,成千上万的平台使用它来衡量您的查询执行情况,并了解您最忠实的客户对您的API做了什么。

模式中心的方法

接下来的三个解决方案在方法上更为经典,它们需要手动创建模式,并且没有太多额外功能,但它们试图帮助解决常见的陷阱。

它们还需要使用Node.js,因为它们是常规的Node.js库。

4.Node.js API入门套件

使用Node.js和GraphQL编写数据API后端的Boilerplate和工具

Node.js API入门套件可能是启动运行GraphQL API的最基本方法。

这是一个样板项目,附带了连接到Postgres数据库所需的所有Node.js库,运行HTTP服务器创建GraphQL模式和解析器

对于需要对API服务器每个部分进行完全控制的绿地项目来说,这是一个良好的开端。

没有付费支持,只有免费社区支持。

它是开源的,拥有麻省理工学院的许可证,并使用JavaScript编写

5.graphql序列化

GraphQL&Relay for MySQL&Postgres via Sequelize

这是一个从Sequelize模型生成GraphQL解析器函数的库。我们仍然需要创建我们的模式,但不必再担心解析器了。

这是一个正确解决方案,适合那些已经对Sequelize有了大量知识并且不想扔掉它的人。

这是一个用JavaScript编写开源库,在MIT许可下发布

6.JoinMonster

它是一个接受GraphQL查询并将GraphQL动态转换为SQL的函数以便解析之前进行高效的批量数据检索

JoinMonster通过提供一种使用Postgres的全部SQL功能的方法来帮助GraphQL模式建模。它允许告诉每个GraphQL类型属于哪个表,这样它就可以从每个GraphSQL查询中生成最好的SQL查询。

对于那些想自己构建大部分API服务器但又不想直接干扰SQL的人来说,这是一个很好的解决方案

加入怪物是开源的,在麻省理工学院的许可下发布。它是用JavaScript编写的。

结论

有许多不同的解决方案可以通过GraphQL API访问Postgres数据库。每个人都有自己的优点和缺点。

如果我们不能完全采用云解决方案这里列出的系统允许我们选择我们希望在API中进行多少“握手”,以及我们希望自己进行多少操作

有了Hasura和Postgraphile,我们终于有了与语言无关的方法来完成任务,这将让许多非Node.js开发人员感到高兴。

文章链接

【GraphQL 】将GraphQL API添加到Postgres数据库的六种简单方法,比较Hasura、Prisma和其他 |欢迎收藏【架构师酒馆】和【开发者开聊

原文地址:https://blog.csdn.net/jiagoushipro/article/details/134720971

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_16237.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注