Идемпотентность как страховка от дорогих ошибок
Идемпотентность в данных — это способность повторного запуска не менять итоговый смысл результата. На практике это означает, что после сбоя вы не боитесь нажать “run again”, потому что повтор не нагенерирует дубли и не испортит витрины. Самое неприятное в неидемпотентных пайплайнах — не само падение, а стоимость восстановления: человеко-часы на разбор, риск «почистили не то», и потеря доверия к цифрам, когда разные люди начинают видеть разные значения.
Добиться идемпотентности обычно проще, чем кажется, если рассуждать через правила записи и ключи. В сырье можно фиксировать факт доставки и не переживать о повторах, потому что downstream всё равно переигрывается. В нормализованном и витринном слоях важно, чтобы ключ сущности и правило обновления были стабильными, а обработка периода имела предсказуемую семантику. Когда это реализовано, команда перестаёт жить в страхе перед ретраями и backfill, а платформа начинает вести себя как инженерная система, а не как лотерея.