Skip to content
About
Main content

NVMe, persistent memory, tape and object storage

What do NVMe, persistent memory, tape and object storage each change in that answer?

NVMe

NVMe is the modern protocol for talking to SSDs over the PCIe bus. It was designed for flash, not inherited from spinning disks.

  • The interface change (many deep , one per CPU core) is the small part. The big point: one NAND chip is slow. The drive is fast only when many chips work at once, across 8–16 channels with several dies each.
  • So governs everything: .

Persistent memory

Persistent memory is byte-addressable like RAM but keeps its contents without power. Intel Optane was the main product.

  • The interesting point was never speed. Persistence and are different boundaries. When your program stores a value, it first lands in the CPU's volatile caches. It is not durable until it reaches the persistent medium. So you need an explicit flush + fence (instructions that push data out of the cache and wait until done), or a platform feature (eADR) that flushes caches when power fails.
  • Only 8-byte stores are atomic (happen fully or not at all). Anything larger needs logging or shadow copies to survive a crash in the middle. Byte-addressable durability does not give you crash-safe structures for free. It gives you the building block and the duty.
  • Intel stopped Optane in 2022. That is a Cause 6 death, not Cause 0: good physics, bad economics. The idea continues in CXL (Compute Express Link, a fast interconnect for attaching memory). With +170–250 ns it is a new tier between RAM and storage, not a replacement for either.

Tape and cold tiers

  • Tape is the bottom of the ladder: one head serves kilometers of ribbon. Lowest cost, coarsest (Cause 2). Everything about tape follows from that ratio.
  • A common myth: real online-tape retrieval takes minutes (mount the cartridge, load, wind to position). The 12–48 hours advertised for cloud archive tiers (such as AWS Glacier Deep Archive) is a batch-scheduling policy: the provider groups requests to use drives efficiently. It is not tape physics.
  • Shoe-shining is Cause 3 in its purest form. If you cannot supply data at the drive's native speed, the drive must stop, reverse and reposition, again and again. collapses and the tape wears. So data is always staged on disk first, then streamed to tape at full speed.
  • Tape's real value is not price per TB. It is offline by default (a real : ransomware cannot reach a cartridge on a shelf) and it fails gracefully. The hidden cost is generation migration: every few years the drives change and the data must be copied to new media.

Object storage

Object storage means cloud services such as Amazon S3, Google Cloud Storage and Azure Blob. You store "objects" (files with a name, called a key) through HTTP calls. Most modern data lakes sit on it.

  • The medium is a network service, so the fixed cost is a round trip, not a machine. Time to first byte () is 20–100 ms and cannot be reduced: DNS lookup, TLS handshake, authentication, metadata lookup. Cause 1 (distance and service depth) dominates.
  • The natural transfer size is roughly 8–100 MB. Worked example (Meera's nightly job): reading a Parquet file as 1,000 small requests costs 1,000 × 50 ms ≈ 50 seconds of pure waiting. The fix is Little's Law: combine small reads into a few large range GETs (HTTP requests for a range of bytes), and run 20–100 of them in parallel.
  • No partial in-place write. You cannot edit byte 500 of an object; you replace the whole object. So, once more: Iceberg is an for object storage. Its manifests are the mapping table (which files form the table now). and snapshot expiry are the . This is the same structure as flash, with latency about three orders of magnitude higher. It is probably the most useful analogy in this whole field.
  • Strong consistency arrived in December 2020 (for S3), but only per object. After a successful write, reading that object returns the new data. But there is no atomic change across objects and no atomic rename. Renaming a "folder" copies every object under that prefix one by one, and it can stop halfway. So every commit protocol on object storage reduces to: get one atomic pointer swap, and make everything else safe to repeat (idempotent).
  • Per-prefix rate limits exist because the metadata layer is itself a partitioned distributed system. When traffic to one key prefix grows, the service must split that partition. This takes ~30–60 minutes, so a sudden burst receives 503 Slow Down errors while it adjusts. The key space is split in alphabetical order, so request capacity follows key distribution, not bucket size: a date-leading key (2026-10-05/shop-1043/event-8841.parquet) puts every reader and writer of the current day into one contiguous range. The fix is entropy near the front of the key (a3f9/2026-10-05/…, with a3f9 a short hash of the shop id), which fights human readability and prefix-based pruning, another interior optimum between two pressures on one granularity. And prefix hotspotting was not "fixed": it was made adaptive, with a time constant of minutes to hours, so the failure moved out of steady state into transients (new partitions, backfills, cutovers), the moments you are least able to slow down.
  • Cost is a physical law here. Per-request pricing punishes small files three times: request fees, the latency floor, and metadata overhead. The "small-files problem" was never only a Hadoop issue.

Same four questions, five answers

Read unitWrite unitReclaim unitFixed costConcurrency neededIn place? →
4 KB sector4 KB sector—~13 ms mechanical1–4Yes (: no → zone map)
NANDpage 4–16 KBpage, in order inside blockblock 4–24 MB~500 µs program / ~5 ms erase~64–128No → FTL + GC
PMEM64 B 64 B (8 B atomic)—~300 nslow; worse above ~4 threadsYes, but flush needed
Tape~MBsequential onlywhole tape30 s – 4 min1No → rewrite
Objectbyte rangewhole objectobject20–100 ms20–100No → manifests + GC

Read the last column from top to bottom: every medium that cannot update in place grew the same architecture. When you meet a new storage medium, ask question 4 first, then look for its mapping table and its garbage collector. They exist.