Пользователям на сайте начисляются баллы, мне нужно выводить стату за день, неделю, две недели, месяц и т.д.
Т.е. на сколько они прибавили и в какой категории.
Я надумала только такое: при каждом выставлении балла писать в отдельную таблицу, id, балл, категория, дата. Но боюсь это тупо или громоздко. Умные люди подскажите, пожалуйста, этот вариант очень плохой и как лучше?
RabbitMQ/Kafka - пуляете туда событие вида "действие такое-то" на те действия что влияют на статистику.
Создаёте несколько слушателей я которые пересчитывают статистику и складывают в эти таблицы (да, они должны быть по типам день,неделя, месяц,год как вам там надо)
При выводе просто получаете записи и считаете разницу
Можно пересчитывать статистику по cron, но при большом объеме могут быть накладки
Можно сохранять просто по конкретной формуле. Какой у человек на данный момент средний балл и из скольки частей он состоит. К примеру всего было 3 ачивочки с баллами 3, 2 и 1. Средний бал выходит 2. Сохраняем 2 как средний балл и 3 - кол-во ачивочек. Далее идет след оценка "5", и имеем сохраненные 2(как средний балл) и 3(кол-во) => 2 * 3 + 5(новая оценка) = 11 / 4 = 2.75. Сохраняем 2.75 и увеличиваем каунтер кол-ва на 1.
Что дальше делать с этими цифрами - решать вам. Сохранять и обновлять по неделям, месяцам, годам. Места много это занимать не будет.