У меня есть веб-сайт, на котором люди публикуют комментарии, фотографии и другой контент.Я хочу добавить функцию, которая может нравиться или не нравиться пользователям.
Я использую базу данных для хранения всего содержимого.
Есть несколько подходов, на которые я обращаю внимание:
Метод 1:
- Добавьте столбец «like_count» в таблицу и увеличивайте его всякий раз, когда кому-то нравится элемент
- Добавьте «user_likes»таблица для отслеживания всего, что понравилось пользователю.
Плюсы: Простота реализации, минимальное количество запросов.Минусы: пункт должен обновляться с каждым изменением в числе.У меня есть целый список кэшированных элементов, который будет поврежден.
Метод 2:
- Создайте новую таблицу like_summary и сохраните общее количество лайковкаждый элемент в этой таблице
- Добавьте таблицу 'user_likes', чтобы отслеживать все, что понравилось пользователю.
- Кэшируйте данные like_summary в memcache и очищайте их только в случае изменения значения
Плюсы: Меньшая нагрузка на таблицу основных элементов, она может быть кэширована, не беспокоясь.Минусы: слишком много попаданий в memcache (на странице показано 20 элементов, которые необходимо загрузить из memcache), может быть медленным
Есть предложения?