Кассандра - это нормально, чтобы обновить столбец таблицы, который также используется для ПК материализованного представления?

Интересно, можно ли изменить значение таблицы, которое также используется в 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 удалит предыдущую запись и вставит обновленную категорию с именем пользователя из материализованного представления.

В Кассандре удалите надгробную плиту

  1. Tombstone занимают место и могут существенно увеличить объем памяти, который вам требуется.
  2. Запросы к таблицам с большим количеством надгробий приводят к проблемам с производительностью, а также к задержке и давлению кучи.

Так что если вы часто обновляете пользовательскую категорию, то будет создан огромный надгробный камень.

Другие вопросы по тегам