Genera Identificadors Únics Universals (UUID) per a diverses aplicacions. Crea tant UUID de versió 1 (basats en el temps) com UUID de versió 4 (aleatoris) per a l'ús en sistemes distribuïts, bases de dades i més.
Un Identificador Universalment Únic (UUID) és un número de 128 bits utilitzat per identificar informació en sistemes informàtics. Els UUID són estàndarditzats per la Open Software Foundation (OSF) com a part de l'Entorn de Computació Distribuïda (DCE). Aquests identificadors estan dissenyats per ser únics tant en l'espai com en el temps, cosa que els fa ideals per a diverses aplicacions en sistemes distribuïts i més enllà.
Aquest eina generadora de UUID permet crear tant UUIDs de versió 1 (basats en el temps) com UUIDs de versió 4 (aleatoris). Aquests identificadors són útils en diversos escenaris on es requereix una identificació única, com ara claus de bases de dades, sistemes distribuïts i protocols de xarxa.
Un UUID es representa típicament com a 32 dígits hexadecimals, mostrats en cinc grups separats per guions, en la forma 8-4-4-4-12 per un total de 36 caràcters (32 caràcters alfanumèrics i 4 guions). Per exemple:
1550e8400-e29b-41d4-a716-446655440000
2
Els 128 bits d'un UUID es divideixen en camps específics, cadascun portant informació diferent depenent de la versió del UUID:
Aquí teniu un diagrama que il·lustra l'estructura del UUID:
Hi ha diverses versions de UUID, cadascuna amb el seu propi mètode de generació:
Aquesta eina se centra en generar UUIDs de versió 1 i versió 4.
Els UUIDs de versió 1 es generen utilitzant els següents components:
La fórmula per generar un UUID de versió 1 es pot expressar com:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
Els UUIDs de versió 4 es generen mitjançant un generador de números aleatoris criptogràficament segur. La fórmula és simplement:
1UUID = random_128_bit_number
2
Amb bits específics establerts per indicar la versió (4) i la variant.
Els UUIDs tenen nombroses aplicacions a través de diversos dominis de la informàtica i l'enginyeria de programari:
Claus de bases de dades: Els UUIDs s'utilitzen sovint com a claus primàries en bases de dades, especialment en sistemes distribuïts on múltiples nodes poden estar generant registres simultàniament.
Sistemes distribuïts: En sistemes distribuïts a gran escala, els UUIDs ajuden a identificar de manera única recursos, transaccions o esdeveniments a través de múltiples nodes o centres de dades.
Adreçament de contingut: Els UUIDs es poden utilitzar per crear identificadors únics per al contingut en sistemes d'emmagatzematge amb adreçament per contingut.
Gestió de sessions: Les aplicacions web sovint utilitzen UUIDs per gestionar sessions d'usuari, assegurant que cada sessió tingui un identificador únic.
Identificació de dispositius IoT: En aplicacions d'Internet de les Coses (IoT), els UUIDs es poden utilitzar per identificar de manera única dispositius individuals en una xarxa.
Tot i que els UUIDs són àmpliament utilitzats, hi ha enfocaments alternatius per generar identificadors únics:
IDs auto-incrementals: Simples i comunament utilitzats en sistemes de bases de dades individuals, però no adequats per a entorns distribuïts.
IDs basats en el temps: Poden ser útils per a dades ordenades per temps, però poden tenir problemes de col·lisió en escenaris d'alta concurrència.
IDs de floc de neu: Desenvolupats per Twitter, aquests IDs combinen marca de temps i número de treballador per generar IDs únics en sistemes distribuïts.
ULID (Identificador Universalment Únic Lexicogràficament Ordenable): Una alternativa més recent que pretén ser més amigable per a humans i ordenable que els UUIDs.
El concepte de UUIDs es va introduir per primera vegada en el Sistema de Computació de Xarxa Apollo i més tard es va estàndarditzar per la Open Software Foundation (OSF) com a part de l'Entorn de Computació Distribuïda (DCE) als anys 90. La especificació inicial es va publicar el 1997 com a ISO/IEC 11578:1996 i més tard es va revisar el 2005 com a part de l'ISO/IEC 9834-8:2005.
Fites clau en la història dels UUIDs:
Amb el temps, els UUIDs s'han convertit en una eina essencial en sistemes distribuïts i disseny de bases de dades, amb diverses implementacions i adaptacions a través de diferents llenguatges de programació i plataformes.
Aquí teniu exemples de generació de UUIDs en diversos llenguatges de programació:
1import uuid
2
3## Generar un UUID de versió 4 (aleatori)
4random_uuid = uuid.uuid4()
5print(f"UUID de versió 4: {random_uuid}")
6
7## Generar un UUID de versió 1 (basat en el temps)
8time_based_uuid = uuid.uuid1()
9print(f"UUID de versió 1: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Generar un UUID de versió 4 (aleatori)
4const randomUuid = uuidv4();
5console.log(`UUID de versió 4: ${randomUuid}`);
6
7// Generar un UUID de versió 1 (basat en el temps)
8const timeBasedUuid = uuidv1();
9console.log(`UUID de versió 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Generar un UUID de versió 4 (aleatori)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID de versió 4: " + randomUuid);
8
9 // Generar un UUID de versió 1 (basat en el temps)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID de versió 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Generar un UUID de versió 4 (aleatori)
4random_uuid = SecureRandom.uuid
5puts "UUID de versió 4: #{random_uuid}"
6
7## Ruby no té un mètode integrat per a UUIDs de versió 1
8## Hauries de fer servir una gem com 'uuidtools' per a això
9
1<?php
2// Generar un UUID de versió 4 (aleatori)
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ó 4: " . $randomUuid . "\n";
11
12// PHP no té un mètode integrat per a UUIDs de versió 1
13// Hauries de fer servir una biblioteca com 'ramsey/uuid' per a això
14?>
15
Descobreix més eines que podrien ser útils per al teu flux de treball