Hasura GraphQL Engine:给数据库加上即时 GraphQL 接口
Hasura GraphQL Engine:给数据库加上即时 GraphQL 接口
hasura/graphql-engine 在 GitHub 上拿到了 31,968 Star。
Hasura 这个开源引擎做的事情很明确:把你的数据库直接变成一套可用的 GraphQL API,不用手写一行 resolver。PostgreSQL、MongoDB、ClickHouse、SQL Server 都支持。
1、 它是怎么工作的
Hasura 连接到数据库后,自动读取表结构、字段类型、主外键关系,然后生成对应的 GraphQL schema。整个过程不需要中间层,也不需要你写任何映射代码。

查询、变更、订阅三种 GraphQL 操作全部就绪。联表查询通过嵌套对象语法写,Hasura 底层会生成带 JOIN 的 SQL,避免 N+1 问题。聚合计算、排序、分页、全文搜索也都有对应的查询参数。Hasura 会在运行时把 GraphQL 查询编译成一条优化过的 SQL 语句发给数据库,减少不必要的往返。
实时订阅是另一个关键特性。客户端建立 WebSocket 连接后,指定查询条件和需要监听的数据表,数据库里对应行发生变化时,服务端主动推送变更结果,不需要客户端轮询。
2、 权限和安全
直接暴露数据库接口听起来有风险,Hasura 的权限层就是为这个设计的。你可以按角色定义行级和列级的访问规则:哪些数据可见、哪些字段可查、什么条件下能更新,这些都在控制台里配置。行级权限支持用动态 session 变量,比如只允许用户查看自己创建的数据,条件里写 user_id = X-Hasura-User-Id 就行。
认证支持 JWT 和 Webhook 两种方式,对应无状态和外部授权服务两种场景。
对照传统后端:每个数据模型写一套 CRUD 接口,每个接口加权限判断,每个变更做数据校验,这些在 Hasura 里变成了声明式的规则配置。
3、 V3 与 V2
当前仓库同时包含 V2 和 V3 两个版本。
V2 是稳定版,专注 PostgreSQL 及其衍生产品,已经被大量项目在线上长期运行。文档和社区反馈都很充分,适合对稳定性要求高的场景。
V3 是近期 GA 的新架构,核心变化是引入了 Data Connector 概念。不再只绑定 PostgreSQL,而是通过连接器接入不同数据源。MongoDB、ClickHouse、SQL Server 都在支持列表中。如果内置连接器不满足需求,可以用 TypeScript、Python 或 Go 的 Connector SDK 自己写一个,扩展的是数据源适配层,不影响上层的 GraphQL schema 生成逻辑。

4、 几个实际场景
第一个场景:团队有一个现成的 PostgreSQL 数据库,想给前端项目快速提供数据接口。装上 Hasura,配置好表和权限,GraphQL endpoint 直接可用。前端不需要等后端排期写接口,拿到 schema 就能并行推进。
第二个场景:微服务架构里有多个数据源,需要统一的查询入口。V3 的连接器架构可以把 PostgreSQL、MongoDB、ClickHouse 汇总到一个 GraphQL endpoint 下,客户端只看到一个 schema,不用关心数据实际从哪个库来。
第三个场景:内部工具或管理后台快速搭建。这类项目对 API 形态没有定制要求,但对交付速度敏感。Hasura 能在几分钟内把一个裸数据库变成带权限的 API 服务,然后前端直接进入功能开发。
5、 适用人群
- 用 PostgreSQL 或 MongoDB 做主力数据库、想减少后端 CRUD 样板代码的团队
- 前端开发者需要灵活的查询能力,又不希望受限于固定结构的 REST endpoint
- 在评估 BaaS 方案、想找一个开源可私有部署选项的架构师
- 已经有 GraphQL 网关或 Federation 架构、希望在数据层统一接入的团队
Hasura 核心代码和所有数据连接器都在 Apache 2.0 协议下开源。
统一接入的团队
Hasura 核心代码和所有数据连接器都在 Apache 2.0 协议下开源。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)