{
  "slug": "cap-theorem",
  "term": "CAP theorem",
  "aliases": [
    "Brewer's theorem",
    "Consistency, availability and partition tolerance"
  ],
  "definition": "The CAP theorem rules out guaranteeing both linearizable read/write behavior and completion of every read/write request received by a non-failing node when communication may remain partitioned.",
  "note": "Formal scope: Gilbert and Lynch consider a read/write object in an asynchronous network that can lose arbitrarily many messages. Availability requires eventual operation completion, without a fixed response-time bound; consistency means linearizability, not a general claim about database constraints. [gilbert-lynch]\n\nInterpretation: The result depends on the service specification. A constant-returning service requiring no coordination is outside this read/write impossibility. A reachable majority serving requests does not establish completion for clients at every non-failing component. [cap-perspectives]\n\nDesign: Choosing two letters is not a complete storage contract. Brewer recommends explicit partition behavior and recovery planning; choices can differ by operation or data. Neither the theorem nor an availability label establishes crash durability. [brewer-cap]\n\nOperational boundary: A response-time budget can trigger partition handling on a slow but connected network. Nodes need not make this decision simultaneously; a timeout is not proof of physical disconnection. [brewer-cap]",
  "related": [
    "network-partition",
    "linearizability",
    "storage-availability",
    "quorum-intersection",
    "data-durability",
    "calm-theorem",
    "invariant-confluence"
  ],
  "status": "unknown",
  "advantages": [],
  "limitations": [],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "updated": "2026-11-10",
  "citations": [
    {
      "id": "gilbert-lynch",
      "title": "Gilbert and Lynch. Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services (2002), sections 2.1-2.3 and 3.1.",
      "url": "https://www.comp.nus.edu.sg/~gilbert/pubs/BrewersConjecture-SigAct.pdf",
      "accessed": "2026-11-10"
    },
    {
      "id": "cap-perspectives",
      "title": "Seth Gilbert and Nancy A. Lynch. Perspectives on the CAP Theorem (2012), section 2.",
      "url": "https://groups.csail.mit.edu/tds/papers/Gilbert/Brewer2.pdf",
      "accessed": "2026-11-10"
    },
    {
      "id": "brewer-cap",
      "title": "Eric Brewer. CAP Twelve Years Later: How the Rules Have Changed. Computer, February 2012, pp. 23-25.",
      "url": "https://sites.cs.ucsb.edu/~rich/class/cs293b-cloud/papers/brewer-cap.pdf",
      "accessed": "2026-11-10"
    },
    {
      "id": "hesela-partition-policy",
      "title": "Hesela: Storage fencing, CAP and partition-time operation policy",
      "url": "https://hesela.com/analyses/storage-fencing-stale-writes/#cap-operation-policy",
      "accessed": "2026-11-10"
    }
  ],
  "provenance": [
    "Primary-source synthesis of the formal read/write model and its design implications; not a cluster experiment or product classification."
  ]
}
