1. Introduction
  2. Overview
  3. 1. Phases & Labs
  4. 2. Glossary
  5. 3. Toolchain Setup
  6. Phase 1 — Storage Primitives & Foundations
  7. 4. Lab 01 — Storage Primitives
    ❱
    1. 4.1. References
    2. 4.2. Analysis
    3. 4.3. Execution Guide
    4. 4.4. Observation & Debugging
    5. 4.5. Verification
    6. 4.6. Broader Ideas
    7. 4.7. Step 1 — Open and pwrite
    8. 4.8. Step 2 — pread and hexdump
    9. 4.9. Step 3 — Benchmark and page cache
  8. 5. Lab 02 — Data Structures for Storage
    ❱
    1. 5.1. References
    2. 5.2. Analysis
    3. 5.3. Execution Guide
    4. 5.4. Observation & Debugging
    5. 5.5. Verification
    6. 5.6. Broader Ideas
    7. 5.7. Step 1 — Skip list
    8. 5.8. Step 2 — Hash table
    9. 5.9. Step 3 — Bench compare
  9. 6. Lab 03 — Write-Ahead Log
    ❱
    1. 6.1. References
    2. 6.2. Analysis
    3. 6.3. Execution Guide
    4. 6.4. Observation & Debugging
    5. 6.5. Verification
    6. 6.6. Broader Ideas
    7. 6.7. Step 1 — Record framing
    8. 6.8. Step 2 — Append, sync, iterate
    9. 6.9. Step 3 — Group commit bench
  10. 7. Lab 04 — Bloom Filters & Hashing
    ❱
    1. 7.1. References
    2. 7.2. Analysis
    3. 7.3. Execution Guide
    4. 7.4. Observation & Debugging
    5. 7.5. Verification
    6. 7.6. Broader Ideas
    7. 7.7. Step 1 — Hash chain
    8. 7.8. Step 2 — Bit vector add and contains
    9. 7.9. Step 3 — Sizing, encode, FPR
  11. Phase 2 — LevelDB / LSM-Tree
  12. 8. Lab 05 — LSM MemTable
    ❱
    1. 8.1. References
    2. 8.2. Analysis
    3. 8.3. Execution Guide
    4. 8.4. Observation & Debugging
    5. 8.5. Verification
    6. 8.6. Broader Ideas
    7. 8.7. Step 1 — Sorted map
    8. 8.8. Step 2 — Encode and decode
    9. 8.9. Step 3 — CLI cross-test
  13. 9. Lab 06 — SSTable Format
    ❱
    1. 9.1. References
    2. 9.2. Analysis
    3. 9.3. Execution Guide
    4. 9.4. Observation & Debugging
    5. 9.5. Verification
    6. 9.6. Broader Ideas
    7. 9.7. Step 1 — Data block
    8. 9.8. Step 2 — Writer, index, footer
    9. 9.9. Step 3 — CLI cross-test
  14. 10. Lab 07 — LSM Compaction
    ❱
    1. 10.1. References
    2. 10.2. Analysis
    3. 10.3. Execution Guide
    4. 10.4. Observation & Debugging
    5. 10.5. Verification
    6. 10.6. Broader Ideas
    7. 10.7. Step 1 — K-way merge
    8. 10.8. Step 2 — Tombstone purging
    9. 10.9. Step 3 — CLI cross-test
  15. 11. Lab 08 — Block Cache & Iterators
    ❱
    1. 11.1. References
    2. 11.2. Analysis
    3. 11.3. Execution Guide
    4. 11.4. Observation & Debugging
    5. 11.5. Verification
    6. 11.6. Broader Ideas
    7. 11.7. Step 1 — LRU block cache
    8. 11.8. Step 2 — Merging iterator
    9. 11.9. Step 3 — CLI cross-test
  16. 12. Lab 09 — LevelDB Complete
    ❱
    1. 12.1. References
    2. 12.2. Analysis
    3. 12.3. Execution Guide
    4. 12.4. Observation & Debugging
    5. 12.5. Verification
    6. 12.6. Broader Ideas
    7. 12.7. Step 1 — Write path
    8. 12.8. Step 2 — Flush and recovery
    9. 12.9. Step 3 — CLI cross-test
  17. Phase 3 — SQLite / B-Tree
  18. 13. Lab 10 — B-Tree Fundamentals
    ❱
    1. 13.1. References
    2. 13.2. Analysis
    3. 13.3. Execution Guide
    4. 13.4. Observation & Debugging
    5. 13.5. Verification
    6. 13.6. Broader Ideas
    7. 13.7. Step 1 — Tree shape and get
    8. 13.8. Step 2 — Insert and delete
    9. 13.9. Step 3 — Serialize and cross-test
  19. 14. Lab 11 — Pager System
    ❱
    1. 14.1. References
    2. 14.2. Analysis
    3. 14.3. Execution Guide
    4. 14.4. Observation & Debugging
    5. 14.5. Verification
    6. 14.6. Broader Ideas
    7. 14.7. Step 1 — Page I/O and layout
    8. 14.8. Step 2 — LRU cache
    9. 14.9. Step 3 — Cross-language bytes
  20. 15. Lab 12 — SQL Frontend
    ❱
    1. 15.1. References
    2. 15.2. Analysis
    3. 15.3. Execution Guide
    4. 15.4. Observation & Debugging
    5. 15.5. Verification
    6. 15.6. Broader Ideas
    7. 15.7. Step 1 — Tokenizer
    8. 15.8. Step 2 — Parser and AST
    9. 15.9. Step 3 — Serializer and cross-test
  21. 16. Lab 13 — Transactions & MVCC
    ❱
    1. 16.1. References
    2. 16.2. Analysis
    3. 16.3. Execution Guide
    4. 16.4. Observation & Debugging
    5. 16.5. Verification
    6. 16.6. Broader Ideas
    7. 16.7. Step 1 — Version chain and snapshot read
    8. 16.8. Step 2 — Write conflict detection
    9. 16.9. Step 3 — Cross-language bytes
  22. 17. Lab 14 — Indexes & Query Optimization
    ❱
    1. 17.1. References
    2. 17.2. Analysis
    3. 17.3. Execution Guide
    4. 17.4. Observation & Debugging
    5. 17.5. Verification
    6. 17.6. Broader Ideas
    7. 17.7. Step 1 — Secondary index
    8. 17.8. Step 2 — Rule-based planner
    9. 17.9. Step 3 — Cross-language bytes
  23. 18. Lab 15 — SQLite Complete
    ❱
    1. 18.1. References
    2. 18.2. Analysis
    3. 18.3. Execution Guide
    4. 18.4. Observation & Debugging
    5. 18.5. Verification
    6. 18.6. Broader Ideas
    7. 18.7. Step 1 — Pager and rows
    8. 18.8. Step 2 — SQL surface and MVCC
    9. 18.9. Step 3 — Cross-language snapshot
  24. Phase 4 — Consensus Algorithms
  25. 19. Lab 16 — Distributed Fundamentals
    ❱
    1. 19.1. References
    2. 19.2. Analysis
    3. 19.3. Execution Guide
    4. 19.4. Observation & Debugging
    5. 19.5. Verification
    6. 19.6. Broader Ideas
    7. 19.7. Step 1 — Logical clocks
    8. 19.8. Step 2 — Deterministic simulator
    9. 19.9. Step 3 — CLI cross-test
  26. 20. Lab 17 — Raft
    ❱
    1. 20.1. References
    2. 20.2. Analysis
    3. 20.3. Execution Guide
    4. 20.4. Observation & Debugging
    5. 20.5. Verification
    6. 20.6. Broader Ideas
    7. 20.7. Step 1 — Leader election
    8. 20.8. Step 2 — Log replication
    9. 20.9. Step 3 — Cross-test and partition
  27. 21. Lab 18 — Paxos
    ❱
    1. 21.1. References
    2. 21.2. Analysis
    3. 21.3. Execution Guide
    4. 21.4. Observation & Debugging
    5. 21.5. Verification
    6. 21.6. Broader Ideas
    7. 21.7. Step 1 — Single-decree Paxos
    8. 21.8. Step 2 — Multi-Paxos log
    9. 21.9. Step 3 — Cross-language determinism
  28. 22. Lab 19 — ZAB
    ❱
    1. 22.1. References
    2. 22.2. Analysis
    3. 22.3. Execution Guide
    4. 22.4. Observation & Debugging
    5. 22.5. Verification
    6. 22.6. Broader Ideas
    7. 22.7. Step 1 — Epoch and leader election
    8. 22.8. Step 2 — Discovery, sync, and broadcast
    9. 22.9. Step 3 — Cross-language determinism
  29. 23. Lab 20 — Distributed KV Store
    ❱
    1. 23.1. References
    2. 23.2. Analysis
    3. 23.3. Execution Guide
    4. 23.4. Observation & Debugging
    5. 23.5. Verification
    6. 23.6. Broader Ideas
    7. 23.7. Step 1 — Cluster and replica
    8. 23.8. Step 2 — Quorum replication
    9. 23.9. Step 3 — Partitions and catch-up
  30. Phase 5 — Advanced Storage & Capstone
  31. 24. Lab 21 — Advanced Storage Engine
    ❱
    1. 24.1. References
    2. 24.2. Analysis
    3. 24.3. Execution Guide
    4. 24.4. Observation & Debugging
    5. 24.5. Verification
    6. 24.6. Broader Ideas
    7. 24.7. Step 1 — Range tombstones
    8. 24.8. Step 2 — Tiered and universal compaction
    9. 24.9. Step 3 — Cross-language bytes
  32. 25. Lab 22 — Performance & Benchmarking
    ❱
    1. 25.1. References
    2. 25.2. Analysis
    3. 25.3. Execution Guide
    4. 25.4. Observation & Debugging
    5. 25.5. Verification
    6. 25.6. Broader Ideas
    7. 25.7. Step 1 — Counter store
    8. 25.8. Step 2 — Snapshot and workload
    9. 25.9. Step 3 — Bench harness
  33. 26. Lab 23 — Capstone: Distributed Database
    ❱
    1. 26.1. References
    2. 26.2. Analysis
    3. 26.3. Execution Guide
    4. 26.4. Observation & Debugging
    5. 26.5. Verification
    6. 26.6. Broader Ideas
    7. 26.7. Step 1 — Cluster and log
    8. 26.8. Step 2 — Replication and commit
    9. 26.9. Step 3 — Fault injection and catch-up

Distributed Systems Engineer — Build Databases & Consensus From Scratch