Skip to content
About
Main content
Trade-off

Read-optimized vs. write-optimized

Where you meet it: B-tree vs. LSM, merge-on-read vs. copy-on-write.

What it is

Writing is easy if you do not care where data lands: add it at the end. Reading needs to know where things are, which needs structure (sorting, an index). And structure must be kept up to date when data changes. So the work of "knowing where things are" is paid at write time, at read time, or in space.

This three-way trade is the RUM conjecture (Read, Update, Memory — you can optimize at most two). It explains why read-optimized and write-optimized designs are opposites, and why every physical layout is a bet on an access pattern: data sorted by user_id is not sorted by timestamp.

From Physical Substrate & Performance Laws › Seven root causes

You will often meet the RUM conjecture: you can optimize at most two of Read cost, Update cost and Memory (space) overhead, never all three. Use it as a compass, but know what kind of claim it is. It is a conjecture, stated as such by its authors (Athanassoulis et al., 2016), and it has no proof. In some situations all three improve at once. For example, better compression helps read cost and memory together, and dictionary encoding can help updates too. RUM is a strong pattern at the frontier of what is possible, not a law of nature.

From Storage: Physical Organization › Data at rest and the one ratio

Where it appears

In 11 mechanisms. Each says what the mechanism is about, then how this trade-off shows up there, in its own words.

Made on the same pages most often.