Как хранить действия пользователей в базе данных MySQL? - PullRequest
2 голосов
/ 22 сентября 2011

Рассмотрим простые веб-сайты с множеством пользовательских действий (например, stackoverflow).Каков наилучший способ хранения пользовательских действий, таких как голосование, добавление в избранное и т. Д. Насколько мне известно, есть два возможных способа:

Денормализация: Хранение идентификаторов пользователей участниковпроголосовал за статью в столбце "кто проголосовал" в таблице статей.Это будет список идентификаторов, разделенных запятыми.

Нормализовано: Создание таблицы взаимосвязей для связи идентификатора товара с идентификатором пользователя.Этот метод имеет неоценимое преимущество (, и я знаю, что большинство из вас поддержат эту идею );но меня беспокоит (1) эта таблица может легко достичь миллионов строк.Поскольку он индексируется, чтение должно быть достаточно быстрым, но обновление (на регулярной основе) длинной индексированной таблицы может быть проблематичным.(2) Каждый раз, когда вы посещаете страницу статьи, нам нужно прочитать еще одну таблицу, которая будет замедлять регулярные запросы.

1 Ответ

0 голосов
/ 08 октября 2011

Вы также можете сделать лучшее из обоих миров и иметь временную базу данных и свернутую базу данных отчетов, которая обновляется "в автономном режиме"

...