Я бы пошел с таблицей users , таблицей с отношением m2m между пользователями и таблицей messages .
Затем вы можете сделать один выбор, чтобы найти всех пользователей, за которыми следует пользователь, а затем второй выбрать в , чтобы получить все интересующие сообщения (сортируя и ограничивая результаты соответствующим образом). Расширить это до тегов должно быть довольно просто.
Этот дизайн должен подойти для большого количества пользователей и сообщений, если вы индексируете нужные столбцы. Если у вас большие возможности, вы также можете запускать таблицы пользователей и таблицы сообщений на разных серверах или иметь реплики только для чтения. Я бы даже не волновался об этом на данный момент - вам нужно быть огромным.