A Declarative Approach to Schema Delegation in Facebook's GraphQL Framework
This project is designed for master students.
Description: After developing and using it internally for three years, in 2016, Facebook released a specification and a reference implementation of a framework, called GraphQL, that introduces a new type of Web-based data access interfaces. Two core components of this framework are a form of schemas and a corresponding query language for expressing the data retrieval requests issued to GraphQL-aware Web servers. Since its release, GraphQL has become highly popular and is employed by an increasing number of users including Coursera, Twitter, Github, and Pinterest. In fact, many organizations and companies increasingly use GraphQL for both their internal APIs to all their data and their public Web APIs that can be used by external third-party applications and that are limited in what data they expose. A common approach to build a public GraphQL server for the latter types of GraphQL APIs is to simply make this server access the internal GraphQL API by means of GraphQL schema delegation, which is conceptually similar to the notion of views in databases. However, in contrast to database views where every query over a view is rewritten into a single query over the underlying base data, existing approaches to implement GraphQL schema delegation typically have to access the internal API multiple times for every incoming request. The overall research question to be studied in this thesis project is whether GraphQL schema delegation can also be implemented based on the same idea used for implementing database views. Hence, the goal of the project is to develop and evaluate a declarative approach to GraphQL schema delegation that rewrites any incoming request into a single request for the internal GraphQL API. A follow-up research question then is: what are the trade-offs of the approach and how does it compare to the existing approaches? To address these questions, the approach first has to be defined conceptually. Thereafter, a prototype of the approach has to be implemented and, based on the prototype, the approach has to be evaluated by an experimental comparison to existing GraphQL schema delegation approaches.
Page responsible: Olaf Hartig
Last updated: 2018-10-26