Wat zijn UUID's?
UUID (Universeel Unieke Identifier) is een gestandaardiseerd identificatieformaat dat wereldwijd uniek is in ruimte en tijd. UUID's zijn 128-bit waarden die meestal worden weergegeven als 32 hexadecimale cijfers, verdeeld in vijf groepen gescheiden door streepjes: 123e4567-e89b-12d3-a456-426614174000
.
UUID's worden gedefinieerd door de RFC 9562-standaard (die de vorige RFC 4122 vervangt) en worden gebruikt op verschillende computerplatforms om informatie te identificeren zonder centrale registratie of coördinatie.
UUID-formaat
Alle UUID's delen een gemeenschappelijk formaat bestaande uit 36 tekens (32 hexadecimale cijfers plus 4 streepjes) gerangschikt in het patroon:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
Waarbij:
x
is een hexadecimaal cijfer (0-9, a-f)M
geeft de UUID-versie aan (1-7)N
geeft de UUID-variant aan (meestal 8, 9, A of B voor moderne UUID's)
Vergelijking van UUID-versies
Version | Name | Generatiemethode | Time-ordered | Gebruiksscenario's |
---|---|---|---|---|
UUID v1 | Timestamp | Huidige tijdstempel + node-ID (MAC) | Ja (gedeeltelijk) | Logging, gedistribueerde systemen |
UUID v3 | Naam-gebaseerd (MD5) | MD5-hash van namespace + naam | No | Consistente ID's voor dezelfde invoer |
UUID v4 | Random | Willekeurige of pseudo-willekeurige nummers | No | Algemeen doel, meest voorkomend |
UUID v5 | Naam-gebaseerd (SHA-1) | SHA-1 hash van namespace + naam | No | Consistente ID's met sterkere hash |
UUID v6 | Herschikte tijdstempel | Tijdstempel (geordend voor sortering) | Yes | Databasesleutels, tijd-sorteerbare records |
UUID v7 | Unix Epoch Tijdstempel | Unix tijdstempel + willekeurige data | Yes | Moderne sorteervriendelijke identificaties |
Nil UUID | Nul UUID | Alle nullen | N/A | Speciale waarde, niet-geïnitialiseerde marker |
Voordelen van UUID's
- Geen coördinatie vereist: Genereer ID's zonder centrale coördinatie
- Wereldwijde uniekheid: Zeer lage kans op botsingen
- Vaste lengte: Consistente 36-teken stringrepresentatie
- Cross-Platform: Ondersteund in vrijwel alle programmeertalen
- Versatile: Verschillende versies voor verschillende gebruiksscenario's
Niet-standaard UUID-alternatieven
ID-type | Description | Advantages | Disadvantages |
---|---|---|---|
GUID | Microsofts implementatie van UUID | Functioneel gelijk aan UUID | Sommige implementatieverschillen in oudere systemen |
ULID | Universeel Uniek Lexicografisch Sorteerbare Identifier | Lexicografisch sorteervriendelijk, tijdstempel eerst, niet-hoofdlettergevoelig | Nieuwere, minder wijdverspreide adoptie |
Snowflake ID | Twitter's gedistribueerde ID-systeem | Tijd-sorteerbaar, compact (64-bit) | Vereist centrale coördinatie |
CUID/CUID2 | Botsingsbestendige ID's | Kort, geschikt voor client-side generatie | Geen officiële standaard |
Nano ID | Kleine, veilige, URL-vriendelijke unieke string ID-generator | Kleiner dan UUID, configureerbaar alfabet | Niet gestandaardiseerd |
Korte UUID | Kortere codering van standaard UUID's | Compactere representatie | Vereist conversie naar/van standaard UUID |
Nil UUID | UUID met alle bits op nul gezet | Speciale semantische betekenis | Niet uniek (gebruikt als speciale waarde) |
Minecraft UUID | UUID's met of zonder streepjes | Compatibel met standaard UUID's | Alleen formatteringsverschillen |
Praktische toepassingen
- Database primaire sleutels: Vooral in gedistribueerde of gerepliceerde databases
- Gedistribueerde systemen: Identificeer entiteiten over meerdere systemen
- Webapplicaties: Sessie-identificaties, anonieme gebruikers volgen
- Contentbeheer: Document- en media-identificaties
- APIs: Verzoek- en transactie-identificaties voor tracing en debugging
- Internet of Things: Apparaatidentificatie zonder centrale registratie
- Data-synchronisatie: Identificatie van records over meerdere gegevensopslagplaatsen
- Softwarelicenties: Unieke product- of licentiesleutels