Комментарии 2
А как вы удаление записи обнаружите? если не ошибаюсь, то описанный вами подход помогает обнаружить только добавленные и обновлённые записи.
Добрый день!
Да, вы правы, удаление не затрагивается. Метод хорошо подходит для обнаружения вставленных и изменённых записей, но не позволяет определить физическое удаление, потому что после удаления следующий запрос не найдет Dt_Ins и Dt_Upd.
Поэтому я вижу 2 варианта:
Добавить в таблицу дополнительное поле, например
is_deleted. Тогда вместо физического удаления в исходной базе можно устанавливать соответствующий признак и обновлять дату изменения. Такая запись попадёт в инкрементальную выборку, а на базе-получателе можно реализовать необходимую логику: установить такой же признак или уже физически удалить запись.Использовать другой метод CDC, который лучше подходит для отслеживания операций удаления. Для PostgreSQL одним из подходящих вариантов является чтение журнала транзакций WAL.
В рамках этой статьи я сосредоточился на сценарии обработки вставленных и изменённых записей, чтобы не перегружать материал, который и так получился очень объемным. Работу с CDC на основе WAL планирую разобрать в одной из следующих статей.
Большое спасибо за комментарий!

FESB и PostgreSQL. Кейс «Отметка по дате изменения»