UUID rafall

Búðu til UUID í vafranum þínum: algjörlega slembivalin v4, tímaröðuð v7 fyrir gagnagrunnslykla, eða ákvarðanleg v5. Allt að 1000 í einu, og ekkert yfirgefur tækið þitt.

Ýttu á „Búa til“ til að fá niðurstöðu
Útgáfa
Ítarlegar stillingar

Þarftu auðkenni sem rekst ekki á við auðkenni sem einhver annar bjó til, á tölvu sem þú hefur aldrei heyrt um, án þess að biðja nokkurn um leyfi? Það er nákvæmlega hlutverkið sem UUID sinnir. Þetta er 128 bita tala, skrifuð sem 36 stafir í hinu þekkta 8-4-4-4-12 mynstri, og öll hönnun hennar snýst um að tvær slíkar tölur verði aldrei eins, jafnvel þótt ekkert kerfi stýri því hver fær hvaða tölu. Þessi ókeypis rafall býr þær til í vafranum þínum: veldu útgáfu undir „Útgáfa“, segðu hversu margar þú vilt í „Fjöldi“ og smelltu á „Búa til“. Síðan opnast með einu v4, sem er sú útgáfa sem flest verkefni þurfa, svo fyrsta auðkennið er aðeins einum smelli í burtu.

Hvert auðkenni er búið til af vafranum þínum í gegnum Web Crypto API. Útgáfa 4 notar crypto.randomUUID() þar sem vafrinn býður upp á það en annars crypto.getRandomValues() — dulkóðunarfræðilega sterka uppsprettu slembitalna frekar en JavaScript slembifall á borð við Math.random(). Útgáfa 7 setur 48 bita tímastimpil í millisekúndum fremst, síðan 12 bita teljara sem hækkar innan sömu millisekúndu, og loks 62 slembibita, sem er flokkunaraðferðin lýst í RFC 9562; sá teljari er ástæðan fyrir því að þúsund auðkenni koma út í réttri röð frekar en í ruglingi. Útgáfa 1 sameinar tímastimpil og slembivalin hnút sem hefur fjölvarpsbitann stilltan, þannig að hún ber aldrei vistfang netkortsins þíns líkt og upprunalegu útfærslurnar frá tíunda áratugnum gerðu. Útgáfur 3 og 5 eru alls ekki slembivaldar: þær tæta saman nafnarými og nafn, með MD5 og SHA-1 í sömu röð, og sú tæting fer einnig fram í tækinu þínu. Ekkert er sent á netþjón, ekkert er skráð, og þegar síðan hefur hlaðist heldur hún áfram að virka þótt nettengingin sé rofin.

„Útgáfa“ er reiturinn sem ákvarðar allt annað. Útgáfa 4 samanstendur af 122 slembibitum án nokkurrar uppbyggingar — sjálfgefna valið og rétta svarið þegar auðkenni þarf aðeins að vera einstakt. Útgáfa 7 heldur 62 slembibitum en byrjar á tímanum þegar hún var búin til, svo safn af þeim raðast í þá röð sem þau voru búin til í; það er það sem gerir hana að bestu útgáfunni þegar auðkennið verður gagnagrunnslykill. Útgáfa 1 er upprunalega tímabyggða aðferðin, haldið hér inni fyrir kerfi sem biðja enn um hana. Útgáfur 3 og 5 eru dálítið sérstakar: þær eru ákvarðanlegar, sem þýðir að sama inntak skilar alltaf sama auðkenni, og þær taka við tveimur aukareitum — „Nafnarými“, sem er eitt af staðlaðra rýmunum DNS, URL, OID og X.500 eða „Sérsniðið“ sem þú býrð til sjálfur („Sérsniðið nafnarými (UUID)“), og „Nafn“, sem er strengurinn sem verið er að auðkenna. Ef þú setur URL nafnarýmið og https://example.com/a inn í v5 færðu sama UUID í dag, á morgun og í tölvu hjá einhverjum öðrum. Vegna þessa hverfur reiturinn „Fjöldi“ þegar v3 eða v5 er valið: þúsund afrit af einu ákvarðanlegu gildi væru bara þúsund afrit af einu ákvarðanlegu gildi. Fyrir allar aðrar útgáfur liggur „Fjöldi“ frá 1 upp í 1000.

Fjórir rofar breyta útliti úttaksins án þess að breyta 128 bitunum undir niðri. „Hástafir“ prentar sextándakerfistölurnar sem stóra stafi, „Án bandstrika“ gefur þjappað 32 stafa form sem sumir dálkar og skráarnöfn kjósa, og „Slaufusvigar“ vefur gildinu inn í { } — það form sem Windows og .NET heimurinn kalla GUID. Undir „Ítarlegar stillingar“ bætir urn:uuid: við því forskeyti sem gerir það að formlegu URN; það slekkur á „Slaufusvigar“ og „Án bandstrika“ á meðan það er kveikt, því staðallinn leyfir nákvæmlega eitt URN form og það er upprunalega formið með bandstrikum. „Afrita snið“ ræður því hvernig hópur er tengdur saman þegar þú afritar hann: eitt í hverri línu, aðskilin með kommum, eða hvert gildi í gæsalöppum með kommu á eftir, sem límist beint inn í fylki í kóða. Fyrir neðan niðurstöðuna er lína sem sýnir slembistigið í bitum — 122 fyrir v4, 62 fyrir v7 — og, fyrir v7, tímastimpilinn sem er umritaður í fyrsta auðkenni hópsins, svo tíminn inni í gildinu er sýnilegur en ekki gefinn í skyn. Bæði „Afrita allt“ og „Vista í skrá“ virða valin í „Afrita snið“. „Saga“ geymir síðustu 10 hópa þína í vafranum þínum: smelltu á einn til að kalla hann fram, afritaðu eða eyddu einni færslu, eða hreinsaðu listann. „Hreinsa“ tæmir niðurstöðurnar og skilur stillingarnar eftir óhreyfðar, og eftir 50 auðkenni verður listinn að einni skrunanlegri blokk í stað fimmtíu raða.

Mikilvægasta atriðið á þessari síðu er munurinn á v4 og v7 sem aðallykli, og það er ekki spurning um smekk. Gagnagrunnsvísar eru tré sem geymd eru í flokkaðri röð, og hvar nýr lykill lendir í þeirri röð ákvarðar hversu mikla vinnu innsetningin krefst. v4 lykill er slembivalinn, svo samfelldar innsetningar lenda í ótengdum hornum vísisins: síður sem voru fullar klofna, hlutar trésins sem gagnagrunnurinn geymir í minni eru sjaldnast hlutarnir sem næsta innsetning þarf á að halda, og vísirinn endar stærri og brotnari en raðirnar sem hann vísar á gefa tilefni til. v7 lykill byrjar á yfirstandandi millisekúndu, svo samfelldar innsetningar lenda hlið við hlið á hægri brún trésins, sem er mynstrið sem sjálfhækkandi heiltala framkallar og mynstrið sem vísauppbyggingar voru byggðar í kringum. Það eru öll skiptin: v7 kaupir þér innsetningarhegðun raðbundins lykils en heldur þeim eiginleika sem fékk þig til að velja UUID í upphafi, sem er sá að hver sem er getur búið til lykil án þess að biðja netþjón um leyfi. Það sem það kostar er að tími sköpunar er nú lesanlegur inni í auðkenninu, og hvort það skiptir máli er spurning um gögnin þín, ekki sniðið.

Ekkert athugar nokkurn tíma hvort UUID sé einstakt; stærð þess er tryggingin. Það er engin skrá, engin netþjónafyrirspurn, engin leit — rafall býr til tölu og afhendir hana, og ástæðan fyrir því að tvær þeirra rekast ekki á er einfaldlega sú að til eru 2^122 möguleg v4 gildi, sem eru um það bil 5,3 sextilljónir. Afmælisdagavandamálið er heiðarlega leiðin til að meta það stærðarhlutfall: þú þyrftir gróflega 2,7 trilljónir auðkenna áður en það væru jafnar líkur á að einhver tvö þeirra væru eins, sem er milljarður nýrra UUID á sekúndu í 86 ár. Það er þess virði að vera nákvæmur um hvað það lofar og lofar ekki. Þetta er tölfræðileg trygging, ekki stærðfræðileg, og hún gildir aðeins á meðan slembin undir niðri er raunveruleg — illa frumstilltur rafall, eða sýndarvél sem klónuð er ásamt óreiðusafni sínu, brýtur hana á þann hátt sem sniðið getur ekki greint. Útgáfa 7 þrengir spurninguna enn frekar: innan einnar millisekúndu getur einn rafall alls ekki endurtekið sig, því teljarinn hækkar frekar en að kasta teningum, og milli sjálfstæðra rafalla sjá 62 slembibitar um verkið.

UUID er auðkenni, ekki lykilorð. Útgáfa 4 er ófyrirsjáanleg, og það freistar fólks til að meðhöndla hana sem leyndarmál — endurstillingartengill lykilorðs, vefslóð sem ekki er hægt að giska á, setutákn, eða API lykill. Ófyrirsjáanleikinn er raunverulegur, en leynd er eiginleiki sem stjórnast af því hvernig gildi er meðhöndlað, og auðkenni eru hönnuð til að vera meðhöndluð af kæruleysi: þau sitja í vefslóðum, sem lenda í vafraferli, netþjónaskrám, vísihausum og greiningartólum, og eru límd inn í spjallskilaboð. Hinar útgáfurnar eru enn verri kostir. Bæði útgáfa 1 og útgáfa 7 umrita augnablikið sem þær voru búnar til, svo hver sem heldur á einni veit nokkurn veginn hvenær hún var búin til og getur þrengt nærumhverfi alls sem búið var til við hlið hennar. Útgáfur 3 og 5 eru ákvarðanlegar af ásettu ráði: v5 UUID af netfangi er ekki dulkóðað leyndarmál, það er gildi sem hver sem er með sama netfang getur reiknað út á sekúndu. Notaðu UUID til að nefna hlut. Notaðu lykilorðarafall eða tákn úr safni sem smíðað er fyrir leyndarmál, þegar gildið verður að vera óþekkt.

Af hverju að velja þennan UUID rafal?

UUID birtast hvar sem þarf að nefna eitthvað áður en nokkuð getur staðfest að nafnið sé laust. Forritskóði býr þau til fyrir raðir sem hann er að fara að setja inn, svo hluturinn hafi auðkenni áður en hann kemst í gagnagrunninn og biðlari geti vísað í hann á meðan skrifunin er enn í gangi. Dreifð kerfi treysta enn meira á þau: nokkrar þjónustur sem skrifa í eina töflu, ótengdur snjallsímabiðlari sem býr til færslur í flugvél, eða biðröð sem þarf að þekkja skilaboðin sem hún er þegar búin að vinna — ekkert þeirra getur beðið eftir sameiginlegum teljara. Útgáfa 5 uppfyllir aðra þörf, sem er stöðugt auðkenni dregið af einhverju sem þú ert nú þegar með: sama skjalið, sama vefslóðin eða sami reikningurinn vísar alltaf á sama UUID, svo innflutningur getur keyrt tvisvar án þess að tvítaka neitt. Annars staðar eru þau einfaldlega það snið sem kerfið krefst — fylgniauðkenni sem þrætt er í gegnum annála og rakningar, skráarnafn sem mun ekki rekast á þegar upphleðslur frá þúsund notendum lenda í sömu fötu, Windows skrásetningarlykill, prófunargögn sem verða að líta út eins og raunveruleg gögn.

Nokkur heiðarleg takmörk eru þess virði að vita um. Einn hópur er ein útgáfa: gildið í „Útgáfa“ á við um allt í honum, þannig að hópur af v4 og hópur af v7 eru tveir hópar. Þetta er rafall, ekki rannsakandi — að líma UUID inn til að lesa útgáfu þess eða tímastimpil til baka er ekki eitthvað sem þessi síða gerir. „Vista í skrá“ skrifar hreina textaskrá fremur en CSV eða JSON. Útgáfa 7 gefur opinskátt upp hvenær hún var búin til, niður í millisekúndu, sem er raunveruleg skipti en ekki galli, og útgáfa 1 lekur tíma á sama hátt; ef það er vandamál fyrir gögnin þín er útgáfa 4 sú útgáfa sem segir engum neitt. Tvö sérstök gildi frá staðlinum eru ekki útgáfur og eru því ekki valkostir undir „Útgáfa“, en þú getur afritað þau héðan: nil UUID, 00000000-0000-0000-0000-000000000000 og max UUID, ffffffff-ffff-ffff-ffff-ffffffffffff. Allt á þessari síðu fylgir RFC 9562, staðlinum sem kom í stað RFC 4122 árið 2024, þannig að úttakið er tekið gilt af hverju því forritasafni, gagnagrunni eða API sem höndlar UUID yfirhöfuð. Innan þessara marka er tryggingin sterk: hvert auðkenni er byggt samkvæmt staðlinum, út frá dulkóðunarfræðilega öruggri slembi, á þinni eigin vél, og enginn annar sér það nokkurn tímann.

FAQ

Hvernig bý ég til UUID?

Veldu útgáfu undir „Útgáfa“, stilltu hversu mörg þú þarft í „Fjöldi“ og smelltu á „Búa til“. Síðan opnast með einu útgáfu 4 auðkenni, sem er það sem flest verkefni vilja, svo venjulegt UUID er í aðeins eins smells fjarlægð. Hvert gildi birtist með sínum eigin afritunarhnappi, og „Afrita allt“ tekur allan hópinn í einu.

Hver er munurinn á UUID v4 og v7?

Útgáfa 4 samanstendur af 122 slembibitum án nokkurrar uppbyggingar, svo tvö þeirra hafa ekkert samband sín á milli. Útgáfa 7 eyðir fyrstu 48 bitunum í millisekúnduna sem hún var sköpuð í, bætir við teljara og 62 slembibitum, og er því röðunarbær: hópur kemur út í sömu röð og hann var búinn til. Notaðu v4 þegar auðkenni þarf aðeins að vera einstakt, og v7 þegar það verður jafnframt gagnagrunnslykill.

Hvaða UUID útgáfu ætti ég að nota?

Útgáfu 4 nema þú hafir ástæðu til að velja aðra. Veldu útgáfu 7 ef auðkennið verður aðallykill og innsetningarhraði skiptir máli, útgáfu 5 ef þú þarft að sama inntak skili alltaf sama auðkenni, og útgáfu 1 aðeins ef kerfi sem þú þarft að tala við biður sérstaklega um hana. Útgáfa 3 er útgáfa 5 með MD5 í stað SHA-1, og er til fyrir afturvirka samhæfni.

Eru framkölluð UUID raunverulega slembivalin og örugg?

Slembin er dulkóðunarfræðilega örugg: hún kemur frá Web Crypto API vafrans þíns, gegnum crypto.randomUUID() eða crypto.getRandomValues(), ekki frá Math.random(). Öryggi í þeim skilningi að ómögulegt sé að giska á gildið er önnur spurning en öryggi í skilningi leyndar — UUID er auðkenni, og ætti ekki að nota sem lykilorð, setutákn eða API lykil.

Get ég búið til mörg UUID í einu?

Já, allt að 1000 í einu lagi. Stilltu „Fjöldi“ og smelltu á „Búa til“; eftir fimmtíu gildi verður niðurstaðan ein skrunanleg blokk fremur en langur listi af röðum. „Afrita allt“ og „Vista í skrá“ taka allan hópinn, tengdan á þann hátt sem „Afrita snið“ segir til um — eitt í línu, aðskilið með kommu, eða tilvitnað til að líma beint inn í fylki.

Hvers vegna gefa v3 og v5 mér alltaf sama UUID?

Vegna þess að það er hlutverk þeirra. Útgáfur 3 og 5 eru ákvarðanlegar: þær tæta nafnarýmið og nafnið sem þú gefur þeim, svo nákvæmlega sömu inntök skila alltaf nákvæmlega sama auðkenni, á hvaða tölvu og í hvaða forritunarmáli sem er. Það gerir þær gagnlegar til að leiða stöðugt auðkenni af einhverju sem þú ert þegar með, og það er líka ástæðan fyrir því að „Fjöldi“ er falinn þegar þú velur þær.

Hvað eru Nafnarými og Nafn, og hvaða nafnarými ætti ég að velja?

Þau eru tvö inntökin sem útgáfa 3 eða útgáfa 5 af UUID er reiknuð út frá. „Nafnarými“ segir til um hvers konar hlutur nafnið er — DNS fyrir hýsilnöfn, URL fyrir slóðir, OID og X.500 fyrir þess háttar skráarkerfi, eða „Sérsniðið nafnarými (UUID)“ ef þú vilt gefa upp þitt eigið nafnarýmis UUID, sem er algengasta valið innan forrits. „Nafn“ er strengurinn sjálfur. Mismunandi nafnarými gefa gjörólíkar niðurstöður fyrir sama nafn, sem er tilgangurinn með að hafa þau.

Hvers vegna er UUID v7 betra en v4 fyrir gagnagrunnslykil?

Vegna þess hvar gildin lenda í vísinum. Vísi er haldið í flokkaðri röð, og slembivalinn v4 lykill lendir hvar sem er í honum, svo innsetningar kljúfa síður út um allt tréð og þeir hlutar sem haldið er í minni eru sjaldnast þeir hlutar sem þörf er á næst. v7 lykill byrjar á yfirstandandi millisekúndu, svo samfelldar innsetningar lenda saman við enda vísisins, sem er hvernig raðbundinn heiltölulykill hegðar sér — en leyfir samt hvaða þjónustu sem er að búa til auðkenni án þess að spyrja miðlægan teljara.

Gætu tvö UUID nokkurn tíma orðið þau sömu?

Í orði já, í framkvæmd nei, og það er þess virði að vita hvort er hvað. Ekkert staðfestir að þau séu einstök: það eru einfaldlega 2^122 möguleg útgáfu 4 gildi, um það bil 5,3 sextilljónir, og þú þyrftir um 2,7 trilljónir af þeim — milljarð á sekúndu í 86 ár — áður en jafnar líkur væru á stökum árekstri. Tryggingin er tölfræðileg frekar en algild, og hún byggir á því að slembin sé sönn, sem er ástæðan fyrir því að þessi rafall notar Web Crypto API fremur en venjulegt gervislembifall.

Get ég notað UUID sem lykilorð, API lykil eða setutákn?

Nei, og þetta eru mistökin sem kosta mest. Útgáfa 4 UUID er ófyrirsjáanleg, en auðkenni eru meðhöndluð eins og þau séu opinber: þau lenda í vefslóðum, vafraferli, netþjónaskrám, vísihausum og greiningartólum. Útgáfur 1 og 7 gefa auk þess upp hvenær þær voru búnar til, og hver sem þekkir inntökin getur endurreiknað útgáfur 3 og 5. Fyrir allt sem þarf að haldast leyndarmál, notaðu lykilorðarafall eða tákn frá safni ætluðu fyrir leyndarmál.

Gefur UUID v7 upp hvenær það var búið til?

Já, niður í millisekúndu, og það er hönnunaratriði en ekki yfirsjón — tímastimpillinn er það sem gerir v7 röðunarbæra. Línan undir niðurstöðunni sýnir þér tímann sem umritaður er í fyrsta gildi hópsins, svo þú getur séð nákvæmlega hvað er gefið upp. Útgáfa 1 ber einnig tímastimpil. Ef sköpunartími eru upplýsingar sem þú vilt frekar ekki birta, þá er útgáfa 4 sú útgáfa sem segir engum neitt.

Gefur UUID v1 upp MAC vistfangið mitt?

Ekki hér. Upprunalega aðferðin notaði vistfang netkorts tölvunnar sem hnútssvið, og þaðan kemur orðspor v1, en staðallinn leyfir einnig slembivalin hnútsauðkenni merkt með fjölvarpsbita, og það er það sem þessi rafall framkallar. Vélbúnaðarvistfangið þitt er aldrei lesið og birtist aldrei í úttakinu.

Hverju breyta Hástafir, Án bandstrika, Slaufusvigar og urn:uuid:?

Aðeins framsetningunni — 128 bitarnir undir niðri eru nákvæmlega eins í öllum formum. „Hástafir“ prentar sextándakerfistölurnar með stórum stöfum, „Án bandstrika“ gefur þjappaða 32 stafa útgáfu, „Slaufusvigar“ vefur gildinu inn í { } líkt og Windows og .NET skrifa GUID, og urn:uuid: bætir við forskeyti sem gerir það að formlegu URN. urn:uuid: slekkur á hinum tveimur á meðan það er kveikt, því staðallinn skilgreinir nákvæmlega eitt URN form sem er hið viðurkennda form með bandstrikum.