proomt

Search

Search posts, papers, and topics

Hall of Fame

Hall of FameMartin Kleppmann201515 min readintermediate

Please stop calling databases CP or AP

Summary

Martin Kleppmann argues that the CAP theorem is too narrow and widely misunderstood to be useful for describing modern databases, because its definitions of consistency, availability, and fault model are restrictive. He recommends retiring CP/AP labels and using precise, system‑specific trade‑off definitions instead.

  • CAP defines consistency as linearizability, not the ACID C, and availability as every non‑failing node must respond.
  • The theorem only models a single register and only considers network partitions, ignoring crashes, disk failures, and latency.
  • Many “high‑availability” systems do not satisfy CAP’s strict availability definition, making CP/AP labels misleading.
  • Providing linearizable semantics requires costly coordination; it is not a free property.

Database engineers and architects should care because relying on CAP labels can obscure real trade‑offs and lead to suboptimal design decisions.

6/10

Related reading

  1. A Critique of ANSI SQL Isolation Levels

    This 1995 paper critiques ANSI SQL-92 isolation levels, arguing their definitions based on "phenomena" are ambiguous and fail to characterize common locking implementations and other important isolation types like Snapshot Isolation. It proposes clearer definitions and new phenomena to address these shortcomings.

    Hall of Famemicrosoft.com35 minpaperHN7612
  2. Constraint Decay: The Fragility of LLM Agents in Backend Code Generation

    A systematic evaluation of LLM agents generating multi‑file backend code shows a sharp drop in correctness when structural constraints (framework conventions, ORM usage, API contracts) are added. Across 100 tasks in 8 Python web frameworks, assertion pass rates fall ~27 points, with data‑layer bugs (bad queries, ORM violations) driving most failures. Mid‑size models cope with minimal frameworks (…

    arXiv cs.SE (Software Engineering)arxiv.org1 minpaperHN287197
  3. Relation algebra is not relational algebra

    The post clarifies the long‑standing confusion between *relation algebra* (a mathematical logic framework equivalent to FOL³) and *relational algebra* (Codd’s query language foundation). It outlines their histories, theoretical differences, and recent CS applications such as Alloy and the Prela query language, urging the community to adopt the term “Tarski’s Algebra of Relations” (TAR) to avoid m…

    Lobstersremy.wang2 minHN9lobste.rs26
  4. Article: Your Next DSL Author Is a Language Model

    Typed Domain Grounding (TDG) embeds a DSL inside a mainstream language the LLM already knows (e.g., Kotlin) and uses the host compiler as an oracle. The author describes five building blocks—embedding, choosing a host language with high training‑data frequency, compiler‑driven type safety, a generate‑compile‑repair loop, and an on‑demand teaching tool—and shows measured results from kUML, a Kotli…

    InfoQinfoq.com18 min