A curated list of creative, amazing ways to use SQL.
This list is a result of the constant research activities we do at Vettabase.
Inspired by the
awesome-* trend on GitHub.
YesSQL! is a late reaction to NoSQL.
NoSQL is negative marketing. It advertised itself as a movement of databases missing an SQL interface. They described SQL as something old and frustrating that doesn't scale. They had no features in common. The whole NoSQL marketing was based on a negative statement: the lack of a feature. But negative marketing has a fundamental problem: it says almost nothing about what you're trying to promote. Technically a CSV file, a note on a paper, and a piece of wood are all NoSQL, as they lack an SQL interface.
Later, the wind changed. NoSQL databases started implementing SQL. For example, Cassandra replaced its old protocol with an SQL subset that makes sense for its domain, and called it CQL. And then NoSQL advocates tried to convince us that they never meant "no SQL", they actually meant "Not Only SQL". They even wrote this on Wikipedia. But those of us who were there know that it's a lie.
Now, the trend is exactly the opposite: using SQL in new, creative ways! New software projects are implementing SQL in completely unexpected contexts. This list contains projects of this type.
- Apache Calcite - A Java framework that processes SQL queries and uses them to read data from heterogeneous data sources. Adapters implement access to different data sources.
- Dolt (MySQL-compatible) and DoltgreSQL (Postgres-compatible) - Databases with git-like capabilities, implemented via Go stored procedures. Databases can also be pushed to the public DoltHub or private hubs. Data versioning is useful to create different versions of a database, keeping all versions updated. A possible use case is what-if analysis.
- IaSQL - PostgreSQL-based database that allows viewing AWS infrastructure data in a relational way. Data can be modified in SQL. When a transaction is committed, changes are applied to the infrastructure using the AWS API.
- ksqlDB - An SQL database that streams data from Kafka.
- MindsDB - An SQL interface that reads data from heterogeneous data sources and can answer queries about the future. Future data are generated using machine learning algorithms. Many prediction modules are supported, including external APIs. More integrations can easily be implemented as Python modules. This includes models and data sources. Both MySQL and PostgreSQL dialects are supported, as well as non-SQL interfaces.
- osquery - Shows information about the system where osquery is installed, in a relational manner. Suitable for servers, laptops, Docker servers, EC2 instances, and more. See the schema documentation. It can run as a daemon or it can run just when it's invoked to run a query.
- Steampipe - Based on PostgreSQL or SQLite, it's designed to show information from any API as relational data. New plugins can be implemented in Go. Many plugins exist on Steampipe Hub to read data from cloud infrastructures, business applications, and more.
- Trino - A distributed SQL engine to run queries across heterogeneous data sources, available as connectors.
It's also worth mentioning that some traditional relational databases support reading heterogeneous, non-relational data sources and treat them as local tables:
- MariaDB CONNECT - The CONNECT storage engine allows creating tables based on external, heterogeneous data sources. This includes other relational databases, MongoDB, data files in many formats, and some special data sources like Windows network interfaces.
- PostgreSQL FDWs - Foreign Data Wrappers are PostgreSQL extensions that allow building tables that read and write to any data source. Several extensions exist that allow writing FDWs in languages other than C: Multicorn for Python, Holycorn for Ruby, and Wrappers for Rust.
Related projects from us: