Автоматизация проектирования

Идемпотентная загрузка: повторный запуск не должен менять данные

Загрузку перезапускают всегда: сбой, правка, повтор после исправления. Идемпотентность — свойство, без которого повтор удваивает строки, а разбор занимает день.

Что такое идемпотентность на практике

Повторный запуск загрузки за тот же период не меняет результат. Ни строк, ни сумм, ни версий. Это не свойство платформы, а свойство конвейера, и его надо проектировать.

Три вещи, которые её ломают

  1. Вставка без удаления предыдущей загрузки того же периода.
  2. Счётчики, которые инкрементируются при каждом запуске.
  3. Зависимость от текущего времени вместо даты среза.

Как это выглядит в схеме

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

Журнал ошибок нужен не для отчётности: без него повторный запуск «успешен», а часть данных молча отсутствует.

Как проверить

Загрузка запускается дважды подряд на одном и том же срезе. Результат должен совпасть построчно. Затем запускается на срезе с заведомо испорченной строкой: она должна попасть в журнал, а остальные данные — загрузиться.

Эти две проверки дешевле любого разбора инцидента и делаются до первого боевого запуска.

Ограничение

Идемпотентность не решает проблему изменений в источнике: если источник переписал историю, конвейер честно загрузит новую версию. Бороться с этим нужно на входе — сверкой и историчностью, а не повторными запусками.

Объекты по теме

Другие статьи из категории

Похожие статьи

Все статьи →

Автоматизация проектирования

Обследование башен и мачт: что проверять и в каком порядке

Высотное сооружение обследуют не целиком за один выход, а по шагам: документы, геометрия, соединения, основание. Что даёт каждый шаг и что…

Автоматизация проектирования

История атрибутов вместо перезаписи: почему отчёты не сходятся

Один и тот же договор в двух отчётах даёт разные суммы, когда атрибуты перезаписываются. Историчность строки объясняет расхождение версией,…

Автоматизация проектирования

Поиск по нормам с источником: как проверять ответ ИИ-инструмента

Ответ без ссылки на пункт проверять нечем. Что должен отдавать инструмент поиска по нормативной базе, чтобы им можно было пользоваться в…

Автоматизация проектирования

Каркас промышленного здания: порядок проектирования и типовые ошибки

Порядок работы над каркасом: компоновка, схема, нагрузки, сечения, узлы. Где чаще всего возвращаются назад и как этого избежать, не…

Автоматизация проектирования

Отклонение башни от вертикали: что измерять и как читать результат

Одно число отклонения ничего не говорит: нужен профиль по ярусам, привязка к высоте и сравнение с проектом. Как измеряется и где результат…

Нужен расчёт?

Пришлите исходные данные — уточним состав работы и ответим по срокам.

Связаться