How could we design an API for querying data across all kinds of sources? How could we describe complex queries that join data across them? This problem is tough enough when all the sources are, say, Postgres, but what about when we need to join data from Postgres to MongoDB? Or an arbitrary CSV file? Or even another API? How do we talk about data access and manipulation in a way that makes sense for all these possible backends?
In this talk, we'll discuss how we've been designing a solution to this problem. We'll talk about some of the challenges in keeping API design consistent across data sources, balancing simplicity and expressivity, and even making all of this performant behind the infinite number shapes that a GraphQL request can take.
Tom lives in Barcelona with his partner and their cat, Beef. At Hasura, he builds compilers from GraphQL to SQL across a variety of different backend data stores. Outside of work, he's a runner, climber, and cyclist.