Короче, есть таблица mentions, там находятся сырые упоминания объектов (юзеров, постов, текстов) внутри других объектов (постов, комментариев, текстов). Это вообще говоря кэш первичной информации такого рода, то есть собственно говоря текстового содержимого объектов. Здесь находятся все ссылки, в том числе невидные упоминаемому юзеру или неинтересные (ссылки на собственный контент).
Есть таблица reported_mentions, из нее показывается страница https://mokum.place/filter/notifications, там только то, что видно упоминаемому юзеру, и прошедшее проверку временем (с таймаутом/cancellable). ‎- псы в рапиде
Появляется таблица notifications, в которой содержатся заявки на отсылку упоминаний различными транспортами (счетчик директов, браузерные упоминания, мобильные push-нотификации, Telegram, емейл, а также записи в предыдущей таблице). Эти записи тоже cancellable, например если юзер успел ответить на директ, то уведомлять о нем уже не надо. ‎- псы в рапиде
Предыдущие две таблицы параллельно-дивергентны, потому что в reported_mentions еще пойдут такие вещи, как подписки/отписки и инвайты. Об этом тоже надо не забыть при проектировании таблицы notifications, FML. ‎- псы в рапиде
Вообще говоря, есть ощущение, что здесь надо подумать над старой идеей persistent promises. Короче, задача об уведомлениях предсказуемо оказалась сложнее вовсе не там, где казалось. #mokum-dev ‎- псы в рапиде
Все это еще очень рыхлое, потому что в таблице mentions аж две полиморфные ссылки (откуда и куда), а в таблице reported_mentions вообще используется JSON-поле. ‎- псы в рапиде

2015-2016 Mokum.place