In dit artikel
Wat is een UUID?
Een UUID (Universally Unique Identifier) is een 128-bits identifier die zonder centrale autoriteit gegarandeerd uniek is over ruimte en tijd. UUID's zijn opgemaakt als 32 hexadecimale cijfers in 5 groepen gescheiden door koppeltekens: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Er zijn meerdere UUID-versies, elk op een andere manier gegenereerd. Versie 4 (willekeurig) is de meest gebruikte — deze genereert 122 willekeurige bits, waardoor botsingen astronomisch onwaarschijnlijk zijn (je zou 1 miljard UUID's per seconde moeten genereren gedurende 85 jaar om 50% kans op een botsing te hebben).
Hoe UUID-generatie werkt
UUID v4 gebruikt cryptografisch veilige willekeurige generatie.
- Willekeurige bits — 122 willekeurige bits worden gegenereerd met CSPRNG
- Versiemarking — bits 12-15 van de derde groep worden ingesteld op 0100 om versie 4 aan te geven
- Variantmarking — bits 6-7 van de vierde groep worden ingesteld op 10 om de RFC 4122-variant aan te geven
Probeer gratis — geen aanmelding vereist
Genereer UUID's →Wanneer gebruik je UUID's?
UUID's zijn het geprefereerde identificatortype voor gedistribueerde systemen en databases.
- Database-primaire sleutels — gebruik UUID-primaire sleutels in gedistribueerde systemen om ID-conflicten bij samenvoegingen te vermijden
- Sessietokens — genereer UUID's voor sessie-identifiers en tijdelijke tokens
- Bestandsnaamgeving — gebruik UUID's om unieke bestandsnamen te genereren voor gebruikersupload en gegenereerde bestanden
Veelgestelde vragen
Wat is het verschil tussen UUID v1, v3, v4 en v5?
v1 is tijdgebaseerd en bevat het MAC address, waardoor het traceerbaar is. v3 en v5 zijn deterministisch — ze hashen een naamruimte en naam om elke keer dezelfde UUID te produceren (v3 gebruikt MD5, v5 gebruikt SHA-1). v4 is willekeurig en het meest gebruikt voor algemene unieke ID's. v7 (opkomende standaard) combineert tijdstempel en willekeurigheid voor sorteerbare UUID's.
Moet ik UUID of auto-increment integers gebruiken voor database-primaire sleutels?
Auto-increment integers zijn eenvoudiger en efficiënter in opslag. UUID's zijn beter voor gedistribueerde systemen, het samenvoegen van gegevens uit meerdere bronnen, het blootstellen van ID's in URL's zonder volgordeinformatie te lekken, en het mogelijk maken van ID-generatie aan de clientzijde vóór invoeging in de database. Voor toepassingen op één server is auto-increment vaak voldoende.
Zijn UUID's echt uniek?
UUID v4 heeft 2^122 mogelijke waarden — ongeveer 5,3 × 10^36. De kans op het genereren van twee identieke UUID's is zo klein dat het voor elke praktische toepassing effectief nul is. Door de verjaardagsparadox heb je ruwweg 2,71 triljoen UUID's nodig om 50% kans op een botsing te hebben.