Каков наилучший подход для обновления неиндексированного обычного столбца (не связанного с первичным ключом) во всех таблицах, содержащих его как дубликат?Как обрабатывать изменение денормализованных данных
i.e пользователь сообщает что-то, и этот пост дублируется во многих таблицах для быстрого извлечения. Но когда это сообщение изменяется (с редактированием), его необходимо обновлять по всей базе данных во всех таблицах, содержащих эту запись (в таблицах с разными и неизвестными основными ключами).
Solutions Я имею в виду:
- Иметь таблицу сопоставителя выследить первичные ключи во всех этих таблицах, но это, кажется, ведет к таблицам взрыва (пост не единственное свойство, которое может изменить).
- Используйте Solr, чтобы сделать сопоставление, но я боюсь, что буду использовать его для неправильной цели.
Любые просвещения будут оценены по достоинству.
EDIT (вымышленная схема).
Что делать, если сообщение изменяется? или даже имя пользователя display_name?
CREATE TABLE users (
id uuid,
display_name text,
PRIMARY KEY ((id))
);
CREATE TABLE posts (
id uuid,
post text,
poster_id uuid,
poster_display_name text
tags set<text>,
statistics map<int, bigint>,
PRIMARY KEY ((id))
);
CREATE TABLE posts_by_user (
user_id uuid,
created timeuuid,
post text,
post_id uuid,
tags set<text>,
statistics map<int, bigint>,
PRIMARY KEY ((id), created)
);
Если вы можете добавить схему таблицы, которая будет полезна. –
Добавлена вымышленная схема. – Droritos
Должны ли мы изменить заголовок на «денормализованные данные» вместо «дублированных данных»? –