Skip to content
About
Main content
Recurring principle

Immutable storage grows indirection

An immutable substrate grows an indirection layer plus a collector.

What it is

With perfect knowledge of all future queries, most trade-offs would disappear. You would put each byte in the perfect place. The trade-off exists because you decide with incomplete information. The alternative is to delay the decision, and delay costs an indirection layer that records what you decided later.

This is why one architecture appears again and again, at every scale:

immutable storage → indirection layer → garbage collector

Every medium that cannot update in place grew it: the FTL on flash, zone mapping on SMR disks, manifests on object storage (the table).

Each buys the freedom to place data late, and pays with a lookup table plus a cleanup process. And in each case the garbage collector eventually becomes the operational problem, because delayed decisions pile up.

From Physical Substrate & Performance Laws › Seven root causes

Any strategy that does not overwrite must grow two organs: an indirection layer, so readers can find the current version, and a collector, so the dead can be reclaimed. This convergence appears in SSD translation layers, in LSM trees and in table-format manifests, because it is a root cause below every layer. Its collector has one cost law everywhere: it moves u/(1−u) live bytes for every byte it frees, a price that explodes near full utilization. For a table, that makes the fill target a write-amplification decision, not housekeeping.

From Storage: Physical Organization › Deletes and versions

Where it appears

In 17 mechanisms. Each says what the mechanism is about, then how this principle shows up there, in its own words.

Made on the same pages most often.