In dit artikel
Wat is een UUID?
Een UUID (Universally Unique Identifier) is een 128-bits waarde die wordt gebruikt om informatie in computersystemen uniek te identificeren. Geschreven als 32 hexadecimale cijfers weergegeven in vijf groepen gescheiden door koppeltekens, ziet een UUID eruit als 550e8400-e29b-41d4-a716-446655440000.
UUID's zijn ontworpen om wereldwijd uniek te zijn zonder een centrale registratieautoriteit. Dit maakt ze ideaal voor gedistribueerde systemen waar meerdere knooppunten onafhankelijk identifiers moeten genereren die nooit botsen.
UUID-versies uitgelegd
De UUID-standaard definieert verschillende versies, elk met een andere generatiemethode. Het versienummer verschijnt als het 13e karakter.
- Versie 1 (v1) — tijdgebaseerd: combineert de huidige tijdstempel met het MAC-adres van de machine. Garandeert uniciteit maar lekt hardware-informatie
- Versie 3 (v3) — naamgebaseerd met MD5: genereert een deterministische UUID door een namespace en naam te hashen met MD5
- Versie 4 (v4) — willekeurig: de meest gebruikte versie. Alle bits behalve versie- en variantvelden worden willekeurig gegenereerd
- Versie 5 (v5) — naamgebaseerd met SHA-1: zoals v3 maar gebruikt SHA-1 voor hashing. Heeft de voorkeur boven v3 voor nieuwe implementaties
- Versie 7 (v7) — tijdstempel-geordend willekeurig: een nieuwer formaat dat een Unix-tijdstempel combineert met willekeurige bits
Probeer gratis — geen aanmelding vereist
Valideer een UUID →Hoe UUID-validatie werkt
Het valideren van een UUID omvat het controleren van zowel het formaat als de structurele regels. Een geldige UUID moet overeenkomen met het canonieke 8-4-4-4-12 hexadecimale patroon.
- Formaatcontrole — de string moet exact 32 hexadecimale tekens bevatten, gerangschikt in vijf groepen gescheiden door vier koppeltekens
- Versiecontrole — het 13e karakter moet een geldig versienummer zijn (1, 2, 3, 4, 5, 6, 7 of 8)
- Variantcontrole — het 17e karakter moet de RFC 4122-variant aangeven (8, 9, a of b)
Veelvoorkomende toepassingen
UUID's zijn de standaardkeuze voor identifiers in veel domeinen van moderne softwareontwikkeling.
- Database primaire sleutels — UUID's laten je sleutels genereren aan de clientzijde zonder round-trips naar de database
- API-resource-identifiers — UUID's blootstellen in plaats van opeenvolgende gehele getallen voorkomt enumeratieaanvallen
- Sessie- en correlatie-ID's — UUID's traceren verzoeken over microservices heen
- Bestands- en objectnaamgeving — cloudopslagsystemen gebruiken UUID's om naambotsingen te voorkomen
Best practices
De juiste UUID-versie kiezen en ze correct behandelen kan subtiele bugs en prestatieproblemen voorkomen.
- Gebruik v4 voor algemene willekeurige identifiers — het is de meest voorkomende keuze zonder externe afhankelijkheden
- Gebruik v7 wanneer je op tijd sorteerbare identifiers nodig hebt — v7 UUID's sorteren chronologisch
- Sla UUID's op als 16-byte binair in databases in plaats van strings van 36 tekens
- Valideer altijd UUID's ontvangen van externe invoer — neem nooit aan dat door gebruikers verstrekte strings correct gevormd zijn
Veelgestelde vragen
Kunnen twee UUID's ooit hetzelfde zijn?
Hoewel theoretisch mogelijk, is de kans op een botsing met v4 UUID's astronomisch klein. Je zou ongeveer 2,7 triljoen UUID's moeten genereren voor 50 procent kans op een enkele botsing.
Is een UUID hoofdlettergevoelig?
Nee. De RFC 4122-standaard specificeert dat UUID's in kleine letters moeten worden weergegeven, maar implementaties moeten zowel hoofdletters als kleine letters accepteren.
Moet ik UUID of ULID gebruiken?
ULID's zijn 128-bits identifiers die lexicografisch sorteerbaar zijn. Als je sorteerbaarheid nodig hebt zonder de complexiteit van UUID v7, zijn ULID's een goed alternatief.