Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Topic 1 — Notes

Numbers from this machine (Apple Silicon, macOS). Record why, not just what.

Predictions (write BEFORE running the shootout)

Per README §7 — predict the winner and the mechanism, then let the data grade you:

WorkloadPredicted winnerPredicted mechanismVerdict
fillrandom
fillseq
readrandom (zipf)
readrandom (uniform)
scan
space amp

Shootout results

(engine versions: fjall 2.x, redb 2.6 — pin exact versions from Cargo.lock here; durability parity: fjall PersistMode::Buffer vs redb Durability::None.)

  • First smoke run (cargo run --release 20000): both engines report ~15x “space amplification” — at 20K × 108B (2.2MB logical) the number is fixed overhead (fjall’s preallocated journal, redb’s initial region sizing), not amplification. Lesson from topic 0: measure at a size where the effect dominates the floor. Re-run at n=1M+ for the real number.

Papers

O’Neil ’96 — LSM-Tree

(questions from reading-lsm-paper.md)

Comer ’79 — The Ubiquitous B-Tree

(questions from reading-comer-btree.md)

RUM Conjecture (EDBT ’16)

(questions from reading-rum-conjecture.md — place shootout results on the triangle)

Architecture of a DBMS (2007)

(questions from reading-architecture-of-a-dbms.md)

Code reading

fjall

turso btree/pager

tidesdb

RocksDB layout

M1 — storage backend abstraction

Design rationale lives in capstone/notes/m1-backend-design.md; comparison with the reference graph/src/storage/backend.rs goes there too (only AFTER the design).