Добрый день, необходимо на странице профиля пользователя выводить ленту его последней активности (например 20 событий), события типа:
- пользователь добавил такую ту новость (выводится миниатюра, заголовок и ссылка)
- пользователь оставил комментарий к такому то посту ()
- Пользователь добавил в друзья другого пользователя и т.д.
Так как активности совершенно разного характера и должны выводить совершенно разные типы активности с разным набором данных, не могу придумать оптимальную структуру. Можно конечно доставать 20 последних данных из разных таблиц по userid, но это тьма запросов, и что-то мне подсказывает что это плохой вариант.
Самое оптимальное что придумал это создать таблицу и в нее записывать userid, тип активность и контент активности например в виде json строки. Но единственная загвоздка в том, как хранить строго 20 строк для одного пользователя. Можно конечно сразу после добавления активности, сделать 2 доп запроса вытащив количество строк активности одного пользователя и если их больше 20 то удалить лишнее, но тогда единовременных запросов может быть слишком много. В общем прошу у вас совета, как проектируют подобные действия.