Каковы современные подходы в создании «Ленты новостей»?
Хранение ленты для каждого пользователя самый экономичный и (что очень важно) легко масштабируемый способ. 
Если грубо, то каждая активность у вас на проекте порождает событие, а на эти события вы уже навешиваете формирование лент пользователей удобным для вас способом. Нужно лишь верно выбрать хранилище, отвечающее вашим задачам. А выбор будет определяться следующими характеристиками:кол-во пользователейкол-во порождаемых активностейсрок хранения ленты пользователя
Вроде все довольно просто. При наличии индексов в таблице новостей саму ленту можно и не хранить. Сохраняйте только подписки пользователей на сущности. Вроде такого:
Таблица news :  id / autor_type / autor_id / ...
Где author_type - ссылка на таблицу сущности, author_id - соответственно id сущности
Формируете ленту для пользователя запросом вроде: 
SELECT * FROM news WHERE (author_type = "$1" AND author_id = "$2") AND (author_type = "$3" AND author_id = "$4") ...