Как реализована система «лайков» в социальных сетях?
Вопрос как хранить лайки - достаточно простой :)
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_нужной фотки.
Как то так на пальцах..