Как организовать хранение лайков и решить вопрос с производительностью в реляционной БД (mysql)?
Не хранить каждый лайк индивидуально, а держать два поля счётчиков лайков и дислайков в таблице connections. По поступлению лайка инкрементировать поле.
Можно и так, как вы изначально описали. Всё равно скоро придёте к регистрации пользователей, и лайки станут связывать пользователя и лайкнутую связь – придётся их хранить индивидуально.
Проблемы производительности решайте по мере их поступления или чуть заранее, но не так заранее, как сейчас )
Можно установить правило, что лайк можно отменить только в течение, допустим, недели. Тогда нужно хранить индивидуальные записи каждого лайка только неделю, по прошествии которой заменять устаревшие лайки на посчитанную сумму лайков у записи «связи». Так таблица лайков будет держать только свежие лайки, и не разрастётся до миллиардов.
Частичная денормализация базы - кроме таблицы лайков (`user_id`, `object_id`) поле `likeCount` хранится ещё в основной таблице и изменяется по триггерам при добавлении/удалении записи в таблице лайков.