一起来做网站17,网站代理 登陆,人人网,全国城建证书查询PostgreSQL是世界上最流行的开源SQL数据库之一#xff0c;GraphQL是一种日益流行的API规范。
将经过验证和众所周知的PostgreSQL与GraphQL带来的API创建新方式集成在一起不是很好吗#xff1f;
在本文中#xff0c;我们讨论了六个不同的项目#xff0c;它们试图将SQL与Gr…PostgreSQL是世界上最流行的开源SQL数据库之一GraphQL是一种日益流行的API规范。
将经过验证和众所周知的PostgreSQL与GraphQL带来的API创建新方式集成在一起不是很好吗
在本文中我们讨论了六个不同的项目它们试图将SQL与GraphQL世界合并。其中一些甚至允许基于数据库结构自动创建模式。
以数据库为中心的方法
以数据库为中心的解决方案试图消除大多数配置和架构设置。他们将检查我们的数据库外观并为我们提供类型和端点。
由于他们知道数据库的结构他们可以为我们生成高性能的解析器因此我们不会遇到N1查询问题。
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 spin-up 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 GraphQL 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序列化 GraphQLRelay for MySQLPostgres 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和其他 |欢迎收藏【架构师酒馆】和【开发者开聊】