📖 Storage & Persistence
Storage Hardware
| Type |
Latency |
Throughput |
Notes |
| HDD |
5-10ms |
100-200 MB/s |
Seek time dominates |
| SSD (SATA) |
100μs |
500 MB/s |
Random reads fast |
| NVMe |
20μs |
3-7 GB/s |
Parallel queues |
| Memory |
100ns |
50+ GB/s |
Volatile |
Write-Ahead Log (WAL)
- Purpose: Durability before data modification
- Append-only: Sequential writes, fast on all storage
- Recovery: Replay log to reconstruct state
- Checkpointing: Truncate log after persistent snapshot
fsync Semantics
- fsync(): Flush file data + metadata to disk
- fdatasync(): Flush data only (faster)
- Cost: Milliseconds (SSD) to tens of ms (HDD)
- Batching: Group writes, single fsync → throughput vs latency
LSM Trees (High-Level)
- Write path: Memtable (memory) → SSTable (disk)
- Read path: Check memtable, then SSTables (bloom filters)
- Compaction: Merge SSTables, remove tombstones
- Use cases: Cassandra, RocksDB, LevelDB