webinar
@webinar
Учим yii: https://youtu.be/-WRMlGHLgRg

Как лучше реализовать рейтинг?

Помогите выбрать из двух вариантов или предложите свой.
Есть активности пользователя (голосования, покупки, комментарии и т.д.) они влияют на рейтинг добавляя или вычитая некий x из рейтинга.
Собственно вариант1:
хранить в базе сумму, пример таблицы
user_id (int11), rating(int8), count(tynyint3), date(datetime)
rating - итоговый рейтинг
count - это кол-во действий за день, date - дата первого из них, это что бы установить лимиты на дневные активности (покупки естественно не считаем сюда)
вариант2:
хранить в базе активности
user_id (int11), rating(tynyint3), type(tynyint3), date(datetime)
rating - изменение рейтинга, положительное или отрицательное число
type - тип активности, где-то в отдельной базе хранить типы активностей с описанием
date - датавремя активности

Второй вариант дает возможность просмотра истории начисления рейтинга, но явно будет ресурсоемким при выводе рейтинга (допустим в комментариях, выводятся пользователи и их рейтинг), особенно когда там накопится 5М+ записей. Но я не могу понять насколько затратным по ресурсам будет второй вариант.
Что посоветуете?
  • Вопрос задан
  • 1214 просмотров
Решения вопроса 1
@Visteras
Любознателен, интересуюсь новым и старым :)
Согласен с вариантом объединения оба в один.
Тогда при необходимости можно и пересчитать рейтинг будет.
Да и если что - итоговый рейтинг можно хранить в мускульной базе, а по отдельности - в той же монге например. Если производительность будет очень уж высокой - такой вариант вполне имеет право на жизнь.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы