Давайте представим, что у нас есть проект с высоким трафиком (трубчатый сайт), который должен обеспечить сортировку с использованием этих параметров ( НЕ В РЕАЛЬНОМ ВРЕМЕНИ * ). Количество видеороликов составляет около 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 днях для каждого видео.
Есть ли другие хорошие методы? Возможно, для этого нужно выбрать другие инструменты?
Спасибо.