UUID heeft meerdere versies, elk met verschillende kenmerken:
• v1: Gebaseerd op tijd en node ID, geordend maar kan informatie lekken
• v3: Gebaseerd op naam en naamruimte, gebruikt MD5-hash
• v4: Volledig willekeurig gegenereerd, meest gebruikte versie
• v5: Gebaseerd op naam en naamruimte, gebruikt SHA-1-hash, veiliger dan v3
• v6: Verbeterde versie van v1, tijdgedeelte in big-endian volgorde, beter voor sorteren
• v7: Nieuwe versie gebaseerd op Unix-timestamp, combineert tijdvolgorde en willekeur
Kies de meest geschikte versie op basis van het gebruiksscenario:
• Behoefte aan veiligheid: Kies v4 (willekeurig) of v5 (op SHA-1 gebaseerde naam)
• Behoefte aan ordening: Kies v6 of v7 (tijdgebaseerd en gemakkelijk te sorteren)
• Behoefte aan determinisme: Kies v3 of v5 (zelfde invoer produceertzelfde uitvoer)
• Behoefte aan prestaties: Kies v1 (snelle generatie)
• Speciale waarden: NIL (allemaal 0) of MAX (allemaal F) voor randgevallen
UUID v4 is volledig willekeurig, geschikt voor de meeste toepassingsscenario's. v3 en v5 zijn deterministisch, dezelfde naam en naamruimte genereren altijd dezelfde UUID, geschikt voor situaties waar consistente mapping nodig is. v1, v6 en v7 bevatten tijdinformatie en hebben onder bepaalde voorwaarden een volgorde.
v1, v6 en v7 bevatten allemaal tijdinformatie, maar verwerken het op verschillende manieren. v6 verbetert de tijdsorteringsproblemen van v1, v7 gebruikt Unix-timestamp voor eenvoudigere tijdvolgorde. Als je UUID's nodig hebt die op generatietijd gesorteerd kunnen worden, zijn v6 en v7 betere keuzes.
v1 kan generatietijd en node-informatie (MAC-adres) lekken. v4 is volledig willekeurig en de beste keuze voor privacygevoelige scenario's. v3 gebruikt MD5-hash, wat minder veilig is dan SHA-1 van v5. NIL en MAX zijn vaste waarden en mogen niet gebruikt worden in veiligheidsgevoelige scenario's waar uniciteit vereist is.
UUID wordt voornamelijk gebruikt in scenario's waar een wereldwijd unieke identifier nodig is: gedistribueerde systemen, databasesleutels, sessie-identifiers, bestandsnamen, API-tokens, etc. Het kiezen van de juiste versie kan prestaties, veiligheid en data-organisatie optimaliseren.