Genera Identificadores Únicos Universales (UUID) para diversas aplicaciones. Crea tanto UUIDs de versión 1 (basados en el tiempo) como UUIDs de versión 4 (aleatorios) para su uso en sistemas distribuidos, bases de datos y más.
Un Identificador Único Universal (UUID) es un número de 128 bits utilizado para identificar información en sistemas informáticos. Los UUID son estandarizados por la Open Software Foundation (OSF) como parte del Entorno de Computación Distribuida (DCE). Estos identificadores están diseñados para ser únicos tanto en el espacio como en el tiempo, lo que los hace ideales para diversas aplicaciones en sistemas distribuidos y más allá.
Esta herramienta generadora de UUID te permite crear tanto UUIDs de versión 1 (basados en tiempo) como UUIDs de versión 4 (aleatorios). Estos identificadores son útiles en varios escenarios donde se requiere identificación única, como claves de base de datos, sistemas distribuidos y protocolos de red.
Un UUID se representa típicamente como 32 dígitos hexadecimales, mostrados en cinco grupos separados por guiones, en la forma 8-4-4-4-12 para un total de 36 caracteres (32 caracteres alfanuméricos y 4 guiones). Por ejemplo:
1550e8400-e29b-41d4-a716-446655440000
2
Los 128 bits de un UUID se dividen en campos específicos, cada uno llevando diferente información dependiendo de la versión del UUID:
Aquí hay un diagrama que ilustra la estructura del UUID:
Existen varias versiones de UUID, cada una con su propio método de generación:
Esta herramienta se centra en generar UUIDs de versión 1 y versión 4.
Los UUIDs de versión 1 se generan utilizando los siguientes componentes:
La fórmula para generar un UUID de versión 1 se puede expresar como:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
Los UUIDs de versión 4 se generan utilizando un generador de números aleatorios criptográficamente fuerte. La fórmula es simplemente:
1UUID = random_128_bit_number
2
Con bits específicos establecidos para indicar la versión (4) y la variante.
Los UUIDs tienen numerosas aplicaciones en varios dominios de la informática y la ingeniería de software:
Claves de base de datos: Los UUIDs se utilizan a menudo como claves primarias en bases de datos, especialmente en sistemas distribuidos donde múltiples nodos pueden estar generando registros simultáneamente.
Sistemas distribuidos: En sistemas distribuidos a gran escala, los UUIDs ayudan a identificar de manera única recursos, transacciones o eventos en múltiples nodos o centros de datos.
Direccionamiento de contenido: Los UUIDs se pueden utilizar para crear identificadores únicos para contenido en sistemas de almacenamiento direccionables por contenido.
Gestión de sesiones: Las aplicaciones web a menudo utilizan UUIDs para gestionar sesiones de usuario, asegurando que cada sesión tenga un identificador único.
Identificación de dispositivos IoT: En aplicaciones de Internet de las Cosas (IoT), los UUIDs se pueden utilizar para identificar de manera única dispositivos individuales en una red.
Si bien los UUIDs son ampliamente utilizados, existen enfoques alternativos para generar identificadores únicos:
IDs autoincrementales: Simples y comúnmente utilizados en sistemas de base de datos únicos, pero no adecuados para entornos distribuidos.
IDs basados en tiempo: Pueden ser útiles para datos ordenados por tiempo, pero pueden enfrentar problemas de colisión en escenarios de alta concurrencia.
IDs de Snowflake: Desarrollados por Twitter, estos IDs combinan la marca de tiempo y el número de trabajador para generar IDs únicos en sistemas distribuidos.
ULID (Identificador Universal Único Lexicográficamente Ordenable): Una alternativa más reciente que busca ser más amigable para los humanos y ordenable que los UUIDs.
El concepto de UUIDs fue introducido por primera vez en el Sistema de Computación de Red Apollo y más tarde estandarizado por la Open Software Foundation (OSF) como parte del Entorno de Computación Distribuida (DCE) en la década de 1990. La especificación inicial se publicó en 1997 como ISO/IEC 11578:1996 y se revisó más tarde en 2005 como parte de ISO/IEC 9834-8:2005.
Hitos clave en la historia de UUID:
Con el tiempo, los UUIDs se han convertido en una herramienta esencial en sistemas distribuidos y diseño de bases de datos, con varias implementaciones y adaptaciones en diferentes lenguajes de programación y plataformas.
Aquí hay ejemplos de generación de UUIDs en varios lenguajes de programación:
1import uuid
2
3## Generar un UUID de Versión 4 (aleatorio)
4random_uuid = uuid.uuid4()
5print(f"UUID de Versión 4: {random_uuid}")
6
7## Generar un UUID de Versión 1 (basado en tiempo)
8time_based_uuid = uuid.uuid1()
9print(f"UUID de Versión 1: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Generar un UUID de Versión 4 (aleatorio)
4const randomUuid = uuidv4();
5console.log(`UUID de Versión 4: ${randomUuid}`);
6
7// Generar un UUID de Versión 1 (basado en tiempo)
8const timeBasedUuid = uuidv1();
9console.log(`UUID de Versión 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Generar un UUID de Versión 4 (aleatorio)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID de Versión 4: " + randomUuid);
8
9 // Generar un UUID de Versión 1 (basado en tiempo)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID de Versión 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Generar un UUID de Versión 4 (aleatorio)
4random_uuid = SecureRandom.uuid
5puts "UUID de Versión 4: #{random_uuid}"
6
7## Ruby no tiene un método incorporado para UUIDs de Versión 1
8## Necesitarías usar una gema como 'uuidtools' para eso
9
1<?php
2// Generar un UUID de Versión 4 (aleatorio)
3$randomUuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
4 mt_rand(0, 0xffff), mt_rand(0, 0xffff),
5 mt_rand(0, 0xffff),
6 mt_rand(0, 0x0fff) | 0x4000,
7 mt_rand(0, 0x3fff) | 0x8000,
8 mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
9);
10echo "UUID de Versión 4: " . $randomUuid . "\n";
11
12// PHP no tiene un método incorporado para UUIDs de Versión 1
13// Necesitarías usar una biblioteca como 'ramsey/uuid' para eso
14?>
15
Descubre más herramientas que podrían ser útiles para tu flujo de trabajo