Способы инкрементальной загрузки
Вопрос
Сравните способы забирать изменения из базы сервиса в хранилище: полная выгрузка, инкремент по updated_at, log-based CDC.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Полная: просто, видит удаления, тяжело на больших объёмах
По updated_at: дёшево, но граница, долгие транзакции, нет удалений, нужна дисциплина
Log-based CDC: все изменения и удаления, низкая нагрузка, секунды задержки
Цена CDC: настройка базы, слот и его мониторинг, инфраструктура Kafka Connect
Применение изменений в хранилище: последнее состояние по позиции журнала, идемпотентность
Периодическая сверка как страховка
Что могут спросить следом
- Что выберете для таблицы на 50 тысяч строк?
- Как перейти с инкремента на CDC без потерь?
Разбор
Образцовый ответ: «Полная выгрузка самая простая и честная: видит удаления, не копит ошибок, но на сотнях миллионов строк долго грузит источник, поэтому подходит для справочников. Инкремент по updated_at дешёвый, но требует индекса и дисциплины обновления колонки, теряет строки на границе и из-за долгих транзакций, если не брать окно с перекрытием, и не видит удалений. Log-based CDC через Debezium читает журнал транзакций: видит все изменения и удаления, почти не нагружает таблицы, задержка секунды. Цена: настроить логическую репликацию, держать Kafka Connect и обязательно мониторить слот, иначе WAL заполнит диск. В хранилище применяю изменения по позиции журнала, а не по времени получения, и идемпотентно. Какой бы способ ни был, раз в неделю делаю сверку ключей и сумм с источником».
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «CDC и инкрементальная загрузка»
- Удаления в аналитике
- Событие Debezium
- Transactional outbox
- Инкремент по водяному знаку
- Применить события Debezium к состоянию
- Поле op в событии Debezium
- Удаления при инкременте по updated_at
- Спроектируйте репликацию данных сервисов в хранилище через CDC