Как реализована система «лайков» в социальных сетях?

Допустим 1 000 000 пользователей оценили фотографию. Как это реализовано? Как хранятся данные?
  • Вопрос задан
  • 4560 просмотров
Пригласить эксперта
Ответы на вопрос 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Вопрос как хранить лайки - достаточно простой :)

0. Все пользователи разделяются на группы (ноды). За каждой нодой закреплен сервер который её обслуживает. Далее, структура базы строится под конкретные кейсы функционала.

Предположим что нам нужно повторить стандартный счетчик facebook/vk.
Какие есть кейсы?

1. Показывать количество лайков у фото.
Легко - кладем счетчик в свойства этой фотографии в ноде её автора.

2. Определить лайкнул ли пользователь эту фото
Храним пару (user_id, photo_id) в ноде пользователя который делал like

3. Добавить/удалить лайк
см п2 + обновляем счетчик в ноде автора фото.

4. Вывести последних лайкнувших
Кеш в свойствах фото.

итд.

На живом проекте все будет осложнятся "плохими" пользователями - теми у кого 1 000 000 фотографий и теми кто делал 1 000 000 лайков. Это решается не равномерным, а интеллектуальным распределением пользователей по нодам.

PS
Гораздо сложнее задача по формированию ленты новостей :)
Ответ написан
Создают базу данных с полями id_обьекта + user_id кто поставил лайк.
При необходимости вывести все лайки одной фото делают выборку где id_обьекта= id_нужной фотки.

Как то так на пальцах..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы