検索システムのバックエンド アプリケーションを開発しています。検索システムはファイルを一時ディレクトリにコピーし、ランダムな名前を付けます。次に、一時ファイルの名前をアプリケーションに渡します。私のアプリケーションは、限られた時間内に各ファイルを処理する必要があります。それ以外の場合はシャットダウンされます。これはウォッチドッグのようなセキュリティ対策です。ファイルの処理には時間がかかる可能性が高いため、このシナリオを処理できるアプリケーションを設計する必要があります。次に検索システムが同じファイルのインデックスを作成しようとしたときにアプリケーションがシャットダウンされた場合、別の一時的な名前が付けられる可能性があります。
明白な解決策は、検索システムとバックエンドの間に中間層を提供することです。バックエンドへのリクエストをキューに入れ、結果が到着するのを待ちます。リクエストが中間層でタイムアウトした場合 - 問題ありません。バックエンドは引き続き動作し、中間層のみが再起動され、後で検索システムによってリクエストが繰り返されたときにバックエンドから結果を取得できます。
問題は、ファイルを識別する方法です。それらの名前はランダムに変わります。MD5 のようなハッシュ関数を使用して、ファイルの内容をハッシュするつもりです。私は誕生日のパラドックスをよく知っており、リンクされた記事からの推定を使用して確率を計算しました。100,000 個以下のファイルがあると仮定すると、2 つのファイルが同じ MD5 (128 ビット) を持つ確率は約 1,47x10 -29です。
このような衝突確率を気にする必要がありますか、それともハッシュ値が等しいとファイルの内容が等しいと仮定する必要がありますか?