中文

学习 GraphQL 查询代价(扩展版)

软件工程 2021-08-30 v2 数据库 机器学习 编程语言

摘要

GraphQL 是一种用于 API 的查询语言及其执行运行时,负责从现有的微服务、REST API、数据库或其他来源获取请求数据。其表达能力和灵活性使其成为许多行业中 API 提供商的极具吸引力的选择,尤其是在 Web 领域。盲目服务客户端 GraphQL 查询的一个主要缺点是,查询代价可能出乎意料地巨大,从而给提供商带来计算与资源过载,并导致客户端面临 API 速率限制超限和基础设施过载。为了缓解这些缺点,有必要在执行查询之前高效地估计其代价。估计查询代价极具挑战性,因为 GraphQL 查询具有嵌套结构,GraphQL API 遵循不同的设计约定,且底层数据源是隐藏的。基于最坏情况静态查询分析的估计方法效果有限,因为它们往往会严重高估代价。我们提出了一种机器学习方法来高效且准确地估计查询代价。我们还通过在公开可用的商业 API 的查询-响应数据上进行测试,展示了该方法的强大能力。我们的框架高效且能高精度地预测查询代价,在性能上始终大幅优于静态分析方法。

关键词

引用

@article{arxiv.2108.11139,
  title  = {Learning GraphQL Query Costs (Extended Version)},
  author = {Georgios Mavroudeas and Guillaume Baudart and Alan Cha and Martin Hirzel and Jim A. Laredo and Malik Magdon-Ismail and Louis Mandel and Erik Wittern},
  journal= {arXiv preprint arXiv:2108.11139},
  year   = {2021}
}