В прошлом посте разобрались, что CDC ловит изменения в базе и передаёт их дальше.
Теперь — несколько подводных камней, которые легко пропустить на старте.
1. Старые данные тоже надо забрать
Если в таблице уже миллион заказов, поток новых изменений сам по себе их не перенесёт. Поэтому часто сначала делают снапшот — выгрузку текущего состояния таблицы, а затем продолжают читать изменения. Эти этапы нужно согласовать, чтобы ничего не потерять на стыке.
2. Одно событие может прилететь повторно
Например, после сбоя и перезапуска коннектора. Если каждое событие просто добавлять как новую строку, можно наплодить дублей.
Обработку делают идемпотентной: повтор того же события не должен повторно менять результат. Для актуального состояния таблицы часто используют upsert — вставку или обновление по ключу.
3. Удаления тоже нужно применять
Если запись удалили в источнике, а в хранилище событие проигнорировали, там останется призрак 👻
4. В реальном времени» — не мгновенно
Коннектор или обработчик могут отставать. Поэтому следят за лагом — насколько запаздывают данные.