1

URL をデータベースに保存しています。新しい URL を挿入するときに、その URL がデータベースに既に存在するかどうかを確認したいと考えています。

一般的な方法 (私が間違っていなければ) は、md5 や sha-1 などを使用して URL をハッシュし、新しいフィールドを挿入する前にデータベース内のそのフィールドの重複をチェックすることです。

私はmd5が衝突を引き起こす可能性があることを知っています.sha-1も...

あなたは私に何を提案しますか? 私のニーズは次のとおりです。

  • DB サイズ:最終的にデータベースに 1000 万から 2000 万のレコード

  • パフォーマンス/速度:ハッシュ サイズが小さいため、データベースの重複チェックに大きな負荷がかかりません (もちろん、そのフィールドにはインデックスが作成されます)。

  • 許容範囲: 100,000 レコードごとに 1 つの衝突が発生してもかまいません。私のニーズは、0% の衝突 (大きなハッシュ) ではなく、パフォーマンス (小さなハッシュ) です。

  • 意図的に衝突を引き起こす不正な URL による攻撃の可能性:非常に低い

  • このような攻撃が成功した場合に可能な最大ダメージ:非常に低い

質問:

  • md5 で十分だと思いますか (もっと良い提案があります)。

  • たぶん、md5 は私にとってやり過ぎであり、もっと単純なものを使用することでパフォーマンス上の利点を真剣に得ることができますか?

よろしくお願いします!

4

1 に答える 1

0

md5 や類似の比較的安価なハッシュ (おそらくQuark ?) を使用して、一致するエントリの完全な URL を確認するまれなケースではどうでしょうか? この方法では、ほとんどの場合、安価なハッシュ チェックを行うだけで、実際に重複する URL を挿入することはありません。

于 2011-09-13T00:27:46.173 に答える