Для надёжной загрузки используйте согласованный начальный снимок и CDC по WAL. Простой курсор id > last_id может пропустить поздно закоммиченную строку.
Есть большая PostgreSQL-таблица, в которую постоянно приходят новые записи с монотонно растущим первичным ключом. Как организовать загрузку данных в ClickHouse?
Для надёжной загрузки используйте согласованный начальный снимок и CDC по WAL. Простой курсор id > last_id может пропустить поздно закоммиченную строку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для надёжной загрузки используйте согласованный начальный снимок и CDC по WAL. Простой курсор id > last_id может пропустить поздно закоммиченную строку.
Последовательность выдачи ID не гарантирует порядок коммитов: транзакция с меньшим ID может завершиться после продвижения watermark. Поэтому монотонный ключ сам по себе не делает инкремент безопасным.
Если источник действительно append-only и гарантирует порядок видимости, можно читать небольшими диапазонами и фиксировать курсор после подтверждённой записи. В общем случае CDC надёжнее; нужны контроль позиции журнала, повторная доставка и дедупликация по ключу события. Первичную загрузку выполняйте порциями без длительной перегрузки источника.