其實我在cassandra上的一個項目上工作,但是我在一瞬間解釋了我在cassandra和問題中的設置時遇到了物化視圖的問題。爲什麼我的觀點物化視圖不反映這些變化?
我有兩個實例在谷歌雲,每個實例有下一個需求的節點:
- 卡桑德拉版本3.10.0
- CQLSH版本5.0.1
在服務器
- 1核-CPU Haswell
- 6.5GB RAM
- HDD 240GB
- Ubuntu服務器16.04.2 LTS
每當我更新已materilized意見表,前者被正確地更新,但物化視圖不反映這些變化。
錶行爲類似這個的例子具有23個字段:用於分區和聚類鍵
- 4字段
- 12字段被用作條件數據
- 7字段標誌物化視圖定義
- 8二級索引應用許多領域
物化視圖只從原始表中複製12個字段,並且這些標誌不包含在這些字段中。
修改的物化視圖句子
例子:
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);
是在DESCRIBE我的表
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';
對不起,但我的表是寫在西班牙語
當一個INSERT語句與滿足給定的條件值執行修訂
,表和物化視圖恰當地反映了變化。
問題是何時執行帶有無效值的INSERT語句,然後執行UPDATE語句以使值滿足matryize視圖的給定條件;在這種情況下,這些更改會反映在表中,但不會反映在實體化視圖中。
考慮到項目的要求,此工作流程是必不可少的。
在這種情況下,當執行和INSERT語句時,不需要在實例化視圖中顯示值,直到執行具有正確值的UPDATE語句爲止,這是使用一些布爾標誌驗證數據並且我們想要利用物化視圖來隱藏或顯示數據。
需要注意的是,我們正在使用具有40個表和19個物化視圖的單個鍵空間,10個物化視圖具有相同的問題。
顯示您的基本表架構 –