I had an interesting discussion with my friend yesterday: I claimed that NoSQL and RDBMS systems are converging, and he denied it. We agreed to disagree, but I wanted to give it some more structured thought. As in many such discussions, the devil is in semantics: what is RDBMS, what is NoSQL, and what does “converging” mean?
Relational databases represent data in relational tables and support operations from relational algebra. Each cell is supposed to be “atomic”, i.e. devoid of internal structure as far as the database is concerned. This is the baseline requirement of first normal form, which most traditional relational designs adhered to. RDBMS books specifically warn about storing lists in individual cells.
The database can enforce unique keys, foreign keys, and other constraints. SQL allows combinations of selections, joins, and projections, albeit not necessarily efficient ones. RDBMSes also support transactions and isolation levels. Many widely used systems were built around a single writable server, making horizontal scaling difficult.
NoSQL databases tried to solve these problems in different ways. Key value stores offered simpler access patterns. Document databases allowed nested records and lists. Distributed stores spread data across machines. Some could only look up data by key. Others couldn’t update several records in one transaction.
My claim is that modern products increasingly blend these capabilities. PostgreSQL, Oracle, and SQL Server support JSON documents with searchable fields, going beyond the traditional flat relational model. CockroachDB combines SQL and transactions with an architecture designed for horizontal scaling.
On the NoSQL side, MongoDB and DynamoDB both added transactions across multiple records in 2018. MongoDB extended them across shards in 2019. It also supports joins through its $lookup operator. Queries across partitions are possible in MongoDB, DynamoDB, and Cassandra, although their restrictions and costs differ.
This does not make RDBMS and NoSQL interchangeable. But if “convergence” means increasing overlap in capabilities, it is clearly happening.
The labels still tell you something about a database’s origins. They tell you much less about what it can and cannot do today.
