[ 
https://issues.apache.org/jira/browse/CASSANDRA-13442?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15972097#comment-15972097
 ] 

Ariel Weisberg commented on CASSANDRA-13442:
--------------------------------------------

bq. if you have three copies and you lose one, no big deal, you still have two 
to restore from. Just two copies? If anything goes wrong with that other copy 
while you repair you are SOL
I just realized you are getting thrown off by RF=3 N=1. That is just an 
example. You can run RF=6 N=2 with 3 replicas in each data center and 
read/write at LOCAL_QUORUM. You still save 1/3 storage.

A lot of use cases are massively over replicated when it comes to simply 
preserving data from hardware failure. Ideally we could use erasure coding, but 
you still need to make strong consistency happen. I think part of the issue is 
that there is a conflation of how we determine what the state should be with 
how we replicate the state.

> Support a means of strongly consistent highly available replication with 
> storage requirements approximating RF=2
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-13442
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13442
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Compaction, Coordination, Distributed Metadata, Local 
> Write-Read Paths
>            Reporter: Ariel Weisberg
>
> Replication factors like RF=2 can't provide strong consistency and 
> availability because if a single node is lost it's impossible to reach a 
> quorum of replicas. Stepping up to RF=3 will allow you to lose a node and 
> still achieve quorum for reads and writes, but requires committing additional 
> storage.
> The requirement of a quorum for writes/reads doesn't seem to be something 
> that can be relaxed without additional constraints on queries, but it seems 
> like it should be possible to relax the requirement that 3 full copies of the 
> entire data set are kept. What is actually required is a covering data set 
> for the range and we should be able to achieve a covering data set and high 
> availability without having three full copies. 
> After a repair we know that some subset of the data set is fully replicated. 
> At that point we don't have to read from a quorum of nodes for the repaired 
> data. It is sufficient to read from a single node for the repaired data and a 
> quorum of nodes for the unrepaired data.
> One way to exploit this would be to have N replicas, say the last N replicas 
> (where N varies with RF) in the preference list, delete all repaired data 
> after a repair completes. Subsequent quorum reads will be able to retrieve 
> the repaired data from any of the two full replicas and the unrepaired data 
> from a quorum read of any replica including the "transient" replicas.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to