Murmur es una familia de buenas funciones hash de propósito general, adecuadas para uso no criptográfico. Según lo declarado por Austin Appleby, MurmurHash brinda los siguientes beneficios:
- simple (en términos de número de instrucciones de montaje generadas).
- buena distribución (superando las pruebas de chi-cuadrado para prácticamente todos los juegos de llaves y tamaños de depósito).
- buen comportamiento ante avalanchas (sesgo máximo de 0,5 %).
- buena resistencia a colisiones (pasa la prueba de tortura frog.c de Bob Jenkin. No hay colisiones posibles para claves de 4 bytes, no hay diferencias pequeñas (de 1 a 7 bits)).
- gran rendimiento en hardware Intel/AMD, buen compromiso entre calidad de hash y consumo de CPU.
Sin duda, puede usarlo para codificar UUID (como cualquier otra función de cifrado avanzada:CityHash, Jenkins, Paul Hsieh, etc.). Ahora, un conjunto de bits de Redis está limitado a 4 GB de bits (512 MB). Por lo tanto, debe reducir 128 bits de datos (UUID) a 32 bits (valor hash). Sea cual sea la calidad de la función hash, habrá colisiones.
El uso de una función hash diseñada como Murmur maximizará la calidad de la distribución y minimizará la cantidad de colisiones, pero no ofrece ninguna otra garantía.
Aquí hay algunos enlaces que comparan la calidad de las funciones hash de uso general:
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/