Salut en fait, je travaille avec Cassandra sur un projet, mais j'ai un problème avec les vues matérialisées dans un moment expliquer mes paramètres dans Cassandra et le problème.Pourquoi les vues matérialisées par mes vues ne reflètent-elles pas ces changements?
J'ai deux instances dans Google Cloud, chaque instance a un nœud avec les exigences suivantes:
- Version Cassandra 3.10.0
- version CQLSH 5.0.1
Sur le serveur
- 1 cœur-CPU Haswell
- 6.5GB RAM
- HDD 240GB
- Ubuntu Server 16.04.2 LTS
Chaque fois que je mets à jour une table qui a des vues materilized, l'ancien est mis à jour correctement, mais les vues matérialisées ne reflètent pas ces changements.
Un exemple de table qui se comporte comme cela a 23 champs:
- 4 champs pour les clés de séparation et de regroupement
- 12 champs de données
- 7 champs pour les drapeaux qui sont utilisés comme conditions pour la vue matérialisée définition
- 8 index secondaires appliquent un nombreux domaines
La vue matérialisée Copie seulement 12 champs de la table d'origine et les drapeaux ne sont pas inclus sur ceux-ci.
MODIFIÉ
Exemple d'une phrase de vue matérialisée:
CREATE MATERIALIZED VIEW IF NOT EXISTS sav.laboratorio_unidad AS
SELECT unidad_politecnica, seccion_politecnica, modulo, datos_modificados, /* Primary Key */
tipo, id_contacto, contacto, foto, descripcion,
area, palabra_clave, sector_impacto /* Clasificación */
FROM sav.laboratorio
WHERE tipo IS NOT NULL
AND unidad_politecnica IS NOT NULL
AND seccion_politecnica IS NOT NULL
AND modulo IS NOT NULL
AND datos_modificados IS NOT NULL
AND creada_sin_mostrar = false
AND datos_modificados = false
AND validado = true
AND modificado IS NOT NULL
AND revisado IS NOT NULL
AND eliminacion = false
AND revalidado IS NOT NULL
PRIMARY KEY ((unidad_politecnica), seccion_politecnica, tipo, modulo, datos_modificados);
Est-ce le DESCRIBE de ma table
CREATE TABLE sav.laboratorio (
unidad_politecnica text,
seccion_politecnica text,
modulo text,
datos_modificados boolean,
actualizado timestamp,
area set<text>,
certificado set<frozen<prueba>>,
contacto frozen<contacto>,
creada_sin_mostrar boolean,
creado timestamp,
descripcion text,
eliminacion boolean,
equipamiento frozen<equipo>,
foto frozen<archivo>,
id_contacto uuid,
modificado boolean,
palabra_clave set<text>,
revalidado boolean,
revisado boolean,
sector_impacto set<text>,
solicitud_eliminacion boolean,
tipo text,
validado boolean,
PRIMARY KEY (unidad_politecnica, seccion_politecnica, modulo, datos_modificados)
) WITH CLUSTERING ORDER BY (seccion_politecnica ASC, modulo ASC, datos_modificados ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
CREATE INDEX laboratorio_creado_sin_mostrar_index ON sav.laboratorio (creada_sin_mostrar);
CREATE INDEX laboratorio_solicitud_eliminacion_index ON sav.laboratorio (solicitud_eliminacion);
CREATE INDEX laboratorio_id_contacto_index ON sav.laboratorio (id_contacto);
CREATE INDEX laboratorio_revisado_index ON sav.laboratorio (revisado);
CREATE INDEX laboratorio_validado_index ON sav.laboratorio (validado);
CREATE INDEX laboratorio_actualizado_index ON sav.laboratorio (actualizado);
CREATE INDEX laboratorio_modificado_index ON sav.laboratorio (modificado);
CREATE INDEX laboratorio_revalidado_index ON sav.laboratorio (revalidado);
CREATE MATERIALIZED VIEW sav.laboratorio_unidad AS
SELECT unidad_politecnica, seccion_politecnica, tipo, modulo, datos_modificados, area, contacto, descripcion, foto, id_contacto, palabra_clave, sector_impacto
FROM sav.laboratorio
WHERE tipo IS NOT NULL AND unidad_politecnica IS NOT NULL AND seccion_politecnica IS NOT NULL AND modulo IS NOT NULL AND datos_modificados IS NOT NULL AND creada_sin_mostrar = false AND datos_modificados = false AND validado = true AND modificado IS NOT NULL AND revisado IS NOT NULL AND eliminacion = false AND revalidado IS NOT NULL
PRIMARY KEY (unidad_politecnica, seccion_politecnica, tipo, modulo, datos_modificados)
WITH CLUSTERING ORDER BY (seccion_politecnica ASC, tipo ASC, modulo ASC, datos_modificados ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
Désolé, mais ma table a été écrit en espagnol
MISE À JOUR
Lorsqu'une instruction INSERT est exécutée avec des valeurs qui satisfait aux compte tenu des conditions, la table et la vue matérialisée reflète les changements correctement. Le problème survient lorsqu'une instruction INSERT avec des valeurs non valides est exécutée, puis une instruction UPDATE est exécutée afin de rendre les valeurs conformes aux conditions données de la vue matérialisée; dans ce cas, les modifications sont reflétées dans la table mais ne sont pas répercutées sur la vue matérialisée.
Ce flux de travail est nécessaire compte tenu des exigences du projet.Dans ce cas, lors de l'exécution et de l'instruction INSERT, il n'est pas nécessaire d'afficher les valeurs dans la vue matérialisée jusqu'à ce que l'instruction UPDATE avec les valeurs correctes soit exécutée, ceci est une validation des données avec des indicateurs booléens. utiliser la vue matérialisée pour cacher ou montrer les données. Quelque chose à noter est que nous utilisons un seul espace de touches avec 40 tables et 19 vues matérialisées, 10 vues matérialisées ont le même problème.
Montrez votre table de base schéma –