Data partitioning: Consistent hashing to distribute keys across nodes.
Replication: Each key stored on nodes (e.g., =). Quorum reads/writes for tunable consistency.
Consistency: W + R > N for strong consistency. W=, R= for eventual consistency.
Failure handling:
- Gossip protocol for failure detection
- Hinted handoff for temporary failures
- Anti-entropy with Merkle trees for permanent failures
Storage: LSM trees for write-heavy workloads. SSTables on disk, memtable in memory.
This is a simplified DynamoDB/Cassandra. Real implementations have more complexity around conflict resolution and compaction.