Выбор типа хранилища и способа хранения часто меняющихся данных
Здравствуйте!
Думаю над тем, как организовать хранение данных в одном потенциально highload проекте, решил посоветоваться. Задача такая: есть список "кандидатов" (~20 штук), есть люди, которые ставят бал каждому (за один раз). Нужно выводить текущий рейтинг кандидатов, т.е. после каждого голоса нужно пересчитывать ~20 чисел. Какие есть варианты:
- Просто берем PostgreSQL и сохраняем голоса пользователей в таблице. Расчет рейтинга происходит в коде приложения, и кешируется.
- Использовать опять же реляционную базу данных, но кроме сохранение голосов пользователей сразу же в определенной таблице хранить пересчитанный рейтинг. Для пересчета рейтинга использовать очередь сообщений, или делать это по крону.
- Первый способ, но использовать NoSQL решение.
- Второй способ, но использовать NoSQL решение.
Я склоняюсь к NoSQL базе данных и кешированию расчета рейтинга, без денормализации. Как бы поступили вы?
Спасибо!
Источник: Stack Overflow на русском