Самые популярные видео на этой неделе - PullRequest
2 голосов
/ 13 мая 2010

У меня есть веб-страница, похожая на Youtube, где пользователи загружают и смотрят видео.

Я хотел бы добавить список "самых популярных видео на этой неделе" на мою страницу. Но этот список должен содержать не только видео, загруженные на предыдущей неделе, но и все видео.

В настоящее время я записываю просмотры в столбце, поэтому у меня нет информации о том, когда просматривалось видео. Поэтому сейчас я ищу решение о том, как записать эти данные.

Первый - самый очевидный (и правильный, насколько мне известно): есть отдельная таблица, в которую вы вставляете новую строку каждый раз, когда хотите записать новый вид (сохраняя идентификатор видео и метка времени). Меня беспокоит, что я быстро получу огромные объемы данных в этой таблице, а запросы, использующие эту таблицу, будут чрезвычайно медленными (мы получаем около 3 миллионов просмотров в месяц).

Второе решение не такое гибкое, но более простое для базы данных. Я бы добавил 7 столбцов в таблицу "videos" (по одному на каждый день недели): views_monday, views_tuesday, views_wednesday, ... И увеличивайте значение в правильном столбце в зависимости от дня, в котором оно находится. И я бы сбросил столбец текущего дня в 0 в полночь. Тогда я мог бы легко получить самые просматриваемые видео недели, суммируя эти 7 столбцов.

Как вы думаете, следует ли мне беспокоиться о первом решении или второго будет достаточно для моего случая? Если у вас есть лучшее решение, пожалуйста, поделитесь!

Я использую MySQL.

1 Ответ

3 голосов
/ 13 мая 2010

Вы также можете создать таблицу с датой, идентификатором видео и количеством просмотров. Каждый раз, когда просматривается видео, вы просто увеличиваете счетчик просмотров по дням (или создаете запись, если дозы нет). Таким образом, у вас есть только одна запись в день на видео. Вы можете легко суммировать счет за последнюю неделю / месяц / год, запросив эту таблицу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...