Lesson 13 of 14
8. SQL vs NoSQL

Sources

3 min read+10 XP

Source notes

  • ACID: the term was introduced by Theo Härder and Andreas Reuter, "Principles of Transaction-Oriented Database Recovery", ACM Computing Surveys, 1983.
  • Normal forms: E. F. Codd's relational model papers (1970 onward).
  • Wide-column design: Fay Chang et al., "Bigtable: A Distributed Storage System for Structured Data", OSDI 2006; Apache Cassandra documentation (partition keys and clustering columns).
  • Key-value at scale: Giuseppe DeCandia et al., "Dynamo: Amazon's Highly Available Key-value Store", SOSP 2007.
  • PostgreSQL JSON support (json and jsonb types): PostgreSQL documentation.
  • Transactions in NoSQL databases: for example, MongoDB multi-document transactions and DynamoDB transactions, per their official documentation.
  • SQLite enforces foreign keys only when PRAGMA foreign_keys = ON is set: SQLite documentation.
  • Level 2 numbers are illustrative assumptions; arithmetic computed 2026-10-08.
  • Level 3 and Level 4 code: tested 2026-10-08 (code/ch08_sql_nosql.py, all checks pass).