URL をデータベースに保存しています。新しい URL を挿入するときに、その URL がデータベースに既に存在するかどうかを確認したいと考えています。
一般的な方法 (私が間違っていなければ) は、md5 や sha-1 などを使用して URL をハッシュし、新しいフィールドを挿入する前にデータベース内のそのフィールドの重複をチェックすることです。
私はmd5が衝突を引き起こす可能性があることを知っています.sha-1も...
あなたは私に何を提案しますか? 私のニーズは次のとおりです。
DB サイズ:最終的にデータベースに 1000 万から 2000 万のレコード
パフォーマンス/速度:ハッシュ サイズが小さいため、データベースの重複チェックに大きな負荷がかかりません (もちろん、そのフィールドにはインデックスが作成されます)。
許容範囲: 100,000 レコードごとに 1 つの衝突が発生してもかまいません。私のニーズは、0% の衝突 (大きなハッシュ) ではなく、パフォーマンス (小さなハッシュ) です。
意図的に衝突を引き起こす不正な URL による攻撃の可能性:非常に低い
このような攻撃が成功した場合に可能な最大ダメージ:非常に低い
質問:
md5 で十分だと思いますか (もっと良い提案があります)。
たぶん、md5 は私にとってやり過ぎであり、もっと単純なものを使用することでパフォーマンス上の利点を真剣に得ることができますか?
よろしくお願いします!