2015-11-26 6 views
2

Juste en pensant à cela, s'il vous plaît corriger ma compréhension si tout cela n'est pas correct.Apache Cassandra 3.0.0 Vue matérialisée: la clé de partition de la vue peut-elle changer en raison de modifications apportées à la table sous-jacente?

Environnement: Apache Cassandra v3.0.0

Supposons que vous avez une table et une vue matérialisée créée sur elle:

create table source(
id text, field text, stamp timestamp, data text, 
primary key(id, field)) 

create materialized view myview as 
select * from source 
where data is not null and id is not null and field is not null 
primary key (data, field, id) 

Ma compréhension est que myview.data serait essentiellement la clé de partition pour la vue ici (et les données dans source sont automatiquement répliquées par le serveur dans myview?).

Si cela est vrai, ce qui se passe en interne quand une mise à jour de la table est effectuée sur la table et la colonne sourcesource.data est mis à jour?

Répondre

3

J'ai posté ceci à la liste de diffusion de Cassandra et j'ai reçu les deux réponses suivantes qui ont répondu à la question.

Tout devrait fonctionner comme prévu, comme par magie. C'est tout l'intérêt d'avoir MV, pour que Cassandra fasse toute la comptabilité pour vous. Oui, la clé de partition peut changer, ainsi une mise à jour de la table de base peut entraîner la suppression d'une (ou de plusieurs) lignes MV et la création d'une (ou plusieurs) nouvelle ligne MV. Cela ne change pas la clé de partition en soi, mais c'est comme si elle avait été changée et la rangée déplacée. Cela peut en fait entraîner le déplacement de la ligne d'un nœud à un autre si la ou les colonnes utilisées dans la clé de partition MT changent dans la ligne de la table de base.

- Jack Krupansky

Dans le cas d'une mise à jour à la table source où les données sont modifiées, une pierre tombale sera généré pour l'ancienne valeur et un insert sera généré pour la nouvelle valeur. Cela se produit en série pour la partition source, donc s'il y a plusieurs mises à jour sur la même partition, une pierre tombale sera générée pour chaque valeur intermédiaire.

Ce blog a plus de détails: http://www.datastax.com/dev/blog/new-in-cassandra-3-0-materialized-views

-Carl Yeksigian