Как хранить и собирать данные для майнинга такой информации, которая чаще всего просматривается за последние 24 часа, последние 7 дней, последние 30 дней, последние 365 дней? - PullRequest
1 голос
/ 07 июня 2010

Давайте представим, что у нас есть проект с высоким трафиком (трубчатый сайт), который должен обеспечить сортировку с использованием этих параметров ( НЕ В РЕАЛЬНОМ ВРЕМЕНИ * ). Количество видеороликов составляет около 200 КБ, а вся информация о видео хранится в MySQL. Количество ежедневных просмотров видео составляет около 1,5KK. В качестве инструментов у нас есть Жесткий диск (текстовые файлы) , MySQL , Redis .

Views
 top viewed
 top viewed last 24 hours
 top viewed last 7 days
 top viewed last 30 days
 top rated last 365 days

Как хранить такую ​​информацию?

Первая идея состоит в том, чтобы регистрировать все посещения текстовых файлов (один файл в час, например посещения_20080101_00.log ). В начале каждого часа рассчитывайте количество просмотров каждого видео за предыдущий час и вставляйте эту информацию в MySQL. Затем пересчитайте итоги (за последние 24 часа) и обновите статистику в таблицах. В начале каждого дня мы должны делать то же самое, но пересчитывать за последние 7 дней, последние 30 дней, последние 365 дней. Мне кажется, что этот метод очень плохой, потому что для правильного расчета необходимо хранить информацию о последних 365 днях для каждого видео.

Есть ли другие хорошие методы? Возможно, для этого нужно выбрать другие инструменты?

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2010

Если абсолютная точность не важна, вы можете суммировать информацию, которая длиннее 2 единиц назад.

Вы сохраняете отдельные просмотры за последние 1-2 часа, почасовые просмотры (одно значение в час) за последние 1-2 дня и ежедневные просмотры (одно значение в день).

«1-2» означает, что вы сохраняете, пока у вас не будет заполнено две единицы, а затем суммируйте более ранние из них.

...