В каких случаях Materialized View в ClickHouse может пропустить данные или, наоборот, задублировать их?

Обычная incremental MV обрабатывает новые вставленные блоки. Она не пересчитывает старую историю автоматически и может повторно учесть данные при неидемпотентной загрузке.

Короткий ответ

Что ответить на собеседовании

Обычная incremental MV обрабатывает новые вставленные блоки. Она не пересчитывает старую историю автоматически и может повторно учесть данные при неидемпотентной загрузке.

Подробный разбор

Ответ с пояснениями

Обычная incremental MV обрабатывает новые вставленные блоки. Она не пересчитывает старую историю автоматически и может повторно учесть данные при неидемпотентной загрузке.

Данные до создания MV требуют backfill. Изменения правой таблицы join и фоновые merges источника не запускают пересчёт уже записанного результата. Ошибки обработки нужно расследовать с учётом настроек вставки, а повторную отправку — проверять на дедупликацию всей цепочки. Особенно опасно считать, что ReplacingMergeTree в источнике автоматически удалит двойной вклад из агрегатной MV.

Источник: clickhouse.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее