Как хранить действия пользователей по примеру соц сетей?
Всем привет! Практически во всех соц сетях есть система уведомлений с сообщениями типа: На ваш комментарий ответили, вашу фотку лайкнули, ваш комментарий понравился и т.д.
Как хранятся эти данные? В отдельной таблице "события"? Вроде если кто-то сделал действие туда это действие записывается, а дальше его видят другие пользователи, которым это видеть разрешено? Либо это сбор данных по всем таблицам (комментарии, лайки, ответы), грубо говоря, с помощью UNION?
Смотрите слово UNION подсказывает, что Вы собрались использовать SQL, а так же будете испытывать накладные расходы СУБД на обеспечение транзакций и реляционной модели, но большая часть ваших операций это выборка данных с фильтрами и добавление в конец.
Обеспечивать транзакции в целом не нужно и отношение к другим таблицам очень сомнительна. Вполне вероятно, что лучше всего смотреть в стоорону NoSQL с поддержкой MapReduce.