Кассандра - это нормально, чтобы обновить столбец таблицы, который также используется для ПК материализованного представления?
Интересно, можно ли изменить значение таблицы, которое также используется в PK материализованного представления? Если все в порядке, я буду признателен, если кто-то может объяснить, как это работает (вставить и удалить?)
Например, имея следующие таблицы:
CREATE TABLE users (
id uuid,
username text,
category int,
created timestamp,
PRIMARY KEY (username) //Show users ASC
)
CREATE MATERIALIZED VIEW category_username AS
SELECT username, category
FROM keyspace.users
WHERE username IS NOT NULL AND category IS NOT NULL
PRIMARY KEY (category, username); //Show users by category ASC
Затем я изменяю категорию пользователя на другую, отличную от той, которая у него есть на данный момент:
UPDATE keyspace.users
SET category = 'SomeUniqueInt'
WHERE username = 'IAmGroot' IF EXISTS;
Будет ли соответствующим образом обновлено имя категории_пользователя?
Это оценка этого вопроса.
1 ответ
Решение
Аналогично обычной таблице Cassandra удалит предыдущую запись и вставит обновленную категорию с именем пользователя из материализованного представления.
В Кассандре удалите надгробную плиту
- Tombstone занимают место и могут существенно увеличить объем памяти, который вам требуется.
- Запросы к таблицам с большим количеством надгробий приводят к проблемам с производительностью, а также к задержке и давлению кучи.
Так что если вы часто обновляете пользовательскую категорию, то будет создан огромный надгробный камень.