Какие есть хорошие практики организации «друзей» и сообщений на сайте?

Необходимо реализовать систему "друзей" на сайте. Сначала думал сделать у каждого пользователя в БД поле friends с массивом id'шников их "друзей". Но тут же появилась задача сделать список самых активных друзей (по аналогии с ВК - те люди, с которыми вы общаетесь чаще всего будут выводиться выше). И появился вопрос, как стоит проверять эту активность. И если даже мы определились с этим. К примеру, каждый раз мы будем проверять количество сообщений с каждым из друзей за последнюю неделю. И сортировать друзей по данному признаку. Не будет ли это оказывать слишком большую нагрузку на базу данных. Какие есть практики организации подобных структур?
  • Вопрос задан
  • 207 просмотров
Решения вопроса 1
riky
@riky
Laravel
связь many-to-many c доп аттрибутами

то есть отдельная таблица
friends:
id_user, id_friend, activity

activity вычисляете и обновляете на основе ваших метрик колич сообщений например и при выборках сортируете по этому полю. обновлять можно не часто например раз в день.
нагрузка при этом не очень большая, тк вы не делаете ни аггрегирующих запросов ни сложных джойнов.

но учитывайте что дружба это односторонняя. то есть считается что чел подписан на другого (как сделано в вк), если дружба взаимная то будут две записи, второй друг первого и первый друг второго, и activity у них может быть разная.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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