Нужно реализовать что-то вроде ленты событий, в которой каждый объект имеет различную структуру.
Что требуется:
1. Возможность получить связанные с событием объекты. К примеру, если был добавлен комментарий к какому либо обсуждению, то возможность получить этот комментарий (т.е. где-то должен сохраняться его id).
Важно: событие может иметь несколько связанных объектов (связей с разными таблицами).
2. При удалении одного из связанных с событием объектов (либо его изменении), событие должно удаляться из ленты. Добавлять его заново не нужно.
3. Возможность получить все события одним запросом в хронологическом порядке. Для того, чтобы была возможность вывести последние события в ленте, к примеру.
Как все это правильно реализовать с точки зрения архитектуры?
Пример:
https://phabricator.wikimedia.org/