Как реализовать масштабируемую систему уведомлений для социальных приложений? - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю над системой уведомлений для еще одного приложения социального типа. Он имеет посты, комментарии и некоторые другие функции и т. Д., И моя текущая реализация выглядит так,

У меня есть разные таблицы уведомлений для каждого объекта (всего 6 таблиц) (post_notif, comment_notif и т. Д.) В каждой таблице хранятся notif_id, to_user, from_user, тип (например, избранное и т. Д.), Object_id, ..., созданный_ат и т. Д.

Каждая таблица имеет более 4 индексов, так как в запросе есть несколько внешних ключей (минимум 4 JOINS на запрос).

Все 6 таблиц запрашиваются с помощью union all, например,

SELECT col_a, col_b..
    UNION ALL
SELECT col_a, col_b..
    UNION ALL..
...

Мне нужно, чтобы уведомления обновлялись при любых изменениях объектов, которые могут обновляться, чтобы это отражалось в уведомлениях, которые видит пользователь (например, «Джонни прокомментировал:« Это круто! »», - прокомментировал Джонни: «Это здорово. '), что является основанием для отдельных таблиц для объектов с внешними ключами и объединением всех в извлечении уведомлений.

Я использую MySql, идентификаторы генерируются сервером билетов, и я использую NodeJ в качестве интерфейса API, если это помогает.

Мой вопрос

По моему мнению, это будет крайне неэффективно, так как приложение масштабируется, и я смотрю, есть ли лучший способ или более эффективный способ сделать это.

...