@danforth

Как хранить статистику просмотров в MySQL и выбирать наиболее просматриваемое?

Доброго времени суток.

Стоит задача: сделать для некой сущности (товары, новости) статистику просмотров, и на основании которой выводить по популярности. Для примера, возьмем новость:
  • Нам необходимо создать базу с столбцами news_id, views, date.
  • Позже, при открытии новости мы пишем в базу INSERT в котором счетчик на сегодняшний день обновляется на +1
  • После этого делаем выборку, на основании: наибольшее количество просмотров, в диапазоне дат от и до.


Подскажите, все ли правильно я вижу, и есть ли какие-то весомые минусы данной реализации? Может, есть другие варианты решения? Спасибо.
  • Вопрос задан
  • 569 просмотров
Решения вопроса 1
landergate
@landergate
IT-шный jack-of-all-trades
Подскажите, все ли правильно я вижу

Да, по-моему подход работающий.

Для того, чтобы не блокировать таблицу/не замедлять работу приложения инсертом с каждого посещения, некоторые приложения делают INSERT во временную MEMORY-таблицу (предполагается, что у них более быстрый INSERT), а оттуда раз в, например, 10 минут добавляют все накопившееся в основную таблицу. Правда MEMORY-таблицы не хранятся на диске, и если вы перезапустите службу в момент, когда какие-то просмотры будут в этой временной таблице, то эти незаписавшиеся в основную таблицу просмотры потеряются.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
sim3x
@sim3x
Настраиваешь логирование в nginx, logrotate в ОС - потом агрегируешь в чем хочешь
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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