GraphQL 是 GraphQL Foundation 维护的 API 的开源查询语言和运行时。 与传统的 REST API 不同,GraphQL 使客户端能够准确请求单个查询中所需的数据,从而减少数据的过度提取和提取不足。
Microsoft GraphQL 的 Fabric API 将这种强大的标准作为数据访问层引入 Fabric 生态系统,使你可以快速高效地查询多个数据源。 API 抽象化后端数据源的具体信息,以便专注于应用程序的逻辑,并在单个调用中提供客户端所需的所有数据。 使用简单的查询语言和高效的结果集作,GraphQL 将应用程序访问 Fabric 中的数据所花费的时间降到最低。
为何为 Fabric 数据使用 GraphQL
如果没有 GraphQL,向应用程序公开 Fabric 数据通常需要以下方法之一:
直接数据库连接
- 应用程序使用 SQL 驱动程序直接连接到 Lakehouse 或仓库(ODBC、JDBC)
- 将应用程序代码紧密耦合到数据库架构 - 架构更改会中断应用程序
- 要求管理每个应用程序中的连接字符串、凭据和驱动程序依赖项
- 应用程序代码中嵌入的 SQL 查询难以测试和维护
自定义 REST API
- 使用 ASP.NET 或 Node.js 等框架生成和维护自定义后端服务
- 为每个终结点编写控制器代码、路由逻辑和数据访问层
- 在数据结构发生更改时创建单独的 API 版本(v1、v2、v3)
- 过度提取数据(在只需几列时获取完整行数据)或提取不足(为获取相关数据进行多次数据请求)。
GraphQL 解决了以下难题:
- 不需要后端代码:Fabric 会从数据源自动生成 GraphQL 架构、解析器和终结点
- 准确查询所需内容:在单个查询中请求特定字段,消除过度提取和减少有效负载大小
- 在一个请求中提取相关数据:遍历关系而不进行多次往返(无 N+1 查询问题)
- 模式演变而不导致破坏性变更:添加新字段而不影响现有查询 - 客户端仅请求他们已知的字段
- 类型安全和文档:具有内置自省功能且开发工具能够理解的自记录的架构
- 统一访问多个源:通过单个终结点跨数据湖仓、仓库和 SQL 数据库进行查询
对于应用程序开发人员,GraphQL 意味着使用更少的基础结构更快地进行开发。 对于数据工程师,这意味着在不编写和维护自定义 API 代码的情况下公开数据。
谁应使用用于 GraphQL 的 API
Fabric 的 GraphQL API 旨在:
- 应用程序开发人员 构建数据驱动的 Web 和移动应用程序,以使用 Fabric Lakehouse 和数据仓库的数据。
- 数据工程师 通过新式灵活 API 向下游应用程序公开 Fabric 数据,而无需编写自定义后端代码
- 将 Fabric 数据连接到自定义应用程序和自动化工作流的集成开发人员
- BI 开发人员 创建自定义分析应用程序,以使用 Fabric 数据补充 Power BI
- 数据科学家 通过编程 API 公开 Fabric 数据和机器学习见解
如果你在 Microsoft Fabric 统一分析平台中工作,并且需要使 lakehouse、warehouse 或 SQL 数据库数据可供应用程序访问,GraphQL API 提供了一种高效、开发人员友好的方法来查询所需的数据。
小窍门
想要将 Fabric GraphQL API 与 AI 代理集成? 尝试使用模型上下文协议的教程 构建适用于 AI 代理的本地 GraphQL MCP 服务器,以将 AI 代理连接到 Fabric 数据。
通过用于 API for GraphQL 公开数据
在 Microsoft Fabric 中向 GraphQL 项公开数据源非常简单,可以使用 Fabric 门户的可视化界面在几分钟内完成。 该过程涉及:
- 在 Fabric 工作区中创建 GraphQL API 项
- 通过从可用的湖仓、仓库或数据库中选择来连接你的数据源
- 选择要公开的对象 ,例如表、视图或存储过程
- 定义 对象之间的关系(可选)以启用功能强大的嵌套查询
- 配置权限 以控制谁可以访问 API
配置后,Fabric 会自动生成 GraphQL 架构,创建必要的解析程序,并提供终结点 URL。 API 可立即准备好接受查询,无需部署或基础结构设置。
有关分步说明,请参阅 在 Fabric 中创建 GraphQL API 并添加数据。
支持的数据源
目前,以下受支持的数据源通过 Fabric API for GraphQL 公开:
- Microsoft Fabric 数据仓库
- Microsoft Fabric SQL 数据库
- 通过 SQL 分析终结点的 Microsoft Fabric 湖屋
- 通过 SQL Analytics 终结点Microsoft Fabric 镜像数据库,包括:
- Azure SQL 数据库
- Azure SQL 托管实例
- Azure Cosmos DB
- Microsoft Fabric SQL 数据库
- Azure Databricks
- Snowflake
- 打开镜像数据库
- Azure SQL 数据库
- 数据市场
功能
Microsoft Fabric API for GraphQL 提供了简化应用程序数据访问的综合功能。 从自动代码生成到性能监视,这些功能使你能够生成配置最少的可靠数据 API。
自动生成架构
- 架构发现:自动发现数据源架构并将其映射到 GraphQL 类型
- 查询和变更生成:基于数据结构创建 GraphQL 查询和变更
- 解析程序生成:自动生成从源中提取数据所需的解析程序
- 本地测试代码:生成用于立即测试和开发的示例代码
数据源灵活性
- 多个数据源:支持扇出查询,可跨多个数据源进行连接和查询
- 数据库对象:完全支持 SQL 数据库和仓库中的表、视图和存储过程
- 选择性公开:选择要通过 API 公开的特定对象和列
- 关系建模:在数据实体之间创建一对一、一对多关系和多对多关系
操作和监视
- 性能监视:内置仪表板和请求日志记录以跟踪 API 行为和使用情况
架构演变而不进行版本控制
GraphQL 通过避免传统版本控制,采用独特的 API 演变方法。 GraphQL API 不是创建 v1、v2 和 v3 终结点,而是不断改进:
- 累加性更改:无需中断现有查询即可添加新类型、字段和功能。 客户端仅请求所需的字段,因此新字段不会影响它们。
- 向后兼容性:即使架构增长,现有查询也会继续工作,因为 GraphQL 仅返回显式请求的数据。
- 弃用优于删除:字段可以先标记为弃用,而不是直接删除,以便为客户端提供适应的时间。
- 单终结点:应用程序始终连接到同一终结点,而不考虑架构更改。
与传统的版本控制 API 相比,此方法简化了 API 维护和客户端升级。 在 Fabric 中修改 GraphQL API 架构时,只要添加新功能而不是删除或重命名现有字段,现有应用程序就可以继续运行。 有关管理架构更改的详细信息,请参阅 Fabric API for GraphQL 简介和架构导出。
交互式编辑体验
GraphQL API 包含一个编辑器,可用于轻松开发和测试查询和突变。 编辑器的功能包括:
- 用于可视化查询和突变输出的结果窗格
- 支持查询和突变参数
- 支持 GraphQL 语法和架构对象名称的 Intellisense
有关使用 GraphQL 编辑器的详细信息,请参阅 适用于 GraphQL 编辑器的 API。
局限性
有关详细信息 ,请参阅 API for GraphQL 限制 。