Ситуация: у тебя интернет-магазин. Заказы лежат в рабочей базе, а для отчётов их нужно забирать в аналитическое хранилище.
Можно каждый час выгружать всю таблицу. Но если там миллионы строк, а поменялись всего сто - гонять всё заново ресурсозатратно.
Здесь пригодится CDC — Change Data Capture, то есть отслеживание изменений в данных.
Добавили заказ → ловимINSERT.
Поменяли статус → ловимUPDATE.
Удалили запись → ловимDELETE.
Дальше эти изменения передаём в хранилище и применяем там.
🤔 Откуда CDC узнаёт, что поменялось?
Есть разные способы. Один из популярных — читать журнал изменений базы.
База записывает туда изменения, а специальный коннектор превращает их в события для других систем.
✍️Пример связки: база → Debezium → Kafka → хранилище.
Debezium ловит изменения, Kafka помогает их передавать, а обработчик обновляет данные в хранилище.
При этом CDC — сам подход.
Debezium и Kafka — инструменты для его реализации.
Debezium и Kafka — инструменты для его реализации.
Получаем более свежие данные и меньше повторных выгрузок. Но пайплайн становится сложнее — про его подводные камни поговорим в следующей части 🧘