I've often wondered about this example:
1) Relational databases already had network interfaces
2) SQL isn't perfect, but it has been reliable for a long time
3) Why we didn't increase the performance and security of SQL interfaces, relational databases and just expose those to client applications, including in the browser, directly?<p>Ok, there are a lot of reasons.<p>I worked on a project once that was essentially a "data platform", kind of a SQL firewall to "any data" (a bit of a stretch, but that was the concept). You could put any data system (relational, non-relational, web services, etc.) behind it, but then join across heterogeneous systems using plain old SQL. You had a query language and a network interface, and since it was separate from the actual databases themselves, you could do some interesting things with security, caching and scalability in a different layer.<p>GraphQL has always seemed like the same kind of query abstraction over data, with a network interface. Props to Facebook for making the tech and releasing it open source.<p>This also makes me think about the command query responsibility separation (CQRS) pattern, a similar discussion.<p>EDIT: Also, lest we forget OData... which never really took off, but offers similar functionality.