Database Design • Key-Value Stores (Redis, DynamoDB)Medium⏱️ ~3 min
Consistency Models and Conflict Resolution Strategies
Key value stores span a spectrum from strong consistency to eventual consistency. The tradeoff is fundamental: strong consistency guarantees correctness but adds 50+ milliseconds of latency for synchronous replication and may refuse writes during network partitions. Eventual consistency serves reads in 5 milliseconds or less but risks stale reads and requires conflict resolution when concurrent writes occur.
Last writer wins based on timestamps is the simplest conflict resolution but depends critically on clock synchronization. Clock skew of even 100 milliseconds can cause newer writes to appear older and get dropped. DynamoDB global tables use last writer wins for multi region active active replication with typical cross region propagation under one second, accepting that clock skew may occasionally lose concurrent updates. Production systems using last writer wins must run Network Time Protocol (NTP) or Precision Time Protocol (PTP) to keep clocks within milliseconds.
Vector clocks avoid false overwrites by tracking causality: each replica maintains a version counter per writer. When replicas diverge, the system detects concurrent writes (neither vector clock dominates) and preserves both versions for application level reconciliation. This prevents data loss but vector clocks can grow in size with many writers and require custom merge logic. Amazon shopping cart famously used vector clocks, letting the application merge concurrent cart additions rather than silently dropping items.
Conflict free Replicated Data Types (CRDTs) guarantee convergence without coordination by using commutative merge functions. A grow only counter where each replica increments independently and reads sum all replicas always converges. A last writer wins register with timestamp merging is a simple CRDT. However, CRDTs may not capture business invariants like bounded counters (preventing negative inventory) without careful design, and some operations like set subtraction require tombstones that accumulate over time.
💡 Key Takeaways
•Strong consistency adds 50+ milliseconds latency for synchronous replication and may refuse writes during partitions; eventual consistency serves in 5 milliseconds but requires conflict resolution
•Last writer wins depends on clock synchronization: even 100 milliseconds of clock skew can drop newer concurrent writes; requires Network Time Protocol within milliseconds accuracy
•Vector clocks track causality per writer preventing data loss from concurrent updates but grow in size with many writers and require application level merge logic
•Conflict free Replicated Data Types (CRDTs) guarantee convergence via commutative operations but may not capture business invariants like bounded counters without careful design
•DynamoDB global tables use last writer wins for multi region replication with sub second propagation accepting occasional concurrent write losses from clock skew
📌 Examples
Amazon shopping cart uses vector clocks to detect concurrent cart additions from different devices, preserving all items for application merge rather than silently dropping updates
DynamoDB global tables replicate across regions with last writer wins resolving conflicts based on timestamps, typical cross region propagation under one second
Uber rate limiting uses grow only counter CRDTs where each cell increments independently and reads sum across replicas, converging without coordination at sub millisecond latency