ImproveAl
@ImproveAl

Как лучше хранить данные для статистики?

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

Я надумала только такое: при каждом выставлении балла писать в отдельную таблицу, id, балл, категория, дата. Но боюсь это тупо или громоздко. Умные люди подскажите, пожалуйста, этот вариант очень плохой и как лучше?
  • Вопрос задан
  • 105 просмотров
Пригласить эксперта
Ответы на вопрос 3
Stalker_RED
@Stalker_RED
Нормальный.

Если таких данных будет слишком много, можно перейти на другую субд, типа кликхауса.
Ответ написан
Комментировать
inoise
@inoise
Solution Architect, AWS Certified, Serverless
RabbitMQ/Kafka - пуляете туда событие вида "действие такое-то" на те действия что влияют на статистику.
Создаёте несколько слушателей я которые пересчитывают статистику и складывают в эти таблицы (да, они должны быть по типам день,неделя, месяц,год как вам там надо)
При выводе просто получаете записи и считаете разницу

Можно пересчитывать статистику по cron, но при большом объеме могут быть накладки
Ответ написан
Комментировать
Therapyx
@Therapyx
Data Science
Можно сохранять просто по конкретной формуле. Какой у человек на данный момент средний балл и из скольки частей он состоит. К примеру всего было 3 ачивочки с баллами 3, 2 и 1. Средний бал выходит 2. Сохраняем 2 как средний балл и 3 - кол-во ачивочек. Далее идет след оценка "5", и имеем сохраненные 2(как средний балл) и 3(кол-во) => 2 * 3 + 5(новая оценка) = 11 / 4 = 2.75. Сохраняем 2.75 и увеличиваем каунтер кол-ва на 1.
Что дальше делать с этими цифрами - решать вам. Сохранять и обновлять по неделям, месяцам, годам. Места много это занимать не будет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы