将 GraphQL API 添加到 Postgres 数据库的六种简单方法,比较 Hasura、Prisma 等
Seth Dennon 在 Flickr 上的封面图片。
PostgreSQL是世界上最流行的开源 SQL 数据库之一,GraphQL是一种新兴的 API 规范,每天都在流行。
将久经考验且广为人知的 PostgreSQL 与 GraphQL 带来的 API 创建新方式相集成不是很好吗?
在本文中,我们讨论了六个尝试将 SQL 与 GraphQL 世界合并的不同项目。其中一些甚至允许基于数据库结构自动创建模式。
以数据库为中心的方法
以数据库为中心的解决方案试图消除大多数配置和模式设置。他们将检查我们的数据库的外观并为我们提供类型和端点。
由于他们知道数据库的结构,他们可以为我们生成高性能的解析器,因此我们不会在 N+1 查询问题中运行。
1\。邂逅
Postgres 上的即时实时 GraphQL
Hasura 可能是目前场上最令人兴奋的球员。这是类固醇上的 PHPMyAdmin。
它在 Docker 容器中运行,作为数据库前面的服务器,并为我们提供数据库和 API 的管理 UI,有点像 PHPMyAdmin 所做的那样。
它具有自己的身份验证和授权功能,甚至可以与其他身份验证提供程序集成。
在没有托管服务的情况下,它就像 BaaS 一样,因此,如果您不喜欢AWS AppSync之类的东西,但您喜欢_some_它的便利性,请选择 Hasura。
它是 Apache 2.0 许可下的开源软件,大部分是用 Haskell 编写的。
此外,创作者还提供付费支持计划。
2\。Postgraphile
通过将 PostGraphile 指向您现有的 PostgreSQL 数据库,立即启动 GraphQL API 服务器
Postgraphile 就像 Hasura 一样,它允许从 PostgreSQL 模式生成 GraphQL API 并在我们的数据库前作为服务器运行。它只是在如何实现这一目标方面走向不同的方向。
它不使用 Docker 容器,并尝试尽可能多地重用 Postgres 功能。例如用户管理、通过 RLS 授权和自动更新视图。
因此,它非常适合在设置和配置此类数据库方面拥有多年经验的 Postgres 专业人员。他们可以使用他们所有的技能,让 Postgraphile 为他们做 API 工作。
Postgraphiles 还主要关注 CLI 来完成所有交互,这可能是 DB 管理员更喜欢的。
它是一个在_MIT license_下发布的开源产品,主要用TypeSCript编写。
创作者还提供具有额外功能和付费支持的付费专业版。
3\。棱镜&GraphQL Nexus
[2019-05-02更新]
Prisma 取代了传统的 ORM
[Nexus is a] JavaScript/TypeScript 的声明式、代码优先的 GraphQL 模式
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 分析平台,被 2000 多家组织用来衡量您的查询执行情况并了解您最忠实的客户使用您的 API 所做的事情。
以模式为中心的方法
接下来的三个解决方案在他们的方法上更经典一些,它们需要手动创建模式并且没有很多额外的东西,但它们试图帮助解决常见的陷阱。
它们还需要使用 Node.js,因为它们是常规的 Node.js 库。
4\。Node.js API 入门工具包
使用 Node.js 和 GraphQL 创作数据 API 后端的样板和工具
Node.js API Starter Kit 可能是启动和运行 GraphQL API 的最基本方法。
这是一个样板项目,包含连接到 Postgres DB、运行 HTTP 服务器和创建 GraphQL 模式和解析器所需的所有 Node.js 库。
对于需要完全控制其 API 服务器的每个部分的新建项目来说,这是一个良好的开端。
没有付费支持,只有免费的社区支持。
它是具有 MIT 许可证 并用 JavaScript 编写的开源代码。
5.graphql-sequelize
通过 Sequelize 用于 MySQL 和 Postgres 的 GraphQL 和 Relay
这是一个从 Sequelize 模型生成 GraphQL 解析器函数的库。我们仍然必须创建我们的模式,但不必再担心解析器。
对于已经对 Sequelize 有广泛了解并且不想丢弃它的人来说,这是正确的解决方案。
它是一个用 JavaScript 编写的开源库,在 _MIT 许可下发布。
6\。加入怪物
这是一个接受 GraphQL 查询并将 GraphQL 动态转换为 SQL 的函数,以便在解析之前进行高效的批量数据检索。
Join Monster 通过提供一种使用 Postgres 的完整 SQL 功能的方法来帮助 GraphQL 模式建模。它允许告诉每个 GraphQL 类型它属于哪个表,因此它可以从每个 GraphQL 查询中生成最佳 SQL 查询。
对于想要自己构建大部分 API 服务器但又不想直接使用 SQL 的人来说,这是一个很好的解决方案。
Join Monster 是开源的,在 _MIT 许可下发布。它是用 JavaScript 编写的。
结论
有许多不同的解决方案可以通过 GraphQL API 访问 Postgres 数据库。各有优劣。
如果我们不能全神贯注于云解决方案,这里列出的系统允许我们在 API 中选择我们想要多少“手握”以及我们想要自己做多少。
借助 Hasura 和 Postgraphile,我们终于有了与语言无关的方法来完成工作,这将使许多非 Node.js 开发人员感到高兴。
Moesif 是最先进的 GraphQL 分析平台。超过 2000 个组织使用 Moesif 来跟踪他们最忠实的客户如何使用他们的 API。 了解更多
原文发表于www.moesif.com
更多推荐
所有评论(0)