A SQL database, also known as a relational database, is based on the Structured Query Language (SQL) and stores various types of structured data in a collection of tables. SQL has been the de-facto language to create, store, retrieve and update data in relational databases for almost four decades.
The SQL database are primarily designed for transactional applications where data consistency and accuracy is essential. It provides ACID (atomicity, consistency, isolation, durability) compliance to guarantee the consistency, reliability, and predictability of data in the database during and after a set of operations are performed.
From an architectural standpoint, the original SQL databases—Oracle, PostgreSQL, SQL Server, and MySQL—are monolithic. They were not designed to distribute data and queries across multiple instances automatically, or to provide cloud-like scalability. In response to these limitations, NoSQL and NewSQL databases emerged to fill the need for horizontal scalability. However, they also introduced a painful compromise for database users.
Since the introduction of Docker containers and Kubernetes orchestration in 2015, the development of microservices-based applications has taken off. These applications are built on the cloud-native principles of built-in scaling, resilience, and geo-distribution and are now at the center of many application development processes. These applications need to scale quickly and globally, requiring a new class of relational database.
So the time was right for the distributed SQL database. The defining characteristic of a distributed SQL database is that the entire database cluster (no matter how many nodes it has) appears to the application as a single logical SQL database.