Skip to content
About
Main content

What consistency forbids

What can no consistency design give, and what does each escape cost?

What this mechanism forbids

Physical and permanent (no engineering removes these):

  • Local reads and local writes under any model at or above (r + w ≥ d).
  • Linearizable operations cheaper than the delay uncertainty (u/4, u/2).
  • with total under a .
  • , repeatable read, serializability, global uniqueness, or bounded-value under total availability.
  • A coordination-free implementation of any non-monotone computation.

Structural (follow from definitions):

  • A total order over the standard names.
  • Serializability implying recency, or linearizability implying multi-object atomicity.
  • Composition of serializability, of sequential consistency, of per-request quorum levels, or of across a component that drops the token.
  • An isolation level that prevents without tracking reads.
  • prevention without a or .
  • without either arbitration (losing writes) or an algebra (restricting operations).
  • collection without global knowledge.
  • capturing causality that left the system.
  • Recency from R + W > N alone.

Epistemic (about what can be known):

  • Falsifying "eventually" in finite time.
  • Detecting any violation from inside a single node.
  • Cheap verification of linearizability.
  • A level name meaning the same thing in two engines.

Escapes and what each costs

EscapeBuysPays
the operationLevel-independence; coordination becomes optionalOnly exists where an algebra does; bounds it
Single-row constraintFree enforcement at any levelThe invariant must fit in one row
Shrink the read-to-write up to 10^4 times (typically 10^3) fewer Logic must move into the engine
/ version checkLost-update immunityBlocking, or a retry loop with an owner
Snapshot isolationNon-blocking readers, no read trackingWrite skew, and non-compositional analysis
Write-skew immunity under SIFalse conflicts; it rots as code is added
()Compositional correctnessFalse , read-tracking memory
Route reads to the leaderLinearizability, simplyOne : geography and availability
Lease-based local readsLocal linearizable readsAn unverifiable clock bound; silent failure past it
A guarantee you can alarm onA negotiated number, stated in public
Availability with sane orderingMetadata growing in writers; blindness to out-of-band edges
Session tokensPer-client sanity, cheaplyA token every component must carry, and one eventually will not
CRDTLocal reads and writes, convergentAn algebra you must fit; tombstones; a collector needing consensus
(escrow)A bounded invariant without per-operation coordination; coordination at rate consumption/slack
Buy tighter clocksShorter wait, Money, the only axis in a different unit
Weaken the levelThroughput and availabilityApplication code nobody knows they own

Notice that : each "buys" is paid for in the next column, and the payer is often someone who was not in the meeting.

(Why up to 10^4? Moving a read-modify-write from application code, where the gap between read and write is about 1 to 100 ms, into one statement inside the engine, where the gap is about 10 to 100 µs, shrinks the window by a factor of 10 to 10^4, typically about 10^3. By Little's rule, anomalies shrink by the same factor.)