Labs
Each lab takes under an hour on a laptop and turns a claim from this mechanism into a number you measured yourself.
- 1
Anomaly count equals rate times window
Count conflicting operations inside a window and compare with λ × W, from one SQL statement to replica lag under load.
SimulatePython with NumPy - 2
Measure the Dekker pattern and the price of `r + w ≥ d`
Two regions with an 80 ms delay run the Dekker test: local reads and writes can both read 0; only waiting for the other copy removes it.
Simulate · Break itPython - 3
Count the shapes with a tiny dependency-graph checker
Build ww, wr and rw edges from small histories and classify lost update, write skew and read skew by their cycles.
SimulatePython - 4
Reproduce the lost update at Read Committed, then fix it three ways
Lose an update under Read Committed in PostgreSQL, then fix it four ways.
Real system · Break itDocker, Python - 5
Same name, different promise: compare engines
One phantom test at the level PostgreSQL and MySQL both call Repeatable Read, with different results.
Real system · Break itDocker, Python - 6
Write skew under Repeatable Read, and the two cures
Two transactions each check a total, then withdraw from different accounts: write skew under Repeatable Read, and the two cures.
Real system · Break itDocker, Python - 7
Read-your-writes with a replica, and a lost token
Write on a PostgreSQL primary, read from a lagging replica, then carry a log-position token, then lose it.
Real system · Break itDocker, Python - 8
Anomaly rate equals window times rate
Stale reads from a lagging replica against λ × W, for three lags, then reads routed to the primary after a write.
Real systemDocker, Python - 9
LWW versus a G-counter under clock skew
Three replicas, one clock 3 s ahead, 1,000 increments: last-writer-wins and max lose them; a G-counter keeps all.
SimulatePython - 10
R + W > N is not recency
A toy N = 3 register: a failed W = 2 write leaves reads with R = 2 going back and forth.
SimulatePython - 11
Count I-confluence in your own schema
Classify every constraint of a schema as invariant-confluent or not, and price the escrow for its bounds.
SimulatePython - 12
Run an Elle-style check on your own database
A list-append workload against PostgreSQL at three isolation levels, with the dependency graph rebuilt and searched for cycles.
Real system · Break itDocker, Python