Generador de ULID
Genera de forma masiva ULID, identificadores ordenables cronológicamente que funcionan como alternativa a los UUID.
Consejos de uso
- Los primeros 10 caracteres de un ULID codifican una marca de tiempo (el momento de creación), mientras que los 16 restantes son aleatorios. Salvo que dos ULID se generen en el mismo milisegundo, basta con ordenarlos como cadenas de texto para obtener el orden cronológico de creación.
- Usar un UUID v4 completamente aleatorio como clave primaria en una base de datos tiende a fragmentar los índices B-tree, ya que las nuevas filas se insertan en posiciones aleatorias. Como los ULID se ordenan aproximadamente por tiempo, las filas nuevas se añaden cerca del final del índice, lo que ayuda a mitigar este problema.
- Un ULID se representa con 26 caracteres en Base32 de Crockford (el alfabeto de 32 caracteres `0`-`9` y `A`-`Z` sin las letras I, L, O y U, fáciles de confundir), lo que lo hace más corto que un UUID (36 caracteres incluyendo guiones) y seguro de usar en entornos que no distinguen mayúsculas de minúsculas.
- Para comparar formatos con Nano ID y UUID v4, consulta la tabla comparativa disponible en nuestra herramienta hermana, el Generador de Nano ID.
Preguntas frecuentes
A propósito — cómo ULID introdujo el orden cronológico en el mundo de los identificadores
La especificación ULID fue publicada en 2016 por Alizain Feerasta. En aquel momento, UUID ya era el método estándar para generar identificadores únicos en sistemas distribuidos, pero su naturaleza completamente aleatoria (que impedía ordenarlos) resultaba poco práctica para la eficiencia de los índices de bases de datos y para el análisis temporal de registros (logs). ULID nació precisamente para resolver ese problema.
En realidad, UUID también tiene variantes basadas en tiempo: la versión 1 (dirección MAC más marca de tiempo) y la versión 7 (estandarizada en 2024, que combina marca de tiempo y valores aleatorios). Sin embargo, ULID es una especificación independiente, distinta del estándar UUID (RFC 4122), y se distingue por perseguir un diseño más simple junto con una representación compacta en Base32.
Hoy en día existen bibliotecas de implementación de ULID en prácticamente todos los lenguajes de programación importantes, y se usa ampliamente en escenarios donde importa conservar el orden de creación: identificadores de eventos en sistemas distribuidos, identificadores de traza en registros y claves primarias de bases de datos, entre otros. Su filosofía de diseño coincide en gran medida con la de UUID v7, que surgió por la misma época, y ambos coexisten como enfoques distintos para el mismo objetivo: un identificador ordenable similar al UUID.