Дизайн базы данных для постов мета - PullRequest
0 голосов
/ 23 декабря 2010

Если у вас есть таблица с названием posts, которая содержит id, title, content .etc, как бы вы разработали таблицу базы данных для хранения метаданных о каждой записи, например, сколько раз ее посетили сегодня, на этой неделе и т. Д.,и поэтому вы можете определить, какой пост был самым популярным на этой неделе.

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

У меня есть три таблицы: post, author_posts и author, и я использую внутреннее объединение, чтобы найтиавторы x post, posts содержат поле author_id, однако я видел некоторые сайты, которые не содержат внешних ключей, вместо этого они делают что-то вроде этого:

> post          author_posts    author     
>  id               id, title,     id, post_id,   
>  name, content     author_id     username

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

Ответы [ 2 ]

0 голосов
/ 23 декабря 2010

Количество посещений - это особый вид метаданных о публикации, и решение для этого, вероятно, будет отличаться от хранения других видов метаданных.

Подсчет "посещений" для определенного ресурса на вашем сайте включает принятие некоторых решений о том, что такое "посещение". У вас будет информация для входа, чтобы решить, кто посещает, или вы просто будете использовать IP-адрес? Какое количество прошедшего времени инициирует новое посещение с того же IP-адреса?

Тем не менее, у вас есть два варианта.

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

Кроме того, вы можете сохранить счетчик количества посещений за каждый отдельный период времени. Вы должны использовать наименьший период времени, который вы хотите проанализировать (возможно, один счетчик для каждой даты или, возможно, для каждого часа каждого дня, в зависимости от вашего возможного использования). Каждый счетчик - это строка в таблице с идентификатором записи, дескриптором даты или времени и целым числом. Когда вы обнаруживаете новое посещение, вы просто обновляете счетчик на текущий период времени. Возможно, вам понадобится сохранить кэш последних сведений о посещении, чтобы решить, есть ли у вас «новое» посещение или продолжение существующего, но если посещение - это просто запрос страницы, вам не нужно Сделайте это, просто обновите соответствующий счетчик.

0 голосов
/ 23 декабря 2010

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

...