Получить доступ

Что такое Change Data Capture (CDC) и где оно полезно?

SeniorSaga и CDC
Ещё спрашивают так:
  • Что такое Debezium?
  • Как синхронизировать базу с поиском и аналитикой?
Коротко

CDC (change data capture) читает журнал изменений базы (WAL в PostgreSQL, binlog в MySQL) и публикует каждое изменение строки как событие — обычно в Kafka через Debezium.

  • Приложение не меняется и не делает двойную запись
  • Порядок изменений и ничего не теряется — журнал источник истины
  • Применения: поиск, кэш, аналитика, хранилище данных, outbox, миграции

А ещё События CDC — изменения таблиц, а не бизнес-события; для интеграции между командами лучше outbox

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Как работает. База и так пишет все изменения в журнал для восстановления и репликации. CDC-коннектор подключается как реплика (логическая репликация PostgreSQL, binlog MySQL), читает поток изменений INSERT/UPDATE/DELETE и публикует их событиями с состоянием строки до и после. Debezium — самый распространённый инструмент, работает в Kafka Connect.

Плюсы:

  • нет двойной записи «в базу и в брокер» и связанных с ней расхождений;
  • изменения не теряются и идут в порядке коммитов;
  • не нужно менять код приложения;
  • начальный снимок плюс поток — можно наполнить новое хранилище.

Применения: обновлять Elasticsearch и кэши, поток в ClickHouse или хранилище данных, публикация событий через outbox (Debezium читает таблицу outbox и превращает строки в события), миграции между базами без простоя.

Ограничения: события отражают схему таблиц — потребители связываются со внутренней структурой чужой базы; изменение схемы ломает потребителей. Поэтому для интеграции между сервисами публикуют осмысленные события через outbox, а «сырой» CDC — для внутренних нужд. Нужно следить за слотом репликации: остановленный коннектор держит WAL и может заполнить диск.

Что хотят услышать

  • Механика: чтение журнала базы.
  • Плюсы против двойной записи.
  • Сценарии применения и outbox.
  • Ограничения: связь со схемой, слот репликации.

Частые ошибки

  • Отдавать сырой CDC другим командам как публичный контракт.
  • Забыть про рост WAL при остановленном коннекторе.

Что спросят дальше

  • Как CDC связан с transactional outbox?
  • Что такое Debezium?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем