API可组合性详解:Hasura超图架构提升开发效率与自助式数据集成

作者:API传播员 · 2025-10-24 · 阅读时间:6分钟

在现代软件工程中,开发和部署应用程序的敏捷性和效率至关重要。随着技术的不断发展,API可组合性逐渐成为解决API消费者常见挑战的重要工具,同时也显著优化了开发流程


什么是API可组合性?

API可组合性指的是通过组合和重用API或其端点来构建更精细的服务或应用程序的能力。这种灵活性在微服务架构和无服务器计算中尤为重要,因为这些架构通常专注于实现特定功能或一组密切相关的任务。通过增强API可组合性,可以提升自助组合能力,减少手动API聚合的需求。

对于API消费者而言,整合来自多个服务的数据通常是一项复杂的任务。常见的痛点包括依赖数据团队进行更新或变更,以及与后端到前端(BFF)模式相关的重复性工作。这些问题往往导致中间层成为瓶颈,严重影响上市时间、开发效率和创新能力。在这种情况下,API的可组合性不仅是便利的选择,更是必需的能力。


API可组合性的核心价值

在当今数据驱动的生态系统中,开发人员需要从越来越多的数据源中获取特定的数据集。为了满足这种需求,API设计需要向更高的可组合性方向发展。如果没有这种转变,行业可能会陷入为每种数据组合定制API端点的困境,随着应用程序规模和复杂性的增加,这种做法将变得不可持续。

超图与API可组合性

超图(Supergraph)的核心价值在于其内在的可组合性。超图的可组合性决定了其自动化能力,能够减少子图所有者在支持复杂访问场景时的工作量。超图的投资回报率(ROI)取决于API集成和编排的开箱即用程度。可组合性越强,子图所有者需要编写的代码越少,数据消费者需要的API调用也越少。

以下是一些提升API可组合性的关键属性:

  • 连接数据:类似于数据库中的“外键”连接,用于实现复杂的关联查询。
  • 嵌套过滤器:根据子实体的属性对父实体进行过滤,提升数据检索的精度。
  • 嵌套排序:根据子实体的属性对父实体排序,优化数据的组织性。
  • 嵌套分页:支持父实体的分页列表及其子实体的分页和排序,简化大数据集的展示。

复杂查询的挑战与解决方案

在API集成过程中,开发CRUD操作、性能优化、授权机制集成以及协调不同利益相关者需求是耗时的基础任务。此外,设计高效的查询计划也极具挑战性,需要优化跨不同数据源的数据获取,同时管理查询执行顺序并重建一致的响应。

查询规划中的复杂性

复杂查询的规划涉及以下方面:

  • 确定最佳连接顺序。
  • 选择高效的连接算法。
  • 利用索引提升性能。

为了缓解这些问题,可以采用批处理、缓存和并行化等技术,从多个子图中同时获取数据,减少N+1调用问题。此外,API端点的编排需要复杂的数据转换和映射策略,例如异步数据获取和渐进加载,以优化延迟并提升用户体验。


Hasura的API可组合性方法

Hasura通过超图架构解决了API可组合性的复杂性。其设计理念基于精心设计的领域模型,并通过明确的数据访问规则进行扩展。Hasura的超图引擎作为一个复杂的编排层,采用查询规划和联邦架构,在不同连接器之间高效分配查询。

超图查询规划器的核心组件

  • ForEach:为父节点返回的数据获取额外数据。
  • HashJoin:连接来自不同步骤的数据。
  • 序列执行:按顺序执行步骤。
  • 并行执行:并行获取不同数据源的数据。

这种自动化使开发者能够自由组合和访问数据,而无需手动集成API,提供一致的自助式API组合体验。


高效的数据获取与编排

Hasura通过其多功能连接器架构优化了数据获取过程。这些连接器支持从传统数据库到特定领域微服务的多种数据源。以PostgreSQL为例,Hasura利用其高级功能(如json_agg()和横向连接)高效操作和获取数据。

以下是一个自动生成的SQL查询示例:

  • json_agg()函数:将多个JSON对象聚合为一个JSON数组。
  • 横向连接:允许子查询引用前面项目的列,从而实现复杂的依赖操作。

这种架构设计通过双层查询编译显著提升了数据获取和编排的效率。


自助式API组合的授权与安全

在实现自助式API组合时,授权和访问控制是关键挑战。Hasura通过自动应用基于角色的访问控制,确保字段在用户权限范围内动态调整。这种机制不仅简化了数据集成,还保证了数据的安全性和合规性。

细粒度的访问控制

Hasura允许对字段级别的访问进行精确控制,使开发者能够根据用户权限隐藏或公开特定字段。这种灵活性确保了数据的无缝集成,同时满足了安全需求。


向量搜索与全局ID

Hasura支持基于向量的相似性搜索和全局ID功能:

  • 向量搜索:结合AI技术,支持高效的KNN搜索和复杂的条件过滤。
  • 全局ID:提供整个超图中对象的唯一标识符,简化了对象的识别和检索。

这些功能进一步增强了Hasura在API可组合性方面的能力。


结语

API可组合性是未来软件开发的关键趋势。通过Hasura的超图架构和创新技术,开发者能够更高效地构建动态、灵活且以用户为中心的应用程序。Hasura的解决方案不仅提升了开发效率,还为API消费者提供了无缝的自助式组合体验。

随着Hasura DDN的不断发展,未来将推出更多功能,包括跨域关系、事件驱动用例、嵌套聚合等,进一步推动API可组合性的创新。

原文链接: https://hasura.io/blog/the-future-of-api-is-composability