I’ve had this idea on my mind for a while and figured I’d might as well write it down…
Feasel’s Law – Any sufficiently advanced data retrieval process will eventually have a SQL interface.
This is a bit tongue-in-cheek, but it plays out pretty well; typically, a major sign of database maturity is its reimplementation (at least in part) of SQL. Examples:
- Hadoop started out as writing map-reduce jobs in Java. Yahoo then created Pig to work with ETL processes. After that, Facebook created Hive, an implementation of SQL for Hadoop.
- Spark started out using Java and Scala, and then Python. Not too long after, we had Shark and then Spark SQL.
- HBase is a NoSQL database on top of Hadoop. Now we have Phoenix, which is a SQL interface to HBase.
- The primary methods of operation with Cassandra are SQL-like statements.
- Riak TS has a SQL interface. Incidentally, I love the author’s comment that SQL isn’t dead yet…
- The easiest way to access CosmosDB data? SQL. That interface isn’t fully baked yet—it doesn’t allow grouping, for example—but it’s getting there.
One of the few strong counter-examples is MongoDB, which doesn’t have a SQL interface but does have a SQL translation guide. DynamoDB also does not offer a SQL interface, though there are third-party interfaces and management tools which give you the same effect.
Otherwise, if you’re using a database that was created after 1990, has any significant user base, and is a mature platform, chances are it’s got a native SQL interface.