@IlliaKharytonov

Как застримить данные из MySQL/PostrgreSQL?

Есть несколько серверных приложений на Go, которые будут крутиться на разных серверах, но работать с одними данными. Мне надо, чтобы приложение узнавало сразу об изменениях в ряде таблиц. В частности, например, список пользователей. Т.е. например одно приложение забанило пользователя, а другое сразу об этом узнало и оборвало его подключение.
Всё крутится на AWS. Изначально показалось, что DynamoDB - идеальное решение: сервера могут быть в разных точках мира, оно само всё реплицирует во все регионы доступности, так что данные близко, и с помощью Streams приложения узнают об изменениях. Уже почти всё закодил, но потом понял, что показать все данные (список пользователей для админа, например) с помощью операции Scan - супер дорого. Т.е. даже если один раз в день вынимать все данные для синхронизации, всё равно получается дорого, либо потрать кучу денег и весь provisioned throughput на получение данных, либо вытаскивай по одной строчке в час.
Есть ли какой-то способ это дёшево обойти? Я уже почти смирился с тем, чтобы перейти на Mysql/Postgresql, но есть ли возможность в реальном времени стримить данные? Пишут про Debezium+Kafka, но это выглядит как решение с чересчур большим оверхедом.

Какие есть идеи, как можно было бы решить проблему?
Заранее спасибо.
  • Вопрос задан
  • 829 просмотров
Пригласить эксперта
Ответы на вопрос 2
terrier
@terrier
В постгресе это делается через LISTEN + NOTIFY
https://www.postgresql.org/docs/current/static/sql...
или очередь типа
pgq
https://wiki.postgresql.org/wiki/PGQ_Tutorial
Есть некоторое количество расширений для обвязки и всего такого
Ответ написан
2ord
@2ord
Модель Pub/Sub подходит для оповещения подписчиков. Тот же AWS SNS.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы