返回项目目录
开源平台精选项目

Hasura

为数据库和服务自动生成安全、实时 GraphQL API 的开源数据平台。

主要语言Haskell / Rust
开源许可Apache-2.0(核心引擎)
项目类型开源平台
维护状态活跃维护
OVERVIEW

项目概述

Hasura GraphQL Engine 可连接 PostgreSQL 等数据源,自动生成 Query、Mutation 与 Subscription,并通过声明式权限、Actions、Events 和 Remote Schemas 组合业务逻辑。

Hasura 是面向数据 API 的开源 GraphQL 平台。稳定的 GraphQL Engine v2 可以连接 PostgreSQL 等数据源,根据表、视图、函数和关系自动生成 Query、Mutation 与实时 Subscription,并把角色、Session Variable、行过滤条件和列权限编译进数据库查询。团队还可以通过 Actions 加入自定义 Query / Mutation,通过 Event Trigger 和 Scheduled Trigger 驱动异步流程,通过 Remote Schema 与 Remote Join 组合其他 GraphQL 服务。Hasura 当前同时发展 v2 与 v3/DDN:v2 核心以 Haskell 实现、生态成熟且适合自托管;v3 核心改用 Rust,并以开放的 Native Data Connector 连接 PostgreSQL、MongoDB、ClickHouse、SQL Server 等数据源。本页快速开始聚焦官方仍称为稳定版本的 v2,同时单独说明 v3/DDN,避免混用两代项目格式和部署方式。

GraphQL Engine v2v2.49.5
产品代际v2 Stable / v3 DDN GA
核心许可证Apache License 2.0
FEATURES

主要特点

Hasura 把数据库结构、声明式 Metadata 和身份声明编译成统一 API,让常规数据访问、授权、实时和服务组合不必重复编写 Resolver。

01

即时 GraphQL API

追踪数据库中的表、视图和函数后即可获得类型化 Query、Mutation 与 Subscription,并自动处理关系、过滤、排序、聚合和分页。

02

声明式细粒度权限

权限按角色、表和 Select、Insert、Update、Delete 操作配置,可限制行、列、聚合、返回数量、根字段及列预设。

03

实时 Subscription

客户端可通过 WebSocket 订阅数据库查询结果,权限规则仍会应用于实时数据,适合状态、通知和协作场景。

04

Actions 与自定义逻辑

把任意 HTTP 服务声明为自定义 GraphQL Query 或 Mutation,使支付、审核和复杂事务可以保留在独立业务服务中。

05

Events 与定时任务

Event Trigger 在数据库变化时可靠投递 Webhook,Scheduled Trigger 支持一次性和 Cron 任务,适合异步集成与后台处理。

06

Remote Schema 与 Remote Join

将现有 GraphQL 服务合并进统一 Schema,并在数据库字段与远程 API 之间建立关系,减少客户端跨服务编排。

07

Metadata、迁移与 CLI

数据源、关系、权限、Actions、Events 和 Remote Schemas 可导出为 Metadata;CLI 管理 SQL Migration、Seed 和多环境发布。

08

v3 与开放 Data Connector

Hasura v3/DDN 使用 Rust 引擎和 Native Data Connector 规范组合不同数据源,并支持 TypeScript、Python 与 Go Connector SDK。

USE CASES

适用场景

适合已有关系数据库、需要 GraphQL 数据层、多租户权限、实时查询或统一多个后端服务的产品团队。

现有 PostgreSQL 的 API 层

在不重写数据库的前提下快速暴露关系、视图和函数,并逐步把现有后端迁移到统一 GraphQL 数据访问层。

多租户 SaaS

结合 JWT 中的用户、组织和角色 Session Variable,为每张表配置行列权限、字段预设及租户隔离。

实时产品

为订单状态、运营大屏、聊天、通知、物流和轻量协作提供按权限过滤的 Subscription。

GraphQL BFF 与统一数据图

用 Remote Schema、Remote Join 和 Actions 聚合数据库、微服务与第三方 API,向客户端提供一个可组合入口。

事件驱动自动化

数据库事件和定时任务可触发邮件、Webhook、搜索索引、数据同步和外部工作流,同时保留重试与调用记录。

数据产品与内部工具

借助自动 Schema、权限和聚合接口,为运营后台、数据门户、合作方 API 及分析应用提供受控数据访问。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

Hasura 擅长的地方

  • 数据库 Schema 可快速转化为 Query、Mutation 和 Subscription,显著减少 Resolver 样板代码
  • 把角色、行、列和操作权限声明为 Metadata,便于审查、复用和自动化部署
  • 关系查询可被编译为数据库查询,避免传统逐字段 Resolver 常见的 N+1 往返
  • Actions、Events、Remote Schemas 和 Remote Joins 允许在自动 API 之外保留任意业务服务
  • 开源 v2 可使用 Docker 自托管,Hasura Cloud 与 DDN 提供托管和扩展路线
  • CLI、Migration、Metadata 与 Seed 形成较完整的多环境交付工作流

需要注意

采用前应考虑的问题

Hasura 不负责用户身份认证

它消费 JWT、Webhook Auth 和 X-Hasura-* Session Variable 来授权,但注册、登录、密码重置、MFA 与账号生命周期通常由外部身份系统负责。

Admin Secret 必须严格隔离

X-Hasura-Admin-Secret 会绕过普通角色权限,绝不能进入浏览器、移动应用、前端环境变量、日志或公开仓库。

自动 API 会放大权限错误

错误追踪表、开放匿名角色、过宽的关系权限或聚合权限都可能暴露大量数据;必须为每个角色和操作编写负向授权测试。

数据库设计仍决定性能

索引、关系基数、查询深度、排序、聚合、锁和连接池不会被 GraphQL 自动解决,应限制高成本查询并使用 Explain 与真实负载验证。

Metadata 与 Schema 必须保持一致

SQL Migration 和 Hasura Metadata 的应用顺序不当会产生不一致状态;生产流程需要检查 Metadata Consistency 并支持回滚。

复杂业务不应强塞入直接 CRUD

支付、库存、审批和跨系统事务通常需要 Actions、数据库函数或独立服务来保持明确的领域边界与幂等性。

v2 与 v3/DDN 是不同架构

两者的项目配置、连接器、部署与部分能力不同,不能仅按大版本号直接替换;迁移前应逐项核对功能和运营模式。

Cloud、Enterprise 与 OSS 能力有差异

缓存、连接器、可观测性、安全、HA 和运维功能可能因版本或套餐不同;选型时应以目标发行版文档和许可证为准。

QUICK START

快速开始

使用官方 Docker Compose 启动 GraphQL Engine 与 PostgreSQL,创建数据表并执行查询,再把迁移和 Metadata 纳入版本控制。

1启动 GraphQL Engine 与 PostgreSQL
bash
mkdir hasura-demo && cd hasura-demo

curl https://raw.githubusercontent.com/hasura/graphql-engine/stable/install-manifests/docker-compose/docker-compose.yaml   -o docker-compose.yml

docker compose up -d

# 打开 http://localhost:8080/console
2创建示例数据表
sql
create table public.todos (
  id bigint generated by default as identity primary key,
  user_id text not null,
  title text not null,
  completed boolean not null default false,
  created_at timestamptz not null default now()
);

create index todos_user_id_created_at_idx
  on public.todos (user_id, created_at desc);
3查询当前用户的待办事项
graphql
query GetTodos($completed: Boolean!) {
  todos(
    where: { completed: { _eq: $completed } }
    order_by: { created_at: desc }
    limit: 20
  ) {
    id
    title
    completed
    created_at
  }
}
4通过 HTTP 调用 GraphQL API
bash
curl http://localhost:8080/v1/graphql   -H "Content-Type: application/json"   -H "X-Hasura-Admin-Secret: <ADMIN_SECRET>"   --data '{
    "query": "query { todos(limit: 5) { id title completed } }"
  }'
5为 user 角色声明行列权限
yaml
# metadata/databases/default/tables/public_todos.yaml
table:
  name: todos
  schema: public
select_permissions:
  - role: user
    permission:
      columns:
        - id
        - title
        - completed
        - created_at
      filter:
        user_id:
          _eq: X-Hasura-User-Id
      limit: 100
insert_permissions:
  - role: user
    permission:
      columns:
        - title
        - completed
      check: {}
      set:
        user_id: X-Hasura-User-Id
6初始化 CLI 项目并导出配置
bash
hasura init hasura-project   --endpoint http://localhost:8080

cd hasura-project
hasura metadata export
hasura migrate create baseline --from-server
hasura metadata inconsistency status
7在目标环境应用迁移和 Metadata
bash
hasura metadata apply-data-sources
hasura migrate apply --all-databases
hasura metadata apply
hasura metadata reload
hasura metadata inconsistency status

下一步:示例使用稳定的 GraphQL Engine v2。浏览器请求必须通过可信身份系统签发的 JWT 或 Webhook Auth 获得 X-Hasura-* Session Variable;X-Hasura-Admin-Secret 会绕过普通权限,只能用于受控的管理和部署流程。

ALTERNATIVES

类似项目

这些项目也能缩短数据 API 与应用后端的搭建时间,但覆盖范围、认证归属、API 形态和运维边界不同。

COMPARISON

Hasura vs Nhost

Hasura GraphQL Engine 是专注数据访问、授权、实时和服务组合的 API 层;Nhost 则在 Hasura 与 PostgreSQL 之上继续提供认证、文件存储、函数、邮件和完整本地开发体验。两者不是简单替代关系,Nhost 的 GraphQL 数据层本身就建立在 Hasura 生态之上。

比较维度HasuraNhost
产品范围数据 API、权限、实时、事件与 GraphQL 组合数据库、Hasura、认证、存储、函数和平台工作流
数据库连接已有或独立管理的数据源项目内提供并管理 PostgreSQL 实例
身份认证消费外部 JWT 或 Auth Webhook,不管理用户登录内置 Nhost Auth、会话、登录方式与用户角色
文件能力不提供通用应用文件存储内置与 JWT 权限集成的 Storage 服务
自定义逻辑Actions、Events、Remote Schemas 和数据库函数上述能力外再提供 Serverless Functions 与 Nhost Run
本地开发Docker、Hasura CLI、Migration、Metadata 和 SeedNhost CLI 一次启动 Postgres、GraphQL、Auth、Storage 等
基础设施自由度可自行选择数据库、身份、存储和服务架构集成度更高,组件组合和平台约定更统一
更适合已有数据和身份系统、只需强大的 GraphQL 数据层从零构建产品并希望获得完整开源 BaaS
如何选择

如果已有 PostgreSQL、身份系统和对象存储,只需要为数据建立高性能 GraphQL、细粒度权限和事件集成,直接使用 Hasura 更轻;如果希望一开始就获得账号、文件、邮件、函数和统一的本地技术栈,Nhost 能减少集成工作。采用 Nhost 后仍应掌握 Hasura Metadata 与权限模型,因为它们依然是数据安全和 API 演进的核心。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 29 日
核验版本GraphQL Engine v2.49.5 / v3 DDN GA
内容维护Docs100 编辑整理
项目维护状态活跃维护

本页依据 Hasura 官方 v2 Docs、DDN/v3 说明、权限文档与官方源码仓库整理。稳定版版本号、发布日期、许可证和两代引擎状态通过官方 GitHub Releases 与仓库说明核验。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 7 月 21 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 21 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库