Предпочтительно ли, чтобы поля высокой активности в Cassandra существовали в их собственной таблице?

#cassandra #nosql

Вопрос:

Допустим, я внедряю систему форумов (давайте подумаем о чем-то вроде Reddit или даже ТАК), которая поддерживается Кассандрой.

Сообщение содержит несколько полей, таких как содержимое, метка времени и т. Д., Плюс a rating (голоса вверх и вниз). Записи поддерживаются таблицей ЗАПИСЕЙ. Давайте предположим, ради аргумента, что мне все равно, какие конкретные пользователи проголосовали за повышение или понижение, меня просто волнует общий рейтинг публикации.

Мне интересно, есть ли какое-либо преимущество в хранении рейтингов в таблице РЕЙТИНГОВ (post_id, рейтинг) вместо того, чтобы просто использовать ее в качестве поля в СООБЩЕНИЯХ, учитывая, что все время будет происходить много повышений / понижений.

Учитывая архитектуру Кассандры, каковы были бы плюсы и минусы выбора одного подхода по сравнению с другим?

Ответ №1:

Размещение рейтинга в другой таблице не имеет смысла, так как, похоже, вы будете использовать один и тот же ключ раздела для обеих таблиц (СООБЩЕНИЙ и ОЦЕНОК). Вы всегда можете получить оценки из таблицы СООБЩЕНИЙ. Я не вижу никакой пользы в создании таблицы РЕЙТИНГОВ.