学习 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}
}