Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

¿Porqué usar Primary Key extensas?

Estas en el tema de ¿Porqué usar Primary Key extensas? en el foro de Mysql en Foros del Web. Normalmente las llaves primarias se las toma como auto numérico ,la combinación de 2 llaves extranjeras o en último caso algún varchar por ahi que ...
  #1 (permalink)  
Antiguo 15/09/2009, 19:40
 
Fecha de Ingreso: septiembre-2009
Mensajes: 13
Antigüedad: 14 años, 7 meses
Puntos: 0
¿Porqué usar Primary Key extensas?

Normalmente las llaves primarias se las toma como auto numérico ,la combinación de 2 llaves extranjeras o en último caso algún varchar por ahi que identifique a la persona como única.
Pero revisando un base datos que me pasaron, me encuentro con llaves primarias enormes:

84229c58-0ab1-3835-a88a-5987b9ef7f22

Tiene dígitos hexadecimales que forman : 8-4-4-4-12 es llave primaria y es única, he aquí mi duda:

¿Porqué utilizar conbinaciónes tan grandes?
¿Porqué separar los dígitos en todas las tablas de esta forma?

lo primero que se me viene a la mente es por seguridad ya que esto esta expuesto al publico, pero ¿porqué tan enorme?, la cantidad de recursos que consume el sistema para generar esta llave es bastante.

Bueno en fin, agradezco sus comentarios de antemano.
Gracias....
  #2 (permalink)  
Antiguo 15/09/2009, 20:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: ¿Porqué usar Primary Key extensas?

Esto:
Cita:
84229c58-0ab1-3835-a88a-5987b9ef7f22
No es solamente una PK. Es una PK obtenida con la función UUID(), la cual:
Cita:
Retorna un Universal Unique Identifier (UUID) (Identificador Único Universal) generado según la “DCE 1.1: Remote Procedure Call” (Apéndice A) CAE (Common Applications Environment) Especificaciones publicadas por The Open Group en Octubre 1997 (Número de Documento C706).

Se designa un UUID como número que es único globalmente en espacio y tiempo. Dos llamadas a UUID() generan dos valores distintos, incluso si estas llamadas se realizan en dos máquinas separadas y no están conectadas entre ellas.
(Extraído del Manual de Referencia de MySQL).

Como verás, quienes hayan creado esa tabla con tal PK es porque deseaban un identificador que fuese absolutamente imposible de repetir, bajo ninguna circunstancia. El por qué deseaban eso, es una cuestión de diseño o de seguridad.

Continuando con el MR:
Cita:
Un UUID es un número de 128 bits representado por una cadena de cinco números hexadecimales en formato aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:

- Los primeros tres números se generan de un valor temporal.
- El cuarto número preserva unicidad temporal en caso de que el valor temporal pierda moniticidad (por ejemplo, debido al cambio horario).
- El quinto número es un número IEEE 802 de nodo que proporciona unicidad espacial. Un número aleatorio se sustituye si el último no está disponible (por ejemplo, debido a que la máquina no tenga tarjeta Ethernet, o no sabemos encontrar la dirección hardware de una interfaz en el sistema operativo). En este caso, la unicidad espacial no se puede garantizar. Sin embargo, una colisión debe tener una probabilidad muy baja.

Actualmente, la dirección MAC de una interfaz se tiene en cuenta sólo en FreeBSD y Linux. En otros sistemas operativos, MySQL usa un número generado aleatoriamente de 48 bits.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 15/09/2009, 20:21
 
Fecha de Ingreso: septiembre-2009
Mensajes: 13
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ¿Porqué usar Primary Key extensas?

Muchas gracias gnzsoloyo, muy interesante la explicación, y en el manual dice todo, jeje ni se me ocurrio mirarlo.
Habia escucha de este tipo de operaciones pero solo para la función rnd().

Muy buen comentario.
  #4 (permalink)  
Antiguo 16/09/2009, 05:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ¿Porqué usar Primary Key extensas?

Solo agregar que el Identificador Único Universal se usa para trabajar con replicas de la base de datos.

Es decir copias de la bbdd que trabajan simultáneamente y sin conexión entre ellas. Mediante un proceso llamado de sincronización se consigue que las replicas, copias, vuelvan a ser idénticas aplicando las transacciones que se han ejecutado por separado de manera consistente. Es decir la bbdd conserva su coherencia aún que se modifique en copias separadas... Esto permite trabajar sobre la bbdd en entornos sin conexión permanente, obviamente en algún momento deben conectarse las distintas replicas para poder aplicar el proceso de sincronización.

De la explicación de gnzsoloyo se desprende o intuye como puede funcionar el proceso de sincronización, ya que se dispone de un identificador único globalmente en espacio y tiempo, es decir se puede comparar donde y cuando se han generado los registros...

No tengo experiencia en bbdd gestionadas de esta manera pero supongo que tendrá sus limitaciones...

Quim

Última edición por quimfv; 16/09/2009 a las 05:38
  #5 (permalink)  
Antiguo 16/09/2009, 09:22
 
Fecha de Ingreso: septiembre-2009
Mensajes: 13
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: ¿Porqué usar Primary Key extensas?

bbdd Gestionadas!
Bueno... tendré que pornerme las pilas, gracias por la ayuda.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:38.