Genera Identificatori Unici Universali (UUID) per varie applicazioni. Crea sia UUID di versione 1 (basati sul tempo) che UUID di versione 4 (casuali) per l'uso in sistemi distribuiti, database e altro.
Un Identificatore Universale Unico (UUID) è un numero a 128 bit utilizzato per identificare informazioni nei sistemi informatici. Gli UUID sono standardizzati dalla Open Software Foundation (OSF) come parte dell'Ambiente di Calcolo Distribuito (DCE). Questi identificatori sono progettati per essere unici sia nello spazio che nel tempo, rendendoli ideali per varie applicazioni nei sistemi distribuiti e oltre.
Questo strumento generatore di UUID consente di creare sia UUID di versione 1 (basati sul tempo) che UUID di versione 4 (random). Questi identificatori sono utili in vari scenari in cui è necessaria un'identificazione unica, come chiavi di database, sistemi distribuiti e protocolli di rete.
Un UUID è tipicamente rappresentato come 32 cifre esadecimali, visualizzate in cinque gruppi separati da trattini, nella forma 8-4-4-4-12 per un totale di 36 caratteri (32 caratteri alfanumerici e 4 trattini). Ad esempio:
1550e8400-e29b-41d4-a716-446655440000
2
I 128 bit di un UUID sono suddivisi in campi specifici, ognuno dei quali porta informazioni diverse a seconda della versione dell'UUID:
Ecco un diagramma che illustra la struttura dell'UUID:
Ci sono diverse versioni di UUID, ognuna con il proprio metodo di generazione:
Questo strumento si concentra sulla generazione di UUID di Versione 1 e Versione 4.
Gli UUID di Versione 1 vengono generati utilizzando i seguenti componenti:
La formula per generare un UUID di Versione 1 può essere espressa come:
1UUID = (timestamp * 2^64) + (clock_sequence * 2^48) + node
2
Gli UUID di Versione 4 vengono generati utilizzando un generatore di numeri casuali crittograficamente sicuro. La formula è semplicemente:
1UUID = random_128_bit_number
2
Con bit specifici impostati per indicare la versione (4) e la variante.
Gli UUID hanno numerose applicazioni in vari domini dell'informatica e dell'ingegneria del software:
Chiavi di database: Gli UUID vengono spesso utilizzati come chiavi primarie nei database, specialmente nei sistemi distribuiti dove più nodi potrebbero generare record simultaneamente.
Sistemi distribuiti: Nei grandi sistemi distribuiti, gli UUID aiutano a identificare in modo univoco risorse, transazioni o eventi attraverso più nodi o data center.
Indirizzamento dei contenuti: Gli UUID possono essere utilizzati per creare identificatori unici per contenuti nei sistemi di archiviazione a indirizzo di contenuto.
Gestione delle sessioni: Le applicazioni web spesso utilizzano UUID per gestire le sessioni utente, assicurando che ogni sessione abbia un identificatore unico.
Identificazione dei dispositivi IoT: Nelle applicazioni di Internet delle Cose (IoT), gli UUID possono essere utilizzati per identificare in modo univoco i singoli dispositivi in una rete.
Sebbene gli UUID siano ampiamente utilizzati, ci sono approcci alternativi per generare identificatori unici:
ID auto-incrementali: Semplici e comunemente utilizzati nei sistemi a singolo database, ma non adatti per ambienti distribuiti.
ID basati su timestamp: Possono essere utili per dati ordinati nel tempo, ma potrebbero affrontare problemi di collisione in scenari di alta concorrenza.
ID Snowflake: Sviluppati da Twitter, questi ID combinano timestamp e numero di lavoratore per generare ID unici nei sistemi distribuiti.
ULID (Identificatore Universale Unico Lessicograficamente Ordinabile): Un'alternativa più recente che mira a essere più amichevole per l'uomo e ordinabile rispetto agli UUID.
Il concetto di UUID è stato introdotto per la prima volta nel sistema di calcolo di rete Apollo e successivamente standardizzato dalla Open Software Foundation (OSF) come parte dell'Ambiente di Calcolo Distribuito (DCE) negli anni '90. La specifica iniziale è stata pubblicata nel 1997 come ISO/IEC 11578:1996 e successivamente rivista nel 2005 come parte di ISO/IEC 9834-8:2005.
Punti salienti nella storia degli UUID:
Nel tempo, gli UUID sono diventati uno strumento essenziale nei sistemi distribuiti e nella progettazione di database, con varie implementazioni e adattamenti in diversi linguaggi di programmazione e piattaforme.
Ecco esempi di generazione di UUID in vari linguaggi di programmazione:
1import uuid
2
3## Genera un UUID di Versione 4 (random)
4random_uuid = uuid.uuid4()
5print(f"UUID di Versione 4: {random_uuid}")
6
7## Genera un UUID di Versione 1 (basato sul tempo)
8time_based_uuid = uuid.uuid1()
9print(f"UUID di Versione 1: {time_based_uuid}")
10
1const { v1: uuidv1, v4: uuidv4 } = require('uuid');
2
3// Genera un UUID di Versione 4 (random)
4const randomUuid = uuidv4();
5console.log(`UUID di Versione 4: ${randomUuid}`);
6
7// Genera un UUID di Versione 1 (basato sul tempo)
8const timeBasedUuid = uuidv1();
9console.log(`UUID di Versione 1: ${timeBasedUuid}`);
10
1import java.util.UUID;
2
3public class UuidGenerator {
4 public static void main(String[] args) {
5 // Genera un UUID di Versione 4 (random)
6 UUID randomUuid = UUID.randomUUID();
7 System.out.println("UUID di Versione 4: " + randomUuid);
8
9 // Genera un UUID di Versione 1 (basato sul tempo)
10 UUID timeBasedUuid = UUID.fromString(new com.eaio.uuid.UUID().toString());
11 System.out.println("UUID di Versione 1: " + timeBasedUuid);
12 }
13}
14
1require 'securerandom'
2
3## Genera un UUID di Versione 4 (random)
4random_uuid = SecureRandom.uuid
5puts "UUID di Versione 4: #{random_uuid}"
6
7## Ruby non ha un metodo integrato per UUID di Versione 1
8## È necessario utilizzare una gem come 'uuidtools' per questo
9
1<?php
2// Genera un UUID di Versione 4 (random)
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 di Versione 4: " . $randomUuid . "\n";
11
12// PHP non ha un metodo integrato per UUID di Versione 1
13// È necessario utilizzare una libreria come 'ramsey/uuid' per questo
14?>
15
Scopri più strumenti che potrebbero essere utili per il tuo flusso di lavoro