Price an access pattern
The crossover between sequential and random I/O for a stated seek time and bandwidth, a B-tree’s height and the I/Os a lookup and a range scan cost, and the I/O count of a workload mix on a hash index against a tree.
Every storage engine is a bargain between reads, writes and space, and the bargain is countable: seeks against bytes, tree levels against fanout, bytes rewritten per byte ingested, bits per key for a Bloom filter, fsyncs per second. The course prices each structure so that “use an LSM” or “add an index” becomes a number a designer can defend.
Overview
By the end you can price a read and a write against the structure that serves them, compute the amplification an LSM pays for its sequential writes, size the filter that cancels most of it, and say what your backup schedule means in bytes and in hours.
The crossover between sequential and random I/O for a stated seek time and bandwidth, a B-tree’s height and the I/Os a lookup and a range scan cost, and the I/O count of a workload mix on a hash index against a tree.
The k + 1 random writes an insert costs with k indexes, the write amplification of a levelled LSM at a given fanout, and the compaction bandwidth that amplification implies.
Bits per key at a target false-positive rate, the memory that costs for n keys, and the read amplification a filter on every level turns L into.
The RUM triple for three engine shapes, the durable write rate a single fsync allows and what grouping buys, and the RPO and RTO a backup schedule and a restore bandwidth imply.
Lessons
The physics first — what a seek costs and what a tree height is — then the write side, then the filter and the trade-off the course is named after, and last what a running engine owes its hardware: the fsync, the layout, the page cache and the recovery window.
Capacity estimation and caching and hit rates on this path; discrete mathematics: trees, independence, recursion-trees-and-amortised-analysis, big-o-notation; algebra: what-a-logarithm-is, change-of-base, the-number-e.
Convert everything into I/Os before comparing structures. Bytes and seconds make two engines look similar; I/O counts make the bargain visible, and every lab on this course reports in them.
Compute the amplification before the latency. Write amplification decides how much disk bandwidth you need and therefore whether the latency question is even interesting — an engine whose compaction cannot keep up has no steady latency to quote.
Take “Working Set and the Page Cache” as a callback rather than as new material. It is the cache of Caching and Hit Rates under different names, and the point of it is that you already know how to size one.
Isolation levels, query planning, and any particular product’s internals. The structures here are shapes, and every figure is a ratio rather than a benchmark.
The derivation of the Bloom filter’s false-positive rate and its optimal k. Both are stated in “Bloom Filters: Bits per Key” and derived in “Bloom Filters” on the Algorithms path, which owns them along with the rule that a filter supports no deletion.
Compression algorithms. The ratio is an input on this course; the break-even it feeds — whether the processor time a codec costs is worth the bytes it saves — is “Compress or Not” in Scaling Laws and Cost.