liveBook · Manning

Consistency

As explained in ScyllaDB in Action

Consistency is the property that data observed through a system conforms to its specified rules for ordering and validity across replicas or operations.

Consistency describes how strongly a query requires replicas to agree before it succeeds. In a distributed ScyllaDB cluster, data is copied across nodes, so a request can favor the most up-to-date answer or favor getting an answer despite node failures. The database is eventually consistent: replicas can temporarily disagree while converging toward correctness over time. section 1.1.3 section 1.2.1

Consistency is tunable per query. Stronger settings require more replica acknowledgments and reduce the chance of inconsistent results, but make a request less available when nodes are down. Weaker settings keep serving requests through more failures, with a greater chance of reading data that has not yet converged. section 1.2.1 section 8.1

For a key with three replicas, common choices are:

  • ALL requires all three replicas. It provides the strongest listed requirement but tolerates no node failure. section 1.2.1
  • QUORUM requires a majority: two replicas. It tolerates one failed node while requiring both reads and writes to reach a majority. section 1.2.1
  • ONE requires one replica. It tolerates two failed nodes but increases the likelihood of inconsistent results. section 1.2.1
Table 1.1 Sample of consistency level options, assuming a cluster with three replicas
Consistency level
Description
Number required to succeed
Failures tolerated
ALL
Requires all replicas to succeed
3
0
QUORUM
Requires a majority of replicas to succeed
2
1
ONE
Requires a single replica to succeed
1
2

Compare the acknowledgment requirements and failures tolerated by ALL, QUORUM, and ONE in a three-replica cluster. section 1.2.1

QUORUM is a practical default when an application needs both data correctness and room for a node failure. ScyllaDB generally favors availability and partition tolerance, so weaker consistency can preserve service when coordination would otherwise make a query unavailable. This differs from relational ACID guarantees, where the database is valid after every transaction; ScyllaDB uses BASE guarantees including eventual consistency. section 1.4 section 1.2.2

Set consistency on application queries

Consistency is a query-level setting. A Python application can assign LOCAL_QUORUM to each prepared statement so every use shares that policy, then bind a particular statement and override it with LOCAL_ONE when that execution needs a weaker setting. Prepared statements provide a convenient default; bound statements provide per-execution flexibility. section 10.5.1 section 10.5.1

How ScyllaDB in Action covers it

How deep it goes
Explains eventual consistency, replica acknowledgments, ALL/QUORUM/ONE, and query-level driver configuration without detailing consensus internals.
Examples
Compares three-replica ALL, QUORUM, and ONE requests and configures LOCAL_QUORUM or LOCAL_ONE in Python statements.
What it assumes
Introduces quorum through a majority analogy while assuming a replicated, multi-node cluster.
What you can do after
Apply it via prepared and bound statements to choose and override query consistency levels.
How it connects
Connects consistency to replication, availability, fault tolerance, CAP theorem, ACID, BASE, and prepared statements.

Also explained in

Compare how 20 books explain consistency →

Related concepts

This explainer was generated by Manning's knowledge graph from the text of ScyllaDB in Action. The section links point to the parts of the book it draws on.