Как организовать хранение лайков в реляционной бд?
Вопрос, наверное, избитый, но толково описанных методов не нашел.
Задача простая: хранить в реляционной бд, например в MySQL, лайки пользователей. Есть сущность, её лакает пользователь, сохраняем факт лайка. Самая простая схема: id пользователя и id сущности. Наличие такой связи означает факт лайка.
Условия:
– частое обращение и поиск лайка (например показывать индикатор - лайкал ли пользователь сущность);
– выборка лайков для пользователя/сущности;
– записей лайков много и они растут в геометрической прогрессии.
Как один из вариантов – использовать кеширующие инструменты, например Redis. Но опять же, интересуют способы связки Redis + MySql и правильная организация взаимодействия.
Буду рад за наводки на литературу или статьи (можно забугорные), с описанием того, как это реализовано у всем известных сервисов.
как на счет использовать несколько view для выбора результатов? (в основном агрегации коллекций)
я б не рекомендовал выводить всех пользователей, которые лайкнули сущность, а выводить, допустим, последних 5-10 (если таковы есть). view свободно может решить данную проблему
так же, как вариант, можно немного денормализовать данные по количеству лайков для сущности.