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

Benedict commented on CASSANDRA-6477:
-------------------------------------

I must admit, I'm becoming less and less convinced by the idea (admittedly my 
own) of proxying on to only one node. From an availability perspective, it 
seems very likely to induce a persistent mismatch between the base and MV 
replicas. We only need two node failures anywhere in the cluster, and we pretty 
much guarantee that portions of the base table and the MV begin to diverge at 
QUORUM with vnodes (even without vnodes, the chance is 1/RF). 

Since every node is a base replica and an MV replica, with vnodes we are likely 
to be replicating portions of our share of the base table on to every other 
node in the cluster as an MV replica: 
* for any single token range we will have picked a single node A to share with;
* however, we cannot be certain that for every token range that replicates to A 
we will select A, as this would require a great deal of cooperation and forward 
planning (if it is even possible at all; I'm not sure we can guarantee it 
without incorporating it into a token allocation strategy, but I haven't 
thought about it extensively)
* as such, for any node we must assume it replicates to vnode distinct nodes 
(actually a little fewer, ala birthday paradox, but for simplicity let's assume 
the worst), which typically will mean the whole cluster
* so, if we lose any two nodes, one of those nodes will be a base replica, and 
the other will be an MV replica _that is paired with one of the other base 
replicas_ for one of the token ranges in the cluster
* so, we will reach QUORUM for the base replica, but not for the affected MV 
replica token range



> Materialized Views (was: Global Indexes)
> ----------------------------------------
>
>                 Key: CASSANDRA-6477
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6477
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: API, Core
>            Reporter: Jonathan Ellis
>            Assignee: Carl Yeksigian
>              Labels: cql
>             Fix For: 3.0 beta 1
>
>         Attachments: test-view-data.sh, users.yaml
>
>
> Local indexes are suitable for low-cardinality data, where spreading the 
> index across the cluster is a Good Thing.  However, for high-cardinality 
> data, local indexes require querying most nodes in the cluster even if only a 
> handful of rows is returned.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to