← Alle gereedskap

UUID-generator (v4 GUID)

Genereer lukrake v4-UUID's (GUID's) onmiddellik in jou blaaier. Leer wat 'n 128-bis UUID is, hoe weergawes verskil, botsingskanse en wanneer om dit te gebruik.

Wat 'n UUID eintlik is

'n UUID, kort vir Universally Unique Identifier, is 'n 128-bis-waarde wat gebruik word om iets te merk sonder om eers vir enigiemand toestemming te vra. Jy sal dit ook dalk 'n GUID sien genoem word, of Globally Unique Identifier, wat eenvoudig die naam is wat Microsoft aan dieselfde idee binne Windows en die .NET-wêreld gegee het. Die twee terme beskryf dieselfde 128-bis-getal in byna elke geval wat saak maak, so wanneer 'n kollega GUID sê en jy UUID sê, praat julle byna altyd oor presies dieselfde ding.

Daardie 128 bisse word normaalweg as 32 heksadesimale syfers geskryf, verdeel in vyf groepe deur koppeltekens, in 'n 8-4-4-4-12-patroon. 'n Tipiese waarde lyk soos 123e4567-e89b-12d3-a456-426614174000. Die koppeltekens dra geen betekenis van hulself nie; hulle bestaan bloot sodat 'n mens die waarde kan lees sonder om sy plek te verloor. Elke karakter is 'n heksadesimale syfer van 0 tot f, en dis waarom 'n UUID digter voel as 'n alledaagse getal, alhoewel dit, onder die oppervlak, net een baie groot heelgetal is.

Abstrakte gloeiende heksadesimale token wat 'n unieke 128-bis-identifiseerder op 'n donker indigo agtergrond voorstel
'n UUID is een 128-bis-getal, geskryf as 32 heksadesimale syfers in vyf groepe met koppeltekens.

Weergawes, en waarom v4 wen

Die standaard definieer verskeie weergawes, en hulle verskil in hoe die bisse gevul word. Weergawe 1 is tydgebaseer: dit weef die huidige tydstempel en die masjien se netwerk-MAC-adres saam. Dit maak v1-waardes sorteerbaar volgens skeppingstyd, maar dit lek ook inligting oor waar en ongeveer wanneer hulle gemaak is, wat nie altyd welkom is nie. Weergawes 3 en 5 is naamgebaseer, en verhasj 'n naamruimte plus 'n naam sodat dieselfde toevoer altyd dieselfde identifiseerder oplewer.

Weergawe 4 volg 'n heeltemal ander roete. Dit is byna suiwer ewekansigheid. Van die 128 bisse word ses gereserveer om die weergawe en variant te merk, wat 122 bisse laat om met ewekansige data gevul te word. Daar is geen tydstempel, geen MAC-adres, geen naamruimte nie, net geraas. Dis presies waarom die meeste generators, insluitend hierdie een, verstek v4 produseer. Dit onthul niks oor die toestel of die oomblik van skepping nie, en dit het geen koördinasie tussen die partye wat dit maak nodig nie. Die hulpmiddel op hierdie bladsy loop heeltemal in jou blaaier, so die ewekansige waardes verlaat nooit jou masjien nie.

Hoe onwaarskynlik 'n botsing werklik is

Die redelike bekommernis is dat twee ewekansige UUID's eendag identies kan wees. Met 122 ewekansige bisse is die ruimte van moontlike v4-waardes 2 tot die mag 122, wat ongeveer 5,3 gevolg deur 36 nulle is. Om dit in menslike terme te stel, sou jy miljarde UUID's elke sekonde vir baie dekades moes genereer voordat die kans op 'n enkele duplikaat na iets meetbaars styg. Die standaard self beskryf die kans op 'n botsing as naby genoeg aan nul om weglaatbaar te wees. In die praktyk hanteer spanne v4 as uniek en gaan voort, en hulle is reg om dit te doen.

Ontelbare afsonderlike gloeiende sleutels wat in 'n uitgestrekte donker ruimte sonder duplikate sweef, sian- en goudkleurige aksente
Die poel van moontlike v4-waardes is so uitgestrek dat botsings in wese onmoontlik is.

Waar ontwikkelaars daarna reik

Omdat uniekheid geen sentrale gesag nodig het nie, blink UUID's uit op plekke waar koördinasie duur of onmoontlik is. Hulle pas natuurlik by databasisse se primêre sleutels, veral wanneer verskeie dienste elk rye invoeg en jy nie kan wag om 'n gedeelde teller vir die volgende nommer te vra nie. In verspreide stelsels kan twee nodusse aan teenoorgestelde kante van die planeet albei identifiseerders op dieselfde oomblik munt sonder om ooit te bots. Hulle dryf ook API-idempotensiesleutels aan, waar 'n kliënt 'n UUID aan 'n versoek heg sodat die bediener veilig 'n duplikaat kan ignoreer as die netwerk weer probeer. Sessietokens, lêernaamde, gebeurtenis-ID's, en boodskapsleutels leun almal op dieselfde eienskap.

UUID teenoor outo-inkrement-ID's

Die klassieke alternatief is die outo-inkrement-heelgetal: 1, 2, 3, ensovoorts. Sekwensiële ID's is kompak, sorteer natuurlik, en is maklik om te lees, maar hulle het werklike nadele. Hulle openbaar hoeveel rekords bestaan en laat buitestanders naburige waardes raai, en hulle dwing elke invoeging deur 'n enkele teller, wat 'n bottelnek word wanneer jy 'n databasis sharde of data van baie bronne saamsmelt. UUID's los daardie probleme op deur enige party toe te laat om onafhanklik 'n sleutel te genereer en niks oor volume of orde weg te gee nie. Die kompromie is grootte en 'n bietjie minder lokaliteit in indekse. Vir stelsels wat uitskaal of hul binnewerking moet wegsteek, is daardie kompromie gewoonlik die moeite werd. Jy kan hierdie en soortgelyke nutsprogramme verken deur ons alle generators-versameling, of blaai deur die wyer stel ontwikkelaarshulpmiddels vir verwante boustene.

Gereelde vrae

Is 'n GUID dieselfde as 'n UUID?

Vir alledaagse doeleindes, ja. GUID is Microsoft se naam vir dieselfde 128-bis-identifiseerder. Die enigste werklike verskil is greeporde in die rou binêre vorm op sommige Windows-stelsels; in strengvorm is hulle identies en uitruilbaar.

Watter UUID-weergawe genereer hierdie hulpmiddel?

Dit genereer weergawe 4, die ewekansige variant. Van sy 128 bisse word 122 met ewekansige data gevul, wat elke waarde uiters onwaarskynlik maak om te herhaal en beteken dat dit geen tydstempel- of toestelinligting dra nie.

Kan twee UUID's ooit dieselfde wees?

In teorie is die waarskynlikheid nie presies nul nie, maar met ongeveer 5,3 maal 10 tot die 36 moontlike v4-waardes is dit so klein dat dit as weglaatbaar behandel word. Jy sou astronomiese aantalle daarvan moes genereer voordat 'n botsing waarskynlik word.

Waarom 'n UUID gebruik in plaas van 'n outo-inkrement-nommer?

UUID's kan onafhanklik deur enige diens geskep word sonder 'n gedeelde teller, hulle openbaar nie rekordgetalle of volgorde nie, en hulle maak dit moeiteloos om data van baie bronne saam te smelt. Outo-inkrement-ID's is kleiner maar word 'n bottelnek en lek inligting op skaal.

Word die UUID's op 'n bediener gegenereer?

Nee. Hierdie hulpmiddel loop heeltemal in jou blaaier, so die ewekansige waardes word plaaslik geproduseer en nooit iewers heen gestuur nie. Dit maak dit veilig om te gebruik vir sleutels en tokens wat jy privaat wil hou.

Wat beteken die koppelteken-patroon?

Die 8-4-4-4-12-groepering is bloot 'n leesbaarheidskonvensie. Die koppeltekens dra geen data nie; hulle verdeel die 32 heksadesimale syfers in stukke sodat mense waardes makliker kan skandeer en vergelyk.