D
D
danforth2016-05-07 13:43:59
MySQL
danforth, 2016-05-07 13:43:59

How to store view statistics in MySQL and select the most viewed one?

Good day.
There is a task: to make for a certain entity (products, news) statistics of views, and on the basis of which display by popularity. For example, let's take the news:

  • We need to create a database with columns news_id, views, date.
  • Later, when opening the news, we write to the INSERT database in which the counter for today is updated by +1
  • После этого делаем выборку, на основании: наибольшее количество просмотров, в диапазоне дат от и до.

Подскажите, все ли правильно я вижу, и есть ли какие-то весомые минусы данной реализации? Может, есть другие варианты решения? Спасибо.

Answer the question

In order to leave comments, you need to log in

2 answer(s)
L
landergate, 2016-05-08
@danforth

Подскажите, все ли правильно я вижу

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

S
sim3x, 2016-05-07
@sim3x

Настраиваешь логирование в nginx, logrotate в ОС - потом агрегируешь в чем хочешь

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question