6 Consistency Guarantees

  • Strong Consistency
    • See all previous writes
  • Eventual Consistency
    • See (any) subset of previous writes
    • Weakest
  • Consistency Prefix
    • See an ordered sequence of writes starting with the first write
    • The read result exist at some point in the master
  • Bounded Staleness
    • See all “old” writes
      • e.g. See all writes more than 5 minutes ago
  • Monotonic Reads
    • See increasing subset of writes
    • Similar to eventual consistency
      • Later read return more recently value
  • Read my write
    • See all writes performed by reader

Strength of consistency guarantee

  • Defined by the size of the set of allowable results
  • Strong consistency
    • Set size = 1 (only the latest value)
  • Eventual Consistency
    • Set size = large (any value)

In-Class

Linearizability

  • Strong consistency, single copy
  • All ops seen in same global order
  • Global order determined by real time
  • if a completes before b begins, a ordered before b
  • else a + b are concurrent
  • Simpler to reason about
  • Poor performance

Sequential Consistency

  • All ops totally ordered but no real-time ordering
    • linearizable w/o realtime
  • Ops from one client are ordered in program order

Causal Consistency

  • No total order seen by all clients
  • Causally-related ops: same order observed by all clients