, que es la mejor clave principal para almacenar la dirección del sitio web y las URL de las páginas?¿Cuál es la mejor clave principal para almacenar las URL
Para evitar el uso de identificación autoincremental (que no está realmente vinculada a los datos), diseñé el esquema con el uso de una firma SHA1 de la URL como clave principal.
Este enfoque es útil de muchas maneras: por ejemplo, no necesito leer el last_id de la base de datos para poder preparar todas las actualizaciones de la tabla calculando la clave y hacer la actualización real en una sola transacción. Sin restricción de restricción.
De todos modos, leí dos libros que me dicen que estoy equivocado. En "MySQL de alto rendimiento" se dice que la clave aleatoria no es buena para el optimizador de DB. Además, en los libros de Joe Celko dice que la clave principal debe ser parte de los datos.
La pregunta es: las claves naturales para las URL son ... Las propias URL. El hecho es que si para un sitio es corto (www.something.com), no hay un límite impuesto para am URL (ver http://www.boutell.com/newfaq/misc/urllength.html).
Considere que tengo que almacenar (y trabajar con) algunos millones de ellos.
¿Cuál es la mejor clave, entonces? Autoincremental ids, URLs, hashes de URLs?
Creo que va a depender mucho de qué más está haciendo con estas URL, patrones de acceso, etc. El uso de SHA1 debería estar a salvo de colisiones, donde una función hash más corta (por ejemplo, CRC32) obviamente sería inapropiada, pero las colisiones aún pueden ser posibles, solo tendrás mala suerte. –