ULID Generator
Understand ULID Generator
Genera ULID: identificadores de 26 caracteres cuyos primeros caracteres codifican la hora de creación, de modo que se ordenan cronológicamente como texto plano.
How it works
Un ULID son 128 bits: una marca de tiempo de 48 bits en milisegundos seguida de 80 bits aleatorios, escritos en Base32 de Crockford como 10 caracteres de marca de tiempo y 16 aleatorios. Como esa codificación preserva el orden, ordenar las cadenas ordena por hora de creación, que es lo que hace que los ULID resulten baratos como claves de base de datos: las filas nuevas se añaden al final del índice en lugar de dispersarse por él. El alfabeto omite I, L, O y U para que la transcripción no sea ambigua.
When to use it
- Claves primarias de una tabla donde quiere orden temporal sin una secuencia centralizada.
- Identificadores de eventos, logs o mensajes que después querrá recorrer por rangos de tiempo.
- Identificadores generados de forma independiente en varios servicios que aun así deben ordenarse juntos.
- Cualquier sitio donde recurriría a un UUID v4 pero le importa la localidad del índice.
- Identificadores que una persona pueda tener que leer en pantalla, donde ayuda el alfabeto restringido.
Watch out for
- La ordenación solo llega hasta donde llega el reloj. El modo monotónico mantiene ordenado un lote dentro de un mismo milisegundo incrementando el componente aleatorio, pero dos ULID generados en máquinas distintas se ordenan según los relojes de esas máquinas, así que unos pocos milisegundos de desfase los reordenan.
- La hora de creación es pública. Los 10 primeros caracteres se descodifican directamente en una marca de tiempo en milisegundos, así que quien tenga un ULID sabe cuándo se creó el registro.
- El Base32 de Crockford no distingue mayúsculas sobre el papel, pero un índice de base de datos que compara bytes en bruto sí lo hace. Esta herramienta emite siempre en mayúsculas; almacene una sola caja de forma coherente o la ordenación y la igualdad le darán sorpresas.
- El componente aleatorio son 80 bits frente a los 122 de un UUID v4, lo que solo importa dentro de un mismo milisegundo, pero sí significa que un ULID es peor opción que un UUID v4 cuando el identificador tiene que ser imposible de adivinar.
Frequently Asked Questions
¿Por qué ULID es mejor que UUID v4 como clave primaria de base de datos?
El UUID v4 es aleatorio, lo que provoca inserciones aleatorias en el árbol B y una fragmentación grave del índice a escala. ULID está ordenado por tiempo: los registros nuevos se insertan siempre al final del índice, igual que un entero autoincremental, pero con unicidad global.
¿Qué es el modo monotónico en ULID?
Cuando varios ULID caen en el mismo milisegundo, el modo monotónico incrementa en uno el componente aleatorio anterior en lugar de extraer bits aleatorios nuevos. Eso garantiza un orden lexicográfico estricto dentro de un milisegundo, algo que los ULID puramente aleatorios no pueden. Este generador usa el modo monotónico por defecto cuando se pide un lote.
¿ULID distingue mayúsculas de minúsculas?
No: ULID usa el Base32 de Crockford (0-9, A-Z excluyendo I, L, O y U), que por diseño no distingue mayúsculas. 01AN4Z07BY es lo mismo que 01an4z07by. El alfabeto también evita los caracteres visualmente confusos.
How to Use ULID Generator
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.