I moderne programvarearkitektur er det avgjørende å kunne identifisere poster, transaksjoner og ressurser entydig på tvers av distribuerte nettverk. En universelt unik identifikator (UUID), noen ganger kalt en globalt unik identifikator (GUID) i Microsoft-økosystemer, gjør nettopp dette. Det er en etikett på 128 bit som garanterer en høy grad av unikhet i rom og tid. I motsetning til tradisjonelle sekvensielle heltalls-ID-er, som vanligvis lages av én relasjonsdatabase (for eksempel en autoinkrementerende primærnøkkel), kan UUID-er opprettes autonomt av enhver node, mikrotjeneste eller klientapplikasjon i et nettverk, uten koordinering med en sentral myndighet. Konseptet ble opprinnelig skapt i Apollo Network Computing System og senere standardisert av Open Software Foundation (OSF) som del av Distributed Computing Environment (DCE). Hovedmålet var at distribuerte systemer skulle kunne identifisere informasjon entydig uten betydelig sentral koordinering. Denne desentraliserte genereringen er det som gjør UUID-er uunnværlige i skybaserte applikasjoner, mikrotjenestearkitekturer og mobilapper som fungerer frakoblet først.
For å forstå mekanikken hjelper det å se på strukturen. En standard UUID vises som en heksadesimal streng på 32 tegn, delt i fem grupper atskilt med bindestreker, på formen 8-4-4-4-12. Det gir 36 tegn totalt (32 alfanumeriske tegn og fire bindestreker). På grunn av dette enorme matematiske rommet (2^128 mulige kombinasjoner, omtrent 3.4 x 10^38) er sannsynligheten for en kollisjon – at samme UUID genereres to ganger – astronomisk lav. Du måtte i praksis generere 1 milliard UUID-er hvert sekund i omtrent 85 år før sannsynligheten for kollisjon når 50 %. Denne skalaen lar utviklere trygt lage ID-er i frakoblet tilstand, for eksempel en mobilapp som arbeider uten nett og senere synkroniserer data til en sentral skyserver, uten frykt for konflikt i primærnøkkelen.
Det finnes ulike UUID-versjoner for ulike tekniske krav. UUID versjon 1 (v1) bygger på datamaskinens MAC-adresse og gjeldende tidsstempel. Den er geografisk og tidsmessig unik, men kan gi personvernbekymringer fordi den avslører maskinvareadressen til maskinen den kommer fra. UUID versjon 4 (v4) er rent tilfeldig og lages med kryptografisk sikre pseudotilfeldige tallgeneratorer (CSPRNG). På grunn av tilfeldigheten og fraværet av identifiserbare metadata er v4 blitt den faktiske standarden for de fleste moderne webapplikasjoner. UUID versjon 5 (v5) lages ved å hashe en navneromsidentifikator og et bestemt navn med SHA-1, slik at samme inndata forutsigbart gir nøyaktig samme UUID hver gang. I det siste har UUID versjon 7 (v7) fått stor utbredelse blant programvareingeniører. Den kombinerer en tidsordnet verdi med tilfeldige data, og er svært godt egnet for databaseindeksering. Fordi v7-UUID-er kan sorteres sekvensielt etter tid, løser de den store fragmenteringen og den svekkede innsettingsytelsen som historisk har fulgt helt tilfeldige v4-UUID-er.
Enten du bygger et skalerbart API, synkroniserer data på tvers av flere eksterne enheter eller sikrer økttokens, er riktig type UUID grunnleggende. Det holder likevel ikke bare å generere dem. Du må sikre at UUID-ene som kommer inn i systemet, er strukturelt holdbare. Der blir et robust og 100 % gratis valideringsverktøy en uvurderlig del av utviklerflyten. Uten grundige kontroller er systemet sårbart for uventet oppførsel og dataskade.