私はMurmurHashが何をするのかを高レベルで理解しようとしてきました。
私は基本的な説明を読みましたが、それをいつ使用するのか、そしてその理由についての良い説明をまだ見つけていません。私はその非常に速いことを知っていますが、もう少し知りたいです。
UUIDをRedisビットセットに適合させる方法について関連する質問をしました。誰かがMurmurHashの使用を提案しました。それは機能しますが、リスク/メリットを理解したいと思います。
私はMurmurHashが何をするのかを高レベルで理解しようとしてきました。
私は基本的な説明を読みましたが、それをいつ使用するのか、そしてその理由についての良い説明をまだ見つけていません。私はその非常に速いことを知っていますが、もう少し知りたいです。
UUIDをRedisビットセットに適合させる方法について関連する質問をしました。誰かがMurmurHashの使用を提案しました。それは機能しますが、リスク/メリットを理解したいと思います。
Murmur は、非暗号化の使用に適した、優れた汎用ハッシュ関数のファミリーです。Austin Appleby が述べているように、MurmHash には次の利点があります。
もちろん、UUID をハッシュするために使用できます (他の高度なハッシュ関数と同様に: CityHash、Jenkins、Paul Hsieh など...)。現在、Redis ビットセットは 4 GB ビット (512 MB) に制限されています。したがって、128 ビットのデータ (UUID) を 32 ビット (ハッシュ値) に減らす必要があります。ハッシュ関数の品質に関係なく、衝突が発生します。
Murmur のような設計されたハッシュ関数を使用すると、分布の品質が最大になり、衝突の数が最小になりますが、それ以外の保証はありません。
汎用ハッシュ関数の品質を比較するいくつかのリンクを次に示します。
http://www.azillionmonkeys.com/qed/hash.html
http://www.strchr.com/hash_functions
http://blog.aggregateknowledge.com/2011/12/05/choosing-a-good-hash-function-part-1/
http://blog.aggregateknowledge.com/2011/12/29/choosing-a-good-hash-function-part-2/
http://blog.aggregateknowledge.com/2012/02/02/choosing-a-good-hash-function-part-3/