Hvað er UUID v4 og hvernig virkar þessi síða?
Þessi síða myndar eitt eða fleiri UUID v4 auðkenni – 36 stafa strengi í venjulegu 8-4-4-4-12 sniði. Þú stjórnar fjölda auðkenna (allt að 100), hvort þau birtast með hástöfum eða lágstöfum og hvort bandstrik séu með eða ekki. Auðkennin verða til samstundis í vafranum þínum með sterkri handahófsvél vafrans. Þú getur afritað eitt auðkenni eða öll í einu.
Það sem aðgreinir þessa síðu frá öðrum er áherslan á hreinleika UUID v4 sniðsins og hvernig valkostirnir hafa áhrif á notagildi. UUID v4 notar 122 handahófskennda bita en enga tímastimpla. Því er hvert gildi í raun óútreiknanlegt og líkurnar á árekstri (að tvö auðkenni verði eins) eru hverfandi. Ólíkt UUID v7 eða ULID raðast v4 auðkenni í handahófskenndri röð – þau bera engar tímaupplýsingar. Þetta veldur því að gagnagrunnsvísar (indexes) geta brotnað upp þegar þau eru notuð sem aðallykill.
Sjálfgefið er úttakið með lágstöfum og bandstrikum. Ef þú breytir einhverjum valkosti (fjölda, hástöfum eða bandstrikum) myndast allur hópurinn upp á nýtt. Allt ferlið gerist á staðnum í vafranum – ekkert er sent á netþjón.
Uppbygging UUID v4: 122 handahófskenndir bitar
UUID v4 samanstendur af 16 oktetum (128 bitar) þar sem 122 bitar eru handahófskenndir. Hinir 6 bitarnir eru fastir: 4 bitar tilgreina útgáfuna („4“ fyrir v4) og 2 bitar tilgreina afbrigðið (variant). Þetta er í samræmi við RFC 4122 staðalinn.
Heildarformið er 32 sextándakerfistölustafir (hex stafir) sem raðast í mynstrið 8-4-4-4-12, með fjórum bandstrikum. Hver sextándakerfistafur táknar 4 bita. Þegar bandstrikin eru fjarlægð verður strengurinn 32 stafir að lengd.
Dæmi um UUID v4 með bandstrikum:
550e8400-e29b-41d4-a716-446655440000
Í þessu dæmi:
- „550e8400“ eru fyrstu 8 sextándakerfistafirnir (32 bitar)
- „e29b“ eru næstu 4 (16 bitar)
- „41d4“ eru næstu 4 (16 bitar), en hér byrjar tölustafurinn „4“ sem merkir v4 útgáfuna
- „a716“ eru næstu 4 (16 bitar), þar sem fyrsti tölustafurinn er „a“ sem er einn af fjórum möguleikum (8, 9, a eða b) fyrir afbrigðið
- „446655440000“ eru síðustu 12 (48 bitar)
Ef bandstrikin eru fjarlægð lítur sama auðkenni svona út: 550e8400e29b41d4a716446655440000.
Valkosturinn um hástafi breytir öllum bókstöfunum í hástafi, til dæmis 550E8400-E29B-41D4-A716-446655440000.
Gæði handahófs og líkur á árekstrum
Handahófsvélin sem notuð er er crypto.getRandomValues() í vafranum. Þetta er dulmálslega öruggur handahófskynjari sem er í boði í öllum nútíma vöfrum. Hann notar kerfislega handahófsgjafa, svo sem /dev/urandom í Linux eða BCryptGenRandom í Windows.
122 handahófskenndir bitar gefa 2^122 mögulegar samsetningar. Það er um það bil 5,3 × 10^36. Líkurnar á árekstri við myndun r r handahófskenndra UUID má áætla með formúlunni:
P(árekstur) ≈ r^2 / (2 × 2^122)
Ef þú myndar 100 milljón UUID v4 á hverri sekúndu í 100 ár myndirðu samt sem áður aðeins hafa um það bil 50% líkur á árekstri. Fyrir flest raunveruleg notkunartilvik (nokkur þúsund til nokkrar milljónir auðkenna) eru líkurnar á árekstri hverfandi.
Þetta gerir UUID v4 að kjörnu vali þegar þörf er á einstökum, óútreiknanlegum auðkennum, til dæmis fyrir öryggistákn (tokens), lotuauðkenni (session IDs) eða dulnefnislykla fyrir persónugreinanlegar upplýsingar.
Áhrif UUID v4 á gagnagrunna
Þegar UUID v4 er notað sem aðallykill í gagnagrunni geta vandamál komið upp með vísun (index) áfrömun. Vegna þess að UUID v4 eru handahófskennd og engin tímaröð er í þeim verða innsetningar nýrra raða oft á handahófskenndum stöðum í vísiferlinum. Þetta leiðir til sívaxandi skiptinga á síðum (page splits) og sundurleitni vísins (index fragmentation).
Samanburður við aðrar gerðir af UUID:
| Auðkennisgerð | Handahófskenndir bitar | Tímastimpill | Röðun | Notkun |
|---|---|---|---|---|
| UUID v4 | 122 | Nei | Handahófskennd | Öryggi, óútreiknanleg auðkenni |
| UUID v7 | 74 (afsendar 48 bitar fyrir tímastimpil) | Já (millisekúndur) | Tímaraðað | Gagnagrunnar, aðallyklar |
| ULID | 80 (afsenda 48 bita fyrir tímastimpil) | Já (millisekúndur) | Tímaraðað | Gagnagrunnar, raðgreining |
| NanoID | Breytileg (sjálfgefið 126) | Nei | Handahófskennd | Stutt auðkenni |
Ef gagnagrunnurinn þinn sér oft um miklar innsetningar og spurningar eftir röð er UUID v7 eða ULID líklegra til að gera verkinu betur. En ef óútreiknanleiki og öryggi skipta mestu máli – eins og við lotuauðkenni eða tvíþætt auðkenni – er UUID v4 rétta valið.
Valkostir síðunnar: hástafir, bandstrik og fjöldi
Síðan býður upp á þrjár breytur sem hafa áhrif á úttakið:
-
Fjöldi (Count): Heiltala á bilinu 1 til 100. Ef þú slærð inn gildi utan þessa bils samþykkir síðan það ekki. Þegar þú breytir fjöldanum myndast nýr hópur strax.
-
Hástafir (Uppercase): Kveikir/slökkvir á hástöfum í úttakinu. Sjálfgefið er á LÁGSTÖFUM. Breyting á þessum valkosti endurgerir hópinn. Hástafir geta gert auðkennin auðlesnari í sumum samhengi, en algengast er að nota lágstafi.
-
Banda með bandstrik (Include hyphens): Kveikir/slökkvir á bandstrikum í 8-4-4-4-12 sniðinu. Sjálfgefið er Á (með bandstrikum). Ef slökkt er, verður auðkennið 32 stafir að lengd án bandstrika.
Mikilvægt atriði: Þegar breytt er á milli sniða (UUID v4, UUID v7, ULID, NanoID) geta valkostirnir breyst. Þessi grein fjallar eingöngu um UUID v4, en gott er að vita að á síðunni er hægt að prófa mismunandi gerðir af auðkennum.
Vinnsla á staðnum og öryggi
Öll myndun UUID v4 fer eingöngu fram í vafranum þínum. Engin beiðni er send á netþjón. Þetta þýðir:
- Persónuvernd: Þú getur myndað viðkvæm auðkenni (t.d. öryggistákn) án þess að treysta á utanaðkomandi þjónustu.
- Hraði: Aðgerðin tekur millisekúndur, jafnvel fyrir 100 auðkenni.
- Ónetháð: Síðan virkar jafnvel án nettengingar (þegar hún hefur verið hlaðin).
Handahófsvélin crypto.getRandomValues() er sú sama og notuð er í öðrum öryggistengdum aðgerðum vafrans, svo sem við að búa til dulmálslykla. Hún uppfyllir kröfur um dulmálslega öflugan handahófskynjara.
Algengar spurningar
Hvaða snið er notað fyrir UUID v4?
Sniðið er í samræmi við RFC 4122: 8 sextándakerfistafir, bandstrik, 4 stafir, bandstrik, 4 stafir (þar sem fyrsti stafurinn er „4“ fyrir útgáfu), bandstrik, 4 stafir (þar sem fyrsti stafurinn er „8“, „9“, „a“ eða „b“ fyrir afbrigði), bandstrik, 12 stafir. Dæmi: 550e8400-e29b-41d4-a716-446655440000.
Hvað gerist ef ég breyti fjöldanum úr 5 í 10? Síðan endurgerir strax allan hópinn með 10 nýjum UUID v4 auðkennum. Fyrri 5 auðkennin glatast ekki af öryggisástæðum – þú hefur einfaldlega nýjan hóp.
Af hverju er UUID v4 ekki tímaraðað? UUID v4 notar 122 handahófskennda bita en engan tímastimpil. Tímaröð getur verið óæskileg ef þú vilt að auðkennin séu óútreiknanleg, t.d. fyrir öryggistákn. Ef þörf er á tímaröðun er UUID v7 eða ULID betri kostur.
Hvaða handahófsvél er notuð?
Notuð er crypto.getRandomValues(), sem er dulmálslega örugg handahófsvél vafrans. Hún fær handahófstölur frá stýrikerfinu og er talin örugg fyrir dulmálsnotkun.
Get ég afritað bara eitt UUID? Já. Smelltu á viðkomandi UUID í listanum til að afrita það á klemmuspjaldið. Til að afrita öll UUID notarðu „Afrita öll“ hnappinn (eða „Copy all“).
Er einhver hætta á að tvö UUID verði eins? Líkur á árekstri við myndun r randómlegra UUID v4 er um það bil r^2 / (2^123). Fyrir 1000 UUID er líkurnar minni en 1 á 10^30. Í reynd er þetta hverfandi fyrir allt raunhæft notkunartilvik.