поделиться таблицей с другими Postgres БД - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть микросервис для бэкэнда, который поддерживается Postgres. У меня также есть микросервис для функции в приложении - чаты (приложение для обмена сообщениями), похожее на Instagram, например.

Причины, по которым у меня есть другой сервис для функции чатов:

  1. Я хочу зафиксировать асинхронные коммиты для таблицы сообщений (а также других связанных таблиц, таких как разговор). таблица, таблица беседы_участников и т. д. c.). Поправьте меня, если я ошибаюсь, но я не могу сделать некоторые запросы асинхронными, в то время как другие должны быть синхронными. Это или то или это. Поэтому мне нужна отдельная БД для функции чата.

    ** Я мог бы использовать что-то вроде SET LOCAL synchronous commit TO OFF:' для каждого запроса, но я предполагаю, что это не будет очень мудрым и небезопасным.

  2. Снижение нагрузки от микросервиса главного бэкэнда.

Проблема:

В моем основном микросервисе, У меня есть таблица с именем user_relations, в которой я могу определить, заблокировал ли пользователь какой-либо другой пользователь. Очевидно, это то, о чем должен знать микросервис Chat, поэтому пользователи не смогут отправлять сообщения людям, которые их заблокировали. Но как микросервис Chat может получить доступ к этим данным? Должен ли я сохранить копию таблицы uer_relations, а затем с каждым изменением основной службы отправлять запрос gRP C в службу чата, чтобы соответствующим образом обновить свою собственную таблицу user_relations? Или есть лучшее решение?

1 Ответ

0 голосов
/ 14 апреля 2020

Вы можете установить asynchronous_commit на нескольких уровнях, в том числе на уровнях user или transaction (см. do c), так что это возможно для совместного использования одной и той же таблицы между службами.

Если вам действительно нужны две БД, вы можете рассмотреть ссылку с DB2 на DB1 или даже другую службу на DB1, разрешающую (или нет) связь между двумя пользователями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...