約 20 億の文字列のハッシュを保存したいと考えています。そのためには、できるだけ少ないストレージを使用したいと考えています。
一連の 16 進数としてハッシュを返す理想的なハッシュ アルゴリズムを考えてみましょう (md5 ハッシュなど)。アイデアを理解する限り、これは、ハッシュの長さが8シンボル以下である必要があることを意味します。そのようなハッシュは 40 億以上 (16 * 16 * 16 * 16 * 16 * 16 * 16 * 16) の異なる文字列をハッシュできるためです。
それで、スペースを節約するためにハッシュを特定の長さにカットしても安全かどうか知りたいですか?(もちろん、ハッシュは衝突すべきではありません)
はい/いいえ/おそらく - 説明または関連研究へのリンクを含む回答をいただければ幸いです。
Ps - 8 文字のハッシュで 20 億個の文字列を格納できるかどうかをテストできることはわかっています。しかし、20 億のハッシュと 20 億の切り捨てられたバージョンを比較する必要があります。私には些細なことではないように思えるので、そうする前に聞いた方がいいでしょう。