Дизайн шаблона: система уведомлений

Я работаю над сайтом, который будет использовать функции социальных сетей (например, Facebook).

Я хотел бы внедрить систему уведомлений, которая показывает такие вещи, как «X добавил вас в друзья», «Y пригласил вас на вечеринку», «Z принял последний тест» ... и я не знаю, как это сделать ,

Интересно, какое решение лучше?

Решение 1, он же «логирование».

Выделенная таблица «Уведомление». Я добавляю строки в эту таблицу каждый раз, когда происходит оповещение (добавление друзей, ответы на вопросы и т. Д.). Таблица «Уведомление» имеет поля, которые содержат различную информацию, в зависимости от того, какой тип уведомления добавлен в таблицу.

Хороший : простота написания кода, разделение между функцией уведомлений и «обычными» функциями, не слишком много ресурсов, когда мне нужно читать таблицу.

Плохо : Таблица уведомлений будет расти, вероятно, очень большой (я думаю, что я добавлю 10 000 строк / день в таблицу), «дублированная» информация: информацию в таблице уведомлений можно найти во всех других таблицах, используя сравнение даты / списка / любого другого типа.

Решение 2, он же «везде».

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

Хороший : Не слишком большая таблица по сравнению с решением 1, нет «избыточности» информации.

Плохо Я боюсь из-за количества пользователей (~ 1k +), это заставляет сервер взорваться, потому что это потребляет ресурсы / время, немного сложнее для кодирования / обслуживания.

Можете ли вы сказать мне, что вы думаете, что лучше и почему, или у вас есть решение, которое я не представлял?

Спасибо =)

Редактировать : Допустим, я использую действительно базовый дизайн БД: у пользователей есть друзья, они могут делать викторины.

1 таблица для списка пользователей, список опросов,

1 таблица викторины <-> отношение пользователя,

1 пользователь таблицы <-> для дружбы.

Каждый раз, когда пользователь посещает свой собственный профиль, он может видеть, что произошло: новая анкета <-> пользовательская связь, новый пользователь <-> пользовательская связь и т. Д. Как бы вы создали такое уведомление?

Ответы на вопрос(4)

Ваш ответ на вопрос