UUID v4 genereren voor databases, API's en tests
Met deze UUID generator maak je één tot twintig UUID's van versie 4. Kies desgewenst hoofdletters en kopieer één lijst voor gebruik in software, testdata of configuratie. De identificatoren worden lokaal gemaakt met cryptografische willekeur uit crypto.getRandomValues().
Wat is een UUID?
UUID staat voor Universally Unique Identifier. Het is een 128-bits identificator die gewoonlijk als 32 hexadecimale tekens in vijf groepen wordt geschreven, bijvoorbeeld xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx. De vaste 4 markeert versie 4 en bepaalde bits in de volgende groep geven de UUID-variant aan.
Een UUID bevat meestal geen betekenisvolle bedrijfsinformatie. Dat maakt hem geschikt voor gedistribueerde systemen waarin meerdere onderdelen identifiers moeten maken zonder vooraf nummers bij één centrale teller op te vragen.
Hoe UUID v4 wordt gegenereerd
Versie 4 gebruikt 122 willekeurige bits; de overige bits leggen versie en variant vast. De implementatie vraagt willekeurige bytes aan de Web Crypto API en plaatst ze in het standaardpatroon. Hoofdletters veranderen alleen de schrijfwijze en niet de onderliggende waarde. UUID-vergelijkingen horen daarom normaal hoofdletterongevoelig te zijn.
Hoe klein is de kans op een botsing?
De ruimte van 122 willekeurige bits is enorm, waardoor een botsing bij correct gegenereerde UUID v4-waarden voor gewone toepassingen uiterst onwaarschijnlijk is. “Universally unique” is echter geen wiskundige garantie. Een database moet nog steeds een unieke constraint gebruiken en een botsingsfout correct afhandelen.
UUID tegenover oplopend nummer
Oplopende gehele sleutels zijn compact en indexvriendelijk, maar vereisen coördinatie en verraden soms volgorde of aantallen. UUID's kunnen vooraf op clients en verschillende servers worden gemaakt, maar nemen meer opslagruimte in en willekeurige waarden kunnen B-tree-indexen fragmenteren. Kies het sleuteltype op basis van database, schaal en querypatronen.
UUID is geen geheim token
Een willekeurige UUID v4 is moeilijk te raden, maar het formaat is niet automatisch een complete beveiligingsoplossing. Gebruik een UUID niet als vervanging voor autorisatie, toegangscontrole of een speciaal ontworpen sessietoken. Een identifier in een URL mag nooit bepalen of iemand het gekoppelde object mag bekijken.
UUID en GUID
GUID is de veelgebruikte Microsoft-benaming voor hetzelfde algemene 128-bits concept. Tekstweergave en bytevolgorde kunnen in sommige API's of binaire formaten verschillen. Controleer daarom de documentatie wanneer waarden tussen .NET, databases en andere talen worden uitgewisseld.
Praktisch gebruik
Gebruik UUID's voor records, gebeurtenissen, bestanden en testobjecten wanneer centrale nummering onpraktisch is. Sla ze waar mogelijk in een native UUID-type op in plaats van een willekeurige tekstkolom. Valideer invoer, dwing uniciteit af en log geen identifiers alsof ze op zichzelf gevoelige authenticatiegegevens zijn.
Andere UUID-versies
UUID v1 bevat tijd- en nodegerelateerde informatie en UUID v5 is deterministisch op basis van een namespace en naam. Nieuwere tijdgeordende varianten kunnen gunstiger zijn voor database-indexen. Deze generator maakt uitsluitend versie 4; dezelfde invoer opnieuw genereren levert dus niet dezelfde identifier op. Kies een andere versie alleen met een passende standaardbibliotheek.
Controleer bij import en export altijd de gebruikelijke vorm met koppeltekens.
Reacties