GraphQL, which has nothing to do with graph databases but has everything to do with JSON query, was a technology originated at Facebook to simplify getting access to data. Now, Hasura, a two-year old company, is building a data virtualization tool around it and last week introduced a cloud service.
At the core of Hasura's offerings is its own implementation of a GraphQL query engine that it has open sourced. Currently designed to work against PostgreSQL-compatible databases, the engine scans the metadata of specified tables on the target, builds a GraphQL endpoint, represents the data in JSON format, and automatically generates a selection of possible queries.
Atop its GraphQL query engine, the original Hasura enterprise on-premises offering includes adapters for PostgreSQL databases; other relational targets are planned in the future. It provides management, testing, and security features. For instance, it provides regression testing of queries when underlying schemas or configurations change and replay options for debugging. It also includes support of policy-based security settings that can be triggered based on metadata scanned from target database sources.
The cloud offering, which was introduced last week, initially runs on AWS. It is currently available only through Hasura's website and is not on the AWS Marketplace. It provides many of the same features of the on-premise enterprise product plus cloud-specific options for auto-scaling and, at the other end of the scale, enforcing consumption limits based on parameters such as query frequency and/or query complexity. It offers dynamic caching capabilities for frequently shared data and query plans, and automatic routing options to read replicas.
Hasura is the first company to build a data virtualization business specifically around GraphQL. Until now, GraphQL was associated with NoSQL databases, such as MongoDB or Apache Cassandra, which have added GraphQL APIs alternatives to REST or more complex query languages.
Compared to REST or native database query languages, GraphQL is very stripped down. Like REST, it combines a query language with an API, but unlike REST, it is far narrower in scope. While access via REST APIs often require multiple back and forth HTTPS messages, GraphQL queries can usually be handled with a single statement. That is where the "graph" of GraphQL comes: it is designed to probe the elaborate knowledge graphs that underlie many JSON data sources and go straight to the exact piece of data that the user is requesting.
As such, GraphQL has become popular for lightweight, simple queries designed to elicit a single piece of data, such as with smartphone applications. That's why MongoDB introduced GraphQL support as part of a general revamping of its mobile platform in the wake of the Realm acquisition.
But Hasura is aiming at a different use case: adding GraphQL endpoints for relational databases that otherwise don't have them. For now, Hasura is first to add JSON-oriented GraphQL endpoints for PostgreSQL databases. You can also use the open source Hasura GraphQL engine to fashion your own homegrown interfaces to targets like Amazon RDS databases.
In the long run, we expect that cloud database providers will also add their own GraphQL endpoints, and that Hasura will further differentiate itself through its data virtualization capabilities against all the major household database names.