Evaluating execution strategies of GraphQL queries

The microservices pattern is an effective way for architecting modern cloud-based applications. Communication between microservices depends on extensible and scalable interfaces. However, existing solutions are limited when used in such tasks. In many cases, client applications do not have full control over delivered data. It often leads to under-fetching or over-fetching scenarios. In our work, we evaluate the effectiveness of different execution strategies of GraphQL queries when dealing with the N+1 problem. Our results show that the selection of execution strategies has a significant influence on performance. The results also support some of the general IT industry observations regarding the GraphQL query processing.

[1]  Francisco J. García-Peñalvo,et al.  Improving the OEEU's data-driven technological ecosystem's interoperability with GraphQL , 2017, TEEM.

[2]  C. U. Smith More New Software Performance Antipatterns : Even More Ways to Shoot Yourself in the Foot , 2000 .

[3]  Torsten Grabs,et al.  Execution strategies for SQL subqueries , 2007, SIGMOD '07.

[4]  Mattias Cederlund Performance of frameworks for declarative data fetching : An evaluation of Falcor and Relay+GraphQL , 2016 .

[5]  Jordi Cabot,et al.  Automatic Generation of Test Cases for REST APIs: A Specification-Based Approach , 2018, 2018 IEEE 22nd International Enterprise Distributed Object Computing Conference (EDOC).

[6]  André van Hoorn,et al.  Expert-Guided Automatic Diagnosis of Performance Problems in Enterprise Applications , 2016, 2016 12th European Dependable Computing Conference (EDCC).

[7]  Jorge Pérez,et al.  Semantics and Complexity of GraphQL , 2018, WWW.

[8]  Mariano P. Consens,et al.  An Empirical Analysis of GraphQL API Schemas in Open Code Repositories and Package Registries , 2019, AMW.

[9]  Christian Zirpins,et al.  Experiences on Migrating RESTful Web Services to GraphQL , 2017, ICSOC Workshops.

[10]  Marco Tulio Valente,et al.  Migrating to GraphQL: A Practical Assessment , 2019, 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[11]  Jorge Pérez,et al.  An Initial Analysis of Facebook's GraphQL Language , 2017, AMW.

[12]  Goetz Graefe,et al.  PIVOT and UNPIVOT: Optimization and Execution Strategies in an RDBMS , 2004, VLDB.

[13]  Gregor Engels,et al.  From Open API to Semantic Specifications and Code Adapters , 2017, 2017 IEEE International Conference on Web Services (ICWS).

[14]  Norman May,et al.  Robustness Metrics for Relational Query Execution Plans , 2018, Proc. VLDB Endow..