Я разрабатываю back-end приложение для поисковой системы. Система поиска копирует файлы во временный каталог и дает им случайные имена. Затем он передает имена временных файлов в мое приложение. Мое приложение должно обрабатывать каждый файл в течение ограниченного периода времени, в противном случае он отключается - это мера безопасности, подобная сторожевому таймеру. Обработка файлов, вероятно, займет много времени, поэтому мне нужно разработать приложение, способное обрабатывать этот сценарий. Если мое приложение будет отключено в следующий раз, когда поисковая система хочет индексировать один и тот же файл, он, скорее всего, даст ему другое временное имя.
Очевидным решением является предоставление промежуточного слоя между поисковой системой и бэкэнд. Он поставит очередь на запрос на бэкэнд и дождитесь, пока результат не появится. Если запрос истекает на промежуточном уровне - без проблем, бэкэнд продолжит работу, перезапускается только промежуточный уровень, и он может извлечь результат из бэкэнд, когда запрос будет повторно повторен поисковой системой.
Проблема заключается в том, как идентифицировать файлы. Их имена изменяются случайным образом. Я намерен использовать хеш-функцию, такую как MD5, для хеширования содержимого файла. Я хорошо знаю парадокс дня рождения и использовал оценку из связанной статьи для вычисления вероятности. Если я предполагаю, что у меня есть не более 100 файлов, вероятность того, что два файла имеют тот же MD5 (128 бит), составляет около 1,47x10 -29.
Должен ли я заботиться о такой вероятности столкновения или просто предположить, что равные хеш-значения означают равное содержимое файла?