Может ли Debezium гарантировать, что все события одной транзакции публикуются одновременно? - PullRequest
0 голосов
/ 27 февраля 2020

Я начинаю исследовать использование сбора данных изменений для преобразования изменений базы данных из унаследованного и коммерческого приложения (которое я не могу изменить) в события, которые могут использоваться другими системами. Упрощая мой реальный пример, предположим, что будут задействованы две таблицы: order с деталями заголовка заказа и order_line с деталями каждого из запрошенных продуктов.

В настоящее время я понимаю, что события из две таблицы будут опубликованы в двух разных темах kafka, и я должен объединить их, используя kafka-streams или k sql. Я видел, что есть разные варианты определения окна, которое будет использоваться для выбора всех связанных событий, однако мне не ясно, как я могу быть уверен, что все события, происходящие из одной и той же транзакции базы данных, уже находятся в topi c, поэтому я не пропускаю ни одного из них.

Может ли Debezium обеспечить это (все события из одной транзакции опубликованы) или может произойти сбой, например, Debezium при публикации событий и только часть из них, сгенерированных одной и той же транзакцией, находится в Kafka?

Если да, то каков рекомендуемый подход для обработки этого?

Спасибо

1 Ответ

0 голосов
/ 27 февраля 2020

Debezium хранит позиции журналов транзакций, которые он полностью читает в Kafka, и использует эти позиции, чтобы возобновить свою работу над любым cra sh или другой ситуацией, подобной этой, также в других ситуациях, которые могут иногда случаться, и в этой ситуации дебезиум Потеряв свою позицию, он восстановит ее, прочитав снимок базы данных еще раз!

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