timzaak / blog

8 stars 1 forks source link

Hasura 探索 #113

Closed timzaak closed 4 months ago

timzaak commented 4 months ago

简介

Hasura 是基于 GraphQL 协议 Data Delivery Network。

主要功能

  1. 提供 Data Connect SDK,通过对接其SDK,为 Hasura API Server 提供统一的数据源访问方式,其SDK实现的协议目前发展到 Hasura V3,主要是以GraphQL为蓝本。
  2. 依据数据库表,基于 GraphQL + 特定格式名称,可快速定义并实现增删改查。
  3. 提供 Action 拓展,可将 GraphQL 请求配置转译成 restful 请求,进而去请求第三方服务。
  4. 提供 GraphQL API 转译 Restful API,可基于 GraphQL API 快速生成 restful API。
  5. 较为完善的鉴权和授权,可对接第三方,数据库字段的可见性也可设置。
  6. 提供完善的CI/CD、表迁移方案。

遗憾(笔者自认为)

  1. 用户注册、登录需接入第三方或自行实现。
  2. 复杂逻辑,还是需要以 Action 拓展的方式交由第三方服务去解决。
  3. Haskell会让用户比较难以维护。

    优势

  4. 可以通过 Web 平台,快速整合多方数据源到一个大 GraphQL 上来。
  5. 开发只需要写 GraphQL 函数即可。

类似产品

国内的 APIJSON 是基于Java 做的快速API开发框架,相比于 Haskell 的 Hasura 会更容易接受。两者都在解决如何快速将数据库数据转化成API接口,不过 APIJSON 是框架级别,协议主要基于 JSON 、SQL 概念,问题域是运营后台快速开发接口, Hasura 是平台级别,问题域是整个 Web API 开发链路。

Prisma ORM 是在 GraphQL 的基础上,额外添加针对数据库表的 Annotation,从而实现用 GraphQL 语法管理数据库表,以及生成 ORM 相关函数。目标是抽象数据库DDL 到 GraphQL 语法上,并提供简易的ORM函数,屏蔽SQL语句的复杂性,搭配GraphQL web server 框架开发时,可减轻心智负担。但核心问题是 SQL 已经足够简洁,Prisma ORM更像是重新定义了问题,再解决该问题,收益并没有倍增。

国内类似产品可行性

Hasura Cloud 模式在国内的政策环境下不可行,需要解决域名备案、数据隐私证明等政策问题。国内企业对于第三方服务的数据隐私格外不信任。 Java/Go 版本的 Hasura 私有化部署方案可能会更有市场一些 。

小结

本想做个 Scala 版本的 GraphQL 快速后台开发工具箱,但奈何对其产品形态想不明白,故研究了下 Hasura 以及类似产品。简单理解 Hasura 就是个GraphQL低代码平台,通过 GraphQL 语言 对整个后台逻辑进行配置。 对于我这种只是想做框架级别东西的,并不算一个比较合适的参考物。 思来想去,针对这种需求,还是做代码模版生成会比较合适:

  1. 技术门槛要求低。
  2. 可定制性高。
  3. 可维护性高。
timzaak commented 3 months ago

teocloud 类似于 Hasura。 参考其创建人的blog,可了解到: 当前 web 开发的趋势:

  1. 书写内容: Schema
  2. 编程方式: Schema + AI

我对于此的看法是: 屏蔽的代码底层,使开发人员更加专注 table 表的梳理。对于那些学艺不精的研发人员来讲,是好事。

至于灵活性、开发高效性,只是个权衡问题。