Esto es básicamente un problema matemático, pero muy relacionado con la programación: si tengo 1 000 millones de cadenas que contienen URL y tomo los primeros 64 bits del hash MD5 de cada uno de ellos, tipo de frecuencia de colisión debería esperar?Identificación única de URL con un número de 64 bits
¿Cómo cambia la respuesta si solo tengo 100 millones de URL?
Me parece que las colisiones serán extremadamente raras, pero estas cosas tienden a ser confusas.
¿Sería mejor utilizar algo que no fuera MD5? Eso sí, no estoy buscando seguridad, solo una buena función rápida de hash. Además, el soporte nativo en MySQL es bueno.
EDITAR: not quite a duplicate
Entonces, ¿te refieres a 2^64 (18,446,744,073,709,551,616) donde dijiste 2^32, arriba? La pregunta habla de 64 bits, pero no de 32. – unwind
No, quiere decir 2^32. Eso significa que para las URL de 100M hay menos de 1% de probabilidad de 1 colisión. Creo que lo tomaré. – itsadok
Eso es correcto, itsadok, quiero decir 2^32, no 2^64. Ese es el punto de la paradoja del cumpleaños: la posibilidad de que dos valores aleatorios coincidan entre sí es sin dudas mucho más alta que la posibilidad de que un valor aleatorio coincida con un solo objetivo –