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



















