跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

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 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序列化

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开发人员感到高兴。

文章链接