Learning Resources
This module is populated from the local chunked books in library/raw/semester-06-databases-distributed/books. Use this page as a source map, not as an instruction to read everything.
Source Stack
| Book | Role | How to use it in this module |
|---|---|---|
| Designing Data-Intensive Applications (Kleppmann) | Primary teaching source | Default escalation for every primary concept. Chapters 7 and 9 are mandatory chunks for this module |
| Database System Concepts (Silberschatz et al.) | Classical concurrency-control support | Use for formal definitions of isolation, lock-based protocols, timestamp ordering, multiversion schemes, and ARIES recovery |
| Database Internals (Petrov) | Implementation-level support | Use for WAL mechanics, MVCC implementation, 2PC/3PC edges, and consistency-model summaries close to real systems |
| Distributed Systems Concepts and Design (Coulouris) | Canonical distributed-transactions support | Use for classical 2PC/3PC coverage, concurrency control in distributed transactions, and replicated-data transactions |
Resource Map by Cluster
Cluster 1: ACID and the Single-Node Transaction
| Need | Best local chunk | Why |
|---|---|---|
| ACID intuition | DDIA: The meaning of ACID (part 1) | Best skeptical treatment of each letter |
| ACID formalism | Database System Concepts: Transaction concept | Textbook definitions with examples |
| Atomicity and durability mechanics | Database System Concepts: Transaction atomicity and durability | Clean statement of the machinery |
| Single-object vs multi-object | DDIA: Single-object and multi-object operations (part 1) | What ACID actually promises about scope |
| WAL mechanics | Database Internals: Log semantics | Implementation-level view of the WAL rule |
| ARIES recovery | Database Internals: ARIES | Concise operational description of ARIES |
| ARIES rigor | Database System Concepts: ARIES (part 1) | Full textbook treatment of the three phases |
| BASE context | Database Internals: Tunable consistency | Where BASE shows up in modern systems |
Cluster 2: Concurrency Anomalies
| Need | Best local chunk | Why |
|---|---|---|
| Weak isolation overview | DDIA: Weak isolation levels | Best introduction to why anomalies exist |
| Dirty reads and dirty writes | DDIA: Read committed | What RC actually prevents |
| Lost update | DDIA: Preventing lost updates | The five standard preventions |
| Read skew (non-repeatable) | DDIA: Snapshot Isolation and Repeatable Read (part 1) | SI framed as read-skew prevention |
| Write skew and phantoms | DDIA: Write skew and phantoms (part 1) | The anomaly most commonly missed |
| Anomaly catalog | Database Internals: Read and write anomalies | Compact list with definitions |
| Isolation levels (textbook) | Database System Concepts: Transaction isolation levels | Clean ANSI-level definitions |
| Isolation levels (implementation) | Database System Concepts: Implementation of isolation levels | How engines actually deliver each level |
Cluster 3: Implementing Isolation
| Need | Best local chunk | Why |
|---|---|---|
| 2PL essentials | DDIA: Two-phase locking (part 1) | Operational introduction |
| 2PL edge cases | DDIA: Two-phase locking (part 2) | Deadlocks, predicate locks, cost |
| 2PL (textbook) | Database System Concepts: Lock-based protocols (part 1) | Formal lock modes and protocols |
| Deadlock handling | Database System Concepts: Deadlock handling (part 1) | Detection and prevention approaches |
| Lock-based CC (implementation) | Database Internals: Lock-based concurrency control (part 1) | Real-engine view |
| SI operational | DDIA: Snapshot Isolation and Repeatable Read (part 2) | MVCC mechanics DDIA-style |
| Multiversion schemes | Database System Concepts: Multiversion schemes | Textbook multiversion formalism |
| Snapshot isolation (rigor) | Database System Concepts: Snapshot isolation (part 1) | Berenson-era definition and contrasts |
| Optimistic CC | Database Internals: Optimistic concurrency control | SSI's immediate conceptual ancestor |
| SSI | DDIA: Serializable Snapshot Isolation (part 1) | Cleanest explanation of rw-antidependencies |
Cluster 4: Distributed Transactions
| Need | Best local chunk | Why |
|---|---|---|
| 2PC overview | DDIA: Atomic commit and two-phase commit (part 1) | Best modern treatment |
| 2PC pitfalls | DDIA: Atomic commit and two-phase commit (part 2) | Blocking, heuristics, in-doubt |
| 2PC practice | DDIA: Distributed transactions in practice (part 1) | XA, message brokers, real integration |
| 2PC cohort failures | Database Internals: Cohort failures in 2PC | Participant-side recovery paths |
| 3PC (textbook) | Database Internals: Coordinator failures in 3PC | Where 3PC helps and where it breaks |
| 2PC (distributed systems) | Distributed Systems: Atomic commit protocols (part 1) | Classical distributed-systems treatment |
| 3PC (distributed systems) | Distributed Systems: Atomic commit protocols (part 3) | Formal 3PC coverage |
| Distributed CC | Distributed Systems: Concurrency control in distributed transactions | 2PL / timestamp ordering across nodes |
| Spanner as reference | Database Internals: Distributed transactions with Spanner | Modern commit backed by consensus |
| Saga background | DDIA: Distributed transactions in practice (part 2) | Kleppmann's honest take on distributed transactions |
| Coordination avoidance | Database Internals: Coordination avoidance | When you can skip coordination entirely |
Cluster 5: Consistency Models
| Need | Best local chunk | Why |
|---|---|---|
| Consistency overview | DDIA: Consistency guarantees | The map of the territory |
| Linearizability | DDIA: Linearizability | Cleanest available intuitive definition |
| Linearizable systems | DDIA: Implementing linearizable systems | How to actually achieve linearizability |
| Cost of linearizability | DDIA: The cost of linearizability | CAP connection and latency analysis |
| Linearizability (textbook) | Database Internals: Linearizability | Alternate exposition |
| Sequential consistency | Database Internals: Sequential consistency | The model one step weaker than linearizable |
| Causal consistency | DDIA: Ordering and causality (part 1) | Happens-before and causal ordering |
| Causal consistency (textbook) | Database Internals: Causal consistency | Compact causal-consistency definition |
| Session guarantees | Database Internals: Session models | Bayou's four guarantees |
| Strong eventual and CRDTs | Database Internals: Strong eventual consistency and CRDTs | A practical convergence model |
Exercise Support Chunks
Use these when concept pages are understood but fluency is weak:
- DDIA: Summary chapter 7 (part 1)
- DDIA: Summary chapter 9 (part 1)
- Database System Concepts: Exercises (chapter 17 transactions)
- Database System Concepts: Exercises (chapter 18 concurrency control)
- Database System Concepts: Exercises (chapter 19 recovery)
- Database System Concepts: Exercises (chapter 23 distributed transactions)
External Resources (Validated, Read If Pointed Here)
The module links into specific external posts from concept pages. All validated as of the most recent curation pass.
- Berenson, Bernstein, Gray, Melton, O'Neil, O'Neil: "A Critique of ANSI SQL Isolation Levels" (Microsoft Research, 1995) - the paper that showed the ANSI SQL isolation-level definitions are incomplete.
- Martin Kleppmann: "Hermitage: testing the 'I' in ACID" - empirical tests of real isolation levels across engines.
- Peter Bailis et al.: "Highly Available Transactions" (VLDB 2014) - which isolation levels are achievable under availability constraints.
- Jepsen: Consistency Models - the single best linked reference for the consistency-model ladder.
- Jepsen: PostgreSQL 12.3 - a worked Jepsen analysis of a real database.
- Dan Pritchett: "BASE: An ACID Alternative" (ACM Queue, 2008) - the original BASE essay.
- Daniel Abadi: "Problems with CAP" (PACELC blog) - PACELC motivation.
- Eric Brewer: "CAP Twelve Years Later" (IEEE Computer, 2012) - Brewer's own retrospective.
- Garcia-Molina and Salem: "Sagas" (1987) - the original sagas paper.
- Chris Richardson: Saga pattern - practical saga guide for microservice teams.
Use Rules
- For every primary concept, the local book chunk is the escalation. Reach for DDIA first.
- If DDIA is too terse, go to Database System Concepts for the rigorous version or Database Internals for the implementation view.
- Distributed Systems Concepts and Design is the canonical reference for the classical 2PC/3PC presentation; use it when you need the formal textbook treatment.
- Open one chunk per gap. Do not drift into whole chapters.
- External links are targeted: when a concept page says "external," it means the chunk does not cover that angle well enough.