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