integration
Словарь ↗Распространение удалений
Распространение удалений — это то, как удаление записи в одной системе отражается или не отражается в другой. Это самое трудное для корректной обработки событие в любой интеграции, и причина здесь структурная, а не в старательности: запрос «всё, что изменилось с прошлого прогона» возвращает записи, которые ещё существуют, а удалённая запись — ровно та, которая не вернётся. Интеграция, построенная на таком запросе, по своему устройству слепа к удалениям. Закрыть этот пробел можно тремя способами, и доступны они неодинаково. Источник может отдавать явное событие удаления — единственный чистый ответ, и это первое, что стоит искать в документации поставщика. Источник может вместо этого применять мягкое удаление: строка остаётся, переключается флаг, запись по-прежнему попадает в выборку изменённых, и получатель действует по флагу. Либо получатель выводит удаление из отсутствия при полном сравнении — а это работает, только если сравнение действительно было полным. Именно здесь интеграции уничтожают данные: прерванное чтение, фильтр, тихо отсёкший часть выборки, ошибка постраничного обхода или истёкшее право доступа дают ровно ту же картину, что и массовое удаление: записи были, записей нет. Эта асимметрия и должна задавать значения по умолчанию. Удаление необратимо не так, как запись неверного значения, поэтому принимающей стороне лучше помечать запись неактивной, а не убирать её, хранить идентификатор источника, чтобы восстановление было возможным, и останавливать на подтверждение человеком любой проход, который снёс бы необычно большую долю записей, вместо того чтобы продолжать, раз уж так решила логика. Там, где жёсткое удаление действительно требуется — клиент попросил стереть данные или того требует правило хранения, — этот путь заслуживает быть отдельным, осознанным и журналируемым, а не побочным эффектом обычной синхронизации. Каким бы ни был механизм, журнал аудита должен показывать, что это сделала интеграция и на какое событие она реагировала. Вопрос после исчезновения данных всегда один и тот же, и интеграция, не способная на него ответить, неотличима от той, в которой есть ещё не найденная ошибка.
Похожие термины