Connor Warrington created CASSANDRA-13225:
---------------------------------------------
Summary: Best Consistency Level
Key: CASSANDRA-13225
URL: https://issues.apache.org/jira/browse/CASSANDRA-13225
Project: Cassandra
Issue Type: New Feature
Reporter: Connor Warrington
Priority: Minor
When writing data into a cluster there are a few consistency levels to choose
from. When choosing the consistency level to write with you are making a
tradeoff between consistency and failover availability. If you choose
consistency level ALL then all replicas have to be up and when a write succeeds
all replicas received the write. If you choose consistency level QUORUM then a
quorum number of replicas have to be up and when a write succeeds at quorum
number of replicas received the write. The tradeoff comes in when there are
more then quorum nodes available for the write. We would like a write to
succeed only when all replicas that are up have received the write. Hence the
suggestion of best as a consistency level. This would be available for the
existing consistency levels. The main idea behind this feature request is that
we are okay with a replica going down (fault tolerance) but when the cluster is
in a good state we don't mind waiting for all nodes to get the write. This
would enable the writer to operate at speed of the slowest node instead of
potentially getting into a state where that slow node gets even further behind.
This would also enable back pressure to be better propagated through the system
as the slowest node likely has back pressure which is trying to tell the client
about but if we don't wait for that node the writer loses that information.
Example scenarios:
If we have replication factor of 3:
ALL consistency means 3 replicas have to be up and 3 replicas have to
successfully get the write.
QUORUM consistency means 2 replicas have to be up and 2 replicas have to
successfully get the write.
BEST_QUORUM consistency means 2 replicas have be up and all up replicas have to
successfully get the write.
If 3 replicas are up with replication factor of 3:
ALL would succeed as all 3 replicas are up and would return success when all 3
replicas get the write
QUORUM would succeed as all 3 replicas are up and would return success when 2
replicas get the write
BEST_QUORUM would succeed as all 3 replicas are up and would return success
when all 3 replicas get the write
If 2 replicas are up with replication factor of 3:
ALL would fail as only 2 replicas are up
QUORUM would succeed as 2 replicas are up and would return success when 2
replicas get the write
BEST_QUORUM would succeed as 2 replicas are up and would return success when 2
replicas get the write
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)