Two planes: the index says where, storage holds what
Metadata and bytes scale on different axes, so the store splits into an index plane (key → fragment locations) and a data plane (dumb nodes holding fragments) — and a GET resolves the key, reads k fragments, reconstructs if any are missing, verifies, and streams.
Fragments are now spread across failure domains for safety — so something has to remember which storage node holds which fragment. That something is the index plane, and wiring it to the storage nodes gives us the whole read path.
Scene 06
Two planes: the index says where, storage holds what
- Watch
- Try it
- Predict
- Capture
A GET arrives. The Frontend authenticates the request, asks the index plane where this key's fragments live, reads k fragments from the storage nodes in parallel, verifies a checksum, and streams the bytes back. Watch the ribbon walk the path.
Highlighted lines are the ones running in the diagram right now.
def get(bucket, key):authenticate(request)# ask the index plane WHERE the fragments livemeta = index.lookup(bucket, key)if meta is None:return 404 # nothing points at any bytesfrags = read_parallel(meta.locations) # data planeif any_missing(frags):# degraded read: pull parity, solve for the gapfrags = reconstruct(frags, meta.parity)obj = concat(frags)verify(checksum(obj), meta.checksum)return stream(obj)
# the index plane — one tiny row per object# rows scale with OBJECT COUNT, not byte volumedef lookup(bucket, key):shard = route_by_key(bucket, key) # flat keyspacerow = shard.get(key)if row is None:return None # source of truth for existencereturn row # locations, parity, checksum, size
Where this sits in Build an S3-style distributed object store
Scene 06 of 12, in the Keep it alive act — Erasure coding, placement, the two planes, and repair.. Index plane vs data plane; trace a GET (read k, reconstruct, verify, stream) and a PUT's atomic index commit.
Up next. We can now read and write an object — but we still haven't answered the opening mystery of how the nines survive weekly disk death; the plane split is exactly what lets a background loop fix it.
All 12 scenes in Build an S3-style distributed object store · Every curriculum