Hvernig UUID v4 myndast
Þessi síða býr til eitt eða fleiri UUID v4-auðkenni – handahófskennda, 36 stafa textastrengi í staðlaða 8‑4‑4‑4‑12 sniði. Notandinn stýrir fjölda (1 til 100), hvort nota eigi hástafi (A–F í stað a–f) og hvort bandstrik komi fyrir. Auðkennin birtast samstundis í vafranum, og þú getur afritað eitt með því að smella á það eða afritað öll í einu.
Það sem aðgreinir þessa síðu er að hún nýtir 122 bita af hreinni handahófskennd á hvert UUID. Afgangs 6 bitarnir eru fastir og tákna útgáfu- og afbrigðabita. UUID v4 hefur enga tíma- eða röðunarupplýsingar. Þetta veldur því að þegar slík gildi eru notuð sem aðallykill í gagnagrunni skipta þau B‑trjávisitölur í sundur, ólíkt tímaraðaðri sniðum. Líkur á árekstri eru hverfandi fyrir hagnýt not.
Síðan sýnir sniðsértæka stilliskjái (hástafi, bandstrik) sem eiga aðeins við um UUID (v4 og v7); aðrar auðkennistegundir á tólinu nota öðruvísi stjórntæki.
Uppbygging UUID v4
UUID v4 er skilgreint í RFC 4122. Hvert auðkenni inniheldur 122 bita af handahófi, sem kemur úr öflugri handahófsgjafa vafrans. 6 bitar eru fastir: 4 bitar fyrir útgáfunúmerið (0100 fyrir v4) og 2 bitar fyrir afbrigðið (10 fyrir RFC 4122). Staðlaða framsetningin er 36 stafir: 32 hexadecimal stafir og 4 bandstrik, skipað í 8‑4‑4‑4‑12.
Til dæmis: 3b241101-e2bb-4255-8caf-4136c566a962. Hér er 3 útgáfan og 8 (í fjórða hlutanum) er afbrigðið. Þegar bandstrik eru fjarlægð verður strengurinn 32 stafir, til dæmis 3b241101e2bb42558caf4136c566a962. Uppercase-stillingin breytir a–f í A–F: 3B241101-E2BB-4255-8CAF-4136C566A962.
Handahófskennd og árekstralíkur
122 bitar af handahófi þýðir að fjöldi mögulegra UUID v4 er 2^122, sem er um 5,3 × 10^36. Til að gefa hugmynd: ef þú myndaðir 1 milljarð UUIDs á sekúndu í 100 år, væri líklegra að þú yrðir fyrir eldingu en að fá árekstur. Þetta byggist á afmælisdæmi líkindafræðinnar, þar sem árekstralíkur fara vaxandi eftir fjölda myndaðra auðkenna, en við hagnýt not (allt að 100 í einu) eru líkur hverfandi.
Reynsluformúlan fyrir árekstralíkur er u.þ.b. 1 – exp(-k^2 / (2 * N)), þar sem k er fjöldi myndaðra auðkenna og N = 2^122. Fyrir k = 100 er niðurstaðan svo nálægt núlli að hún er ómælanleg í reikniforritum.
Áhrif á gagnagrunnsvísitölur
UUID v4 er handahófskennt og hefur engan tíma- eða röðunarþátt. Þegar það er notað sem aðallykill í gagnagrunni með B‑trjávisitölum (eins og innbyggða vísitala í PostgreSQL eða MySQL) veldur þetta tíðum endurjafnvægingum. Nýjar færslur lenda á handahófskenndum stöðum í trénu, ekki við endann. Þetta leiðir til:
- Aukinnar skrifsevni: Disksíður verða að lesa og skrifa oftar.
- Rýrnunar í skyndiminni: Handahófskenndar færslur minnka líkurnar á að skyndiminni nái að halda viðeigandi blaðsíðum.
- Hægari innsetningu: Hver ný færsla krefst fleiri innri þrepa í trénu.
Tímaraðaðar auðkenni, eins og UUID v7 eða ULID, forðast þetta vandamál með því að myndast í tímaröð. UUID v4 er aftur á móti betra þegar þú vilt ekki að hægt sé að giska á raðnúmer eða telja færslur.
Samanburður við tímaraðað auðkenni
UUID v7 notar 48 bita af tímastimpli (Unix-millisekúndur) og 74 bita af handahófi. Það röðast því nokkurn veginn í tímaröð og orsakar minni vísitölubrota. ULID er svipað, með 48 bita tímastimpli (Unix-millisekúndur) og 80 bita handahófi, og er sett fram með Crockford-base32.
UUID v4 er hins vegar 122 bitar af handahófi. Það hefur enga tímaupplýsingar og því enga tímaröð. Þetta gerir það tilvalið fyrir aðstæður þar sem þú vilt ekki að hægt sé að vinna upplýsingar um röð eða tíma úr auðkenninu – svo sem API-þjónustulykla, lotuauðkenni eða gagnadreifð kerfi án miðlægrar samhæfingar.
Notkunarsvið fyrir óraðaðar auðkenni
Öryggisverkfræðingar nota UUID v4 fyrir API-þjónustulykla eða beiðniauðkenni þar sem tímabundinn fylgni er ekki æskileg. Forritarar sem vinna með dreifð kerfi, þar sem samræming er ómöguleg, treysta á handahófskennd auðkenni til að forðast árekstra. Prófunarmenn og gagnagerðarmenn fylla sýnigagnagrunna með UUID v4 til að líkja eftir raunverulegum, óraðaðra lyklum.
Notkun í gagnagrunni krefst þess að hannað sé með vísitöluskiptingu í huga. Sumir gagnagrunnar bjóða upp á sérstakar UUID-vísitölur eða aðferðir eins og "index bloat management". Aðrir kjósa að nota UUID v4 sem efnislykil (surrogate key) og halda öðrum raðaða lykli fyrir tímaröð.
Sérsnið sniðs: hástafir og bandstrik
Bandstrik í UUID v4 auka læsileika og fylgja RFC 4122. Þau gera auðveldara að greina einstaka hluta og afla villuleitar. Þegar bandstrik eru fjarlægð (32 stafir) verður strengurinn styttri og hentugri fyrir vefslóðir eða forrit sem krefjast strengja án sérstakra stafa.
Hástafir (A–F) breyta útliti en ekki gildinu. Sum kerfi fylgja hefð fyrir lágstöfum, önnur hástöfum. Það skiptir máli að samræmi sé milli kerfa, annars geta leitarvélar eða samanburður gefið rangar niðurstöður.
Algengar spurningar
Hverjar eru líkurnar á árekstri UUID v4 við venjulega notkun? Líkurnar eru hverfandi. Fyrir 100 mynduð UUIDs eru líkur á árekstri ómælanlegar. Jafnvel við milljarða myndaðra auðkenna eru líkur áreksturs minni en að fá 50 tölur í lottóinu tvisvar í röð.
Af hverju get ég ekki notað UUID v4 sem aðallykil í gagnagrunni? Þú getur það, en þú verður að vera meðvitaður um vísitöluskiptingu. Handahófskennd innsetning veldur tíðum endurjafnvægingum og minni afköstum. Tímaraðaðar auðkenni (UUID v7 eða ULID) henta betur fyrir mikið skrifaða gagnagrunna.
Hvað gerist ef ég sleppi bandstrikunum? Auðkennið verður 32 stafir í stað 36. Það er enn gilt UUID v4, en slepping bandstrika getur valdið vandræðum við forrit sem búast við bandstrikum. Sum kerfi krefjast 36-stafa framsetningar.
Er munur á stórum og lágum stöfum? Nei, gildið er það sama. Hástafir A–F og lágstafir a–f eru jafngildir í hexadecimal. Samræmi er þó æskilegt til að forðast rugling í leitarvélum og samanburði.
Hvernig vinnur síðan þetta? Allt fer fram í vafranum. Síðan notar crypto.randomUUID eða jafngilda API-ið til að mynda 122 handahófsbita. Engin gögn eru send til netþjóns. Þegar breytingar eru gerðar á stillingum (fjölda, hástöfum, bandstrikum) myndast ný auðkenni samstundis.
Get ég notað UUID v4 fyrir API-þjónustulykla? Já, UUID v4 er tilvalið. 122 bitar af handahófi gera það nánast ómögulegt að giska á. Tímaupplýsingar vantar, sem er kostur ef þú vilt ekki að hægt sé að vinna tíma upplýsingar úr lyklinum.