@danforth

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

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

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


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

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

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

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

Похожие вопросы
Wanted. Москва
До 200 000 ₽
div. Ставрополь
от 50 000 до 120 000 ₽
Lachestry Таганрог
от 170 000 до 200 000 ₽
29 нояб. 2024, в 09:43
100000 руб./за проект
29 нояб. 2024, в 07:44
20000 руб./за проект