Я начинаю исследовать использование сбора данных изменений для преобразования изменений базы данных из унаследованного и коммерческого приложения (которое я не могу изменить) в события, которые могут использоваться другими системами. Упрощая мой реальный пример, предположим, что будут задействованы две таблицы: order
с деталями заголовка заказа и order_line
с деталями каждого из запрошенных продуктов.
В настоящее время я понимаю, что события из две таблицы будут опубликованы в двух разных темах kafka, и я должен объединить их, используя kafka-streams или k sql. Я видел, что есть разные варианты определения окна, которое будет использоваться для выбора всех связанных событий, однако мне не ясно, как я могу быть уверен, что все события, происходящие из одной и той же транзакции базы данных, уже находятся в topi c, поэтому я не пропускаю ни одного из них.
Может ли Debezium обеспечить это (все события из одной транзакции опубликованы) или может произойти сбой, например, Debezium при публикации событий и только часть из них, сгенерированных одной и той же транзакцией, находится в Kafka?
Если да, то каков рекомендуемый подход для обработки этого?
Спасибо