¿Cómo generar ID únicos (UUID)?


UUID (Universally Unique ID) es un estándar (parte de ISO/IEC 11578:1996) para crear identificadores únicos universales para identificar objetos en un sistema.

El UUID tiene un longitud de 128 bit (16 bytes) y aunque no garantiza la unicidad, la probabilidad de colisiones es reducida debido al número de bits y a la forma en que éstos son generados.

Los algoritmos de creación de UUID están especificados en RFC4122. Un ejemplo de UUID sería el siguiente:


A la hora de usar el UUID:

  • JAVA:

Veamos un ejemplo de implementación con Java 5 o superior:

El resultado de la ejecución sería:

  • PHP:

Tan sólo existe una función en PHP con un comportamiento parecido, y es uniqid(), pero no sigue el estándar UUID.

Debemos recurrir a librerías externas. Una ejemplo de una de ellas podría ser esta, que podemos descargar desde aquí.

Como requisitos debemos saber que la clase tiene las siguientes clases públicas que retornan valores dependiendo del formato del argumento:

También hemos de saber que existen varias versiones de UUID aquí implementadas, las cuales tenemos:

– Version 1: UUID basado en la fecha/hora.
– Version 4: Pseudoaleatoria.
– Version 3 y 5: Basada en el nombre UUID, usando MD5 en caso de la versión 3 o SHA-1 en el caso de la versión 5.

Las constantes de la versión de UUID, donde cada una representa a una de las versiones específicas:

Formato de las constantes UUID:

  • FMT_BYTE es la constante por defecto y devuelve un array de bytes que representan el UUID de 128-bit.
  • FMT_FIELD devuelve un array asociativo con campos individuales con el formato especificado en RFC4122.
  • FMT_STRING devuelve una representación familiar ASCII de un UUID (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx).
  • FMT_BINARY devuelve una representación binaria pura de 128-bit del UUID.

El método convert puede usarse para convertir entre estas representaciones.

En la web arriba mostrada podemos ver algunos ejemplos.