Как лучше всего подходить к созданию новостной ленты?
В настоящее время у меня есть наблюдатель, который создает новую запись активности новостей каждый раз, когда кто-то создает запись.Но, чтобы справиться с конфиденциальностью, я получаю 7 или 8 соединений, чтобы получить соответствующий результат.
Похоже, это будет медленно и неэффективно.Какова еще одна стратегия получения правильных записей новостных лент в качестве области действия?
Подробнее:
В настоящее время у меня есть сайт, который помогает пользователям отслеживать проекты, над которыми они работают.Существуют публичные и частные проекты (куда люди могут приглашать соавторов).
Я хочу, чтобы моя лента новостей включалась при создании публичных проектов.Когда вас приглашают в частный проект.Когда пользователь следует за проектом.И затем все действия других пользователей, за которыми вы следите.Затем для частных проектов у меня есть еще одна таблица соединений, чтобы определить, кто имеет доступ к проектам.(Также есть комментарии к каждому из этих проектов, которые я хочу показать в новостной ленте).
Все следующие отношения в настоящее время находятся в таблицах соединений, поэтому у меня много объединений.
Чтобы получить представление о типе запроса, я думаю, он будет выглядеть примерно так:
SELECT news_feed_activities
. * FROM news_feed_activities
LEFT JOIN user_following_relationships
ON user_following_relationships
.following_id = news_feed_activities
.user_id LEFT JOIN user_project_relationships
ON user_project_relationships
.project_id = news_feed_activities
.responding_to_id AND news_feed_activities
.responding_to_type = 'Project' ГДЕ (user_following_relationships
.user_id = 1 ИЛИuser_project_relationships
.user_id = 1 ИЛИ news_feed_activities
.user_id = 1 ИЛИ up2
.user_id = 1) GROUP BY news_feed_activities
.id ORDER BY news_feed_activities
.id DESC
РЕДАКТИРОВАТЬ: Я думаю, что я, вероятно, в конечном итоге использовать Redis по этим направлениям http://blog.waxman.me/how-to-build-a-fast-news-feed-in-redis