Обнаружение дубликатов в системе интеграции данных - PullRequest
0 голосов
/ 16 апреля 2020

Я ищу способы избежать передачи дубликатов файлов при передаче по HTTP и SFTP. Моя система сохраняет состояние передачи каждый раз, когда передача выполняется во внешний кэш.

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

Один из способов улучшить это - обновить кэш до и после передачи, чтобы я имел представление о файле. Но есть ли другой способ избежать этого? Поскольку после передачи файла во внешнюю систему невозможно отменить его, если запись состояния не удалась. Какие-нибудь мысли?

1 Ответ

0 голосов
/ 16 апреля 2020

Я регулярно синхронизирую внешние данные и написал достаточно процессов, чтобы говорить на эту тему. Вы запрашиваете логистические решения, даже не упоминая контекст данных и его цель доставки в другое место.

Пытаетесь ли вы зеркально скопировать мастер-копию файла в другое место? Если это так, то вам нужно просто доставить файл с прикрепленным уникальным номером доставки, что позволит получателю независимо синхронизировать оба набора данных и обрабатывать любые обнаруженные различия в файлах. Если вы принудительно выполняете эту работу от имени получателя, возможно, вы уничтожаете данные. Я настоятельно рекомендую, чтобы получатель извлекал данные по мере необходимости и сам синхронизировал / обрабатывал их, а не выдвигал их. Таким образом, эти бизнес-правила организованы там, где они должны быть. Pu sh процессы плохие.

Вы пытаетесь разрешить пользователям перезаписывать мастер-файл своими собственными копиями, спрашивая, как координировать свои загрузки, чтобы файл не перезаписывался? Если это так, вам нужно отнять у них прямой контроль, чтобы перезаписать этот файл. Вам необходимо отдельно синхронизировать каждый файл в соответствии с пользовательским процессом, потому что у каждого из них могут быть свои собственные бизнес-правила.

Когда вы говорите «ищите внешний кеш, и есть ли запись для текущего файла с статус УСПЕХ, файл будет пропущен ", вы дали слишком большую ответственность перед доставщиком. Я говорю это, но как ты узнал? При производстве никто не должен делать больше, чем нести груз. Потребители несут ответственность за распределение этого пространства. Если потребителю действительно нужен файл, пусть он примет решение заказать его и обработать его получение, а не заставляет доставителя жонглировать такими решениями.

...