Relational databases
Tables, SQL and transactions: the dependable default.
21 technologies on this page ↓How it works
A relational database stores data in tables with a defined schema and relationships between them. You query it with SQL, join across tables, and group changes into ACID transactions so they all happen or none do. Managed services handle backups, failover, patching and read replicas that take read-heavy queries off the primary.
A meticulous accountant’s ledger. Every entry follows the rules, the books always balance, and you can ask it almost any question.
Reach for it when
- Most business data: users, orders, inventory, billing
- Data with relationships you want to query flexibly
- Anything where correctness matters more than raw write speed
Think twice when
- Billions of tiny writes a day with simple access patterns; consider key-value or time-series
- Scanning petabytes for analytics, which belongs in a warehouse
A real example
An online store keeps customers, orders and order lines in PostgreSQL. Placing an order inserts the order and decrements stock in one transaction. Finance reports run on a read replica so they don’t slow checkout.
Technologies
Specific products, and what each does differently.
Server databases
Embedded databases
A library and a file inside your program, no server.
Distributed and cloud-native databases
Spread data across machines or split compute from storage.
New engines that speak the Postgres protocol
Use Postgres clients and drivers, but a different engine underneath.
CedarDBCommercialA PostgreSQL-compatible database rebuilt from scratch at TU Munich, running transactions and analytics on one copy of the data on a single server.
ScramDBCommercialA brand-new, closed-source database that speaks the PostgreSQL protocol and promises transactions, analytics and vector search on one copy of the data; first builds shipped in summer 2026.Operators and failover
Run Postgres or MySQL with replicas and automatic failover.
CloudNativePGOpen sourceA Kubernetes operator that runs highly available PostgreSQL with no Patroni and no StatefulSets: the Kubernetes API itself holds the cluster’s state.
PGO (Crunchy Postgres for Kubernetes)Open sourceCrunchy Data’s Postgres operator: Patroni in every pod for failover, pgBackRest for backups, and a declarative `PostgresCluster` resource on top.
Percona OperatorsOpen sourceFour free Kubernetes operators from Percona that run its builds of MySQL, PostgreSQL and MongoDB, each using the engine’s own replication and backup tools.
PatroniOpen sourceA Python agent beside each Postgres server that elects one primary through etcd, Consul, ZooKeeper or Kubernetes, and fails over when it dies.Backups
pgBackRestOpen sourceA PostgreSQL-only backup tool in C: parallel full, differential and incremental backups, WAL archiving and point-in-time restores, to disk, S3, Azure, GCS or SFTP.Mainly Backup & restore
WAL-GOpen sourceA single Go binary that streams compressed, encrypted Postgres backups and WAL to object storage, and restores them in parallel.Mainly Backup & restore| Server databases | Open source | PostgreSQL Global Development Group | PostgreSQL License | 2026-10-05 | |
| Server databases | Open source | Oracle | GPLv2 or commercial | 2026-10-05 | |
| Embedded databases | Open source | The SQLite developers (Hwaci) | Public domain | 2026-10-05 | |
| Embedded databases | Open source | Turso (acquisition by Supabase announced October 2026) | MIT (Turso Database and libSQL); Turso Cloud is a proprietary hosted service | 2026-10-06 | |
| Embedded databases | Open source | DuckDB Foundation and DuckLabs | MIT | 2026-10-05 | |
| Distributed and cloud-native databases | Commercial product | Cockroach Labs, Inc. | CockroachDB Software License (proprietary, source available) since v24.3 in November 2024; before that Business Source License 1.1 plus the CockroachDB Community License from v19.2 (2019), and Apache 2.0 for the core until v19.1 | 2026-10-06 | |
| Distributed and cloud-native databases | Commercial product | Databricks | Proprietary service; the storage engine and Postgres changes are Apache 2.0 on GitHub | 2026-10-06 | |
| Distributed and cloud-native databases | Commercial product | PlanetScale, Inc. | Proprietary (built on Vitess, Apache 2.0; the `pscale` CLI is Apache 2.0) | 2026-10-06 | |
| Distributed and cloud-native databases | Commercial product | Alibaba Cloud | Proprietary managed service; open-source PolarDB for PostgreSQL (Apache 2.0) and PolarDB-X (Apache 2.0, storage engine GPL 2.0) | 2026-10-11 | |
| Distributed and cloud-native databases | Open source | Cloud Native Computing Foundation | Apache 2.0 | 2026-10-06 | |
CedarDB | New engines that speak the Postgres protocol | Commercial product | CedarDB GmbH | Proprietary; the free Community Edition comes under CedarDB’s own terms (64 GiB data limit, no modification or redistribution) | 2026-10-06 |
ScramDB | New engines that speak the Postgres protocol | Commercial product | ScramDB Labs | Proprietary, closed source; free single-node Community edition capped at 64 GiB, Enterprise licence key required for clustering; no published licence agreement found | 2026-10-06 |
| New engines that speak the Postgres protocol | Open source | RisingWave Labs | Apache 2.0 (since the first open-source release in April 2022); premium features in the same binary need a paid licence key since v2.0 (2024) | 2026-10-06 | |
CloudNativePG | Operators and failover | Open source | CloudNativePG community (started at 2ndQuadrant and EDB) | Apache 2.0 | 2026-10-06 |
PGO (Crunchy Postgres for Kubernetes) | Operators and failover | Open source | Crunchy Data (joining Snowflake, announced June 2025) | Apache 2.0 for the operator code. Crunchy’s prebuilt images are under the Crunchy Data Developer Program terms: free for development, but free in production only for individuals and organisations with fewer than 50 employees | 2026-10-06 |
Percona Operators | Operators and failover | Open source | Percona | Apache 2.0 (operators). The databases they deploy keep their own licences: Percona Server for MongoDB is source-available under the SSPL | 2026-10-06 |
Patroni | Operators and failover | Open source | Patroni community (started at Zalando) | MIT | 2026-10-06 |
pgBackRest | Backups | Open source | David Steele and contributors, funded by a coalition of sponsors (Crunchy Data until 2025) | MIT | 2026-10-10 |
WAL-G | Backups | Open source | WAL-G contributors (started at Citus Data; supported by Yandex Cloud) | Apache 2.0 (the optional LZO support is GPL 3.0 or later) | 2026-10-06 |
| Extensions | Open source | PostgreSQL Global Development Group | PostgreSQL License | 2026-10-06 | |
| Other | Commercial product | Cloudflare, Inc. | Proprietary | 2026-10-12 |
What each provider calls it
- AWS
- RDS, Aurora
- Google Cloud
- Cloud SQL, AlloyDB, Spanner
- Azure
- Azure SQL Database, Azure Database for PostgreSQL
- Open source & others
- PostgreSQL, MySQL, MariaDB; also PlanetScale (hosted Vitess MySQL and Postgres) and CockroachDB (distributed SQL that speaks the Postgres protocol; proprietary licence since 2024), Neon (serverless Postgres, owned by Databricks), Vitess (sharding for MySQL, a CNCF project) CedarDB (Postgres-compatible, for transactions and analytics, proprietary) and Turso (a SQLite-compatible rewrite in Rust with concurrent writes, MIT; Supabase is acquiring the company); self-run Postgres usually adds Patroni for failover and WAL-G for backups, and on Kubernetes an operator such as CloudNativePG, Crunchy’s PGO or the Percona Operators runs the cluster
See it in a real stack
Architectures that use relational databases
In code · sql
BEGIN;
INSERT INTO orders (customer_id, total) VALUES (42, 129.00);
UPDATE inventory SET on_hand = on_hand - 1 WHERE sku = 'PUMP-ROD-7';
COMMIT; -- both changes happen, or neither does
SELECT c.name, count(o.id) AS orders
FROM customers c JOIN orders o ON o.customer_id = c.id
GROUP BY c.name ORDER BY orders DESC LIMIT 10;Worth exploring
Often confused with
Where it came from1970–2025
By the late 1960s, databases stored records as trees, like IBM’s IMS, released around 1968, or as networks of linked records, like the CODASYL model that Charles Bachman championed. Programs found data by following those links, so changing how data was stored meant changing the programs. In June 1970 Edgar F. “Ted” Codd, at IBM’s San Jose Research Laboratory, published “A Relational Model of Data for Large Shared Data Banks”. He argued that users “must be protected from having to know how the data is organized in the machine”, and proposed storing data as tables (relations) queried through one general language.
IBM was slow to commit, and until 1984 it treated IMS as its serious database. Its System R project in San Jose, begun in 1974, produced SEQUEL (later SQL), designed by Donald Chamberlin and Raymond Boyce, and set out to show that a relational system could have the full function and performance needed for everyday production use. At Berkeley, Michael Stonebraker’s team built Ingres. Relational Software, now Oracle, shipped Oracle V2, one of the first commercial SQL databases, in 1979, Codd won the Turing Award in 1981, and SQL became an ANSI standard in 1986.
Relational databases became the default home for business data, and open-source MySQL and PostgreSQL carried them into the web era. The cloud turned them into a service: Amazon RDS launched in 2009 as managed MySQL, and later systems such as Google Spanner (2012) and Amazon Aurora DSQL (2025) spread transactional databases across data centers and Regions.
Why it’s built this way
- Tables of values instead of stored pointers
- A main goal of Codd’s paper was data independence: programs should keep working when the storage layout changes. Relationships are expressed by matching values, such as a customer ID, not by links baked into the files.
- Say what you want, not how to find it
- A query describes the result, and the database chooses the indexes and join order. System R’s cost-based optimizer made that choice automatically; its inventor, Patricia Selinger, said cost-based optimization “made relational work”. It also means the same SQL keeps working as data and indexes change.
- Transactions that happen completely or not at all
- Orders, payments and stock levels must never be half-updated. System R logged every change so it could undo incomplete transactions after a failure, while aiming for performance comparable to existing systems.
- One standard language across products
- IBM’s backing moved the industry to SQL over alternatives like Ingres’s QUEL, and ANSI and ISO standards followed. No database claims full conformance to the current core standard, but skills and tools carry over between databases.
Timeline
- 1970
Codd publishes the relational model at IBM San Jose
- 1974
IBM’s System R project begins; SEQUEL, later SQL, is designed
- 1979
Oracle V2, one of the first commercial SQL databases, ships
- 1986
SQL becomes an ANSI standard, and ISO follows in 1987
- 2009
Amazon RDS offers managed MySQL in the cloud
- 2012
Google’s Spanner paper describes a globally distributed, synchronously replicated database
- 2025
Amazon Aurora DSQL, a multi-Region distributed SQL database, becomes generally available
- E. F. Codd: A Relational Model of Data for Large Shared Data Banks (CACM, June 1970)
- Stonebraker and Hellerstein: What Goes Around Comes Around (2005)
- Chamberlin et al.: A History and Evaluation of System R (CACM, 1981)
- IBM: The relational database
- IBM: Patricia Selinger and the cost-based optimizer
- Oracle Database 19c Concepts: Brief history of Oracle Database (Oracle V2, 1979)
- NIST FIPS PUB 127-1: Database Language SQL (cites ANSI X3.135-1986 and ISO 9075-1987)
- PostgreSQL docs: SQL conformance
- AWS blog: Introducing RDS, the Amazon Relational Database Service (Oct 2009)
- Spanner: Google’s Globally-Distributed Database (OSDI 2012)
- AWS What’s New: Amazon Aurora DSQL is generally available (May 2025)
Sources17
- Amazon RDS User Guide: What is Amazon RDS? (backups, patching, failover)
- Amazon RDS User Guide: Working with read replicas
- Amazon Aurora User Guide: What is Amazon Aurora?
- Google Cloud: Cloud SQL overview
- Google Cloud: AlloyDB for PostgreSQL overview
- Google Cloud: Spanner overview
- Microsoft Learn: What is Azure SQL Database?
- Microsoft Learn: Azure Database for PostgreSQL overview
- PostgreSQL docs: Transactions (all-or-nothing)
- mysql/mysql-server on GitHub
- MariaDB Foundation: MariaDB Server
- PlanetScale docs: Plans
- CNCF: CloudNativePG project page
- Crunchy Postgres for Kubernetes docs: Overview
- Percona XtraDB Cluster Operator docs: Design and architecture
- tursodatabase/turso on GitHub: README
- Turso blog: Turso is joining Supabase (Oct 2026)