← Toate instrumentele

Generator UUID (v4 GUID)

Generează instant UUID-uri v4 (GUID) aleatorii în browser. Află ce este un UUID pe 128 de biți, diferențele între versiuni, șansele de coliziune și când să le folosești.

Ce este de fapt un UUID

Un UUID, prescurtare de la Universally Unique Identifier (identificator universal unic), este o valoare de 128 de biți folosită pentru a eticheta ceva fără a cere voie nimănui în prealabil. Poți să-l vezi și numit GUID, sau Globally Unique Identifier, care este pur și simplu numele dat de Microsoft aceleiași idei în Windows și în lumea .NET. Cei doi termeni descriu același număr de 128 de biți în aproape toate cazurile care contează, așa că atunci când un coleg spune GUID iar tu spui UUID, aproape întotdeauna vorbiți despre exact același lucru.

Acei 128 de biți sunt scriși în mod normal ca 32 de cifre hexazecimale împărțite în cinci grupuri prin cratime, într-un tipar 8-4-4-12. O valoare tipică arată așa: 123e4567-e89b-12d3-a456-426614174000. Cratimele nu poartă niciun sens propriu; există pur și simplu pentru ca un om să poată citi valoarea fără a se pierde. Fiecare caracter este o cifră hex de la 0 la f, motiv pentru care un UUID pare mai dens decât un număr obișnuit, deși sub suprafață este doar un singur întreg foarte mare.

Token hexazecimal abstract strălucitor reprezentând un identificator unic de 128 de biți pe fundal indigo închis
Un UUID este un singur număr de 128 de biți, scris ca 32 de cifre hex în cinci grupuri separate prin cratime.

Versiuni, și de ce câștigă v4

Standardul definește mai multe versiuni, iar acestea diferă prin modul în care sunt umpluți biții. Versiunea 1 este bazată pe timp: împletește marca temporală curentă cu adresa MAC de rețea a mașinii. Asta face ca valorile v1 să poată fi sortate după momentul creării, dar și scurge informații despre unde și aproximativ când au fost create, ceea ce nu este întotdeauna binevenit. Versiunile 3 și 5 sunt bazate pe nume, aplicând un hash unui spațiu de nume plus un nume, astfel încât aceeași intrare produce mereu același identificator.

Versiunea 4 ia o cale complet diferită. Este aproape aleatoriu pur. Din cei 128 de biți, șase sunt rezervați pentru a marca versiunea și varianta, rămânând 122 de biți de umplut cu date aleatorii. Nu există marcă temporală, nicio adresă MAC, niciun spațiu de nume, doar zgomot. Exact de aceea majoritatea generatoarelor, inclusiv acesta, produc v4 implicit. Nu dezvăluie nimic despre dispozitiv sau despre momentul creării și nu necesită nicio coordonare între părțile care îl generează. Instrumentul de pe această pagină rulează în întregime în browserul tău, deci valorile aleatorii nu părăsesc niciodată calculatorul tău.

Cât de improbabilă este de fapt o coliziune

Îngrijorarea rezonabilă este că două UUID-uri aleatorii ar putea fi vreodată identice. Cu 122 de biți aleatori, spațiul valorilor v4 posibile este 2 la puterea 122, care este aproximativ 5,3 urmat de 36 de zerouri. Ca să punem asta în termeni umani, ar trebui să generezi miliarde de UUID-uri în fiecare secundă timp de multe decenii înainte ca șansele unui singur duplicat să crească la ceva măsurabil. Standardul însuși descrie șansa unei coliziuni ca fiind suficient de apropiată de zero încât să fie neglijabilă. În practică, echipele tratează v4 ca fiind unic și merg mai departe, și au dreptate să o facă.

Nenumărate chei strălucitoare distincte plutind într-un spațiu vast și întunecat fără duplicate, accente cyan și aurii
Rezerva de valori v4 posibile este atât de vastă încât coliziunile sunt practic imposibile.

Unde apelează dezvoltatorii la ele

Pentru că unicitatea nu are nevoie de nicio autoritate centrală, UUID-urile strălucesc în locurile unde coordonarea este costisitoare sau imposibilă. Sunt o potrivire naturală pentru cheile primare din baze de date, mai ales atunci când mai multe servicii inserează fiecare rânduri și nu poți face o pauză pentru a cere unui contor comun următorul număr. În sistemele distribuite, două noduri de pe părți opuse ale planetei pot ambele să genereze identificatori în aceeași clipă fără să se ciocnească vreodată. De asemenea, alimentează cheile de idempotență din API-uri, unde un client atașează un UUID unei cereri, astfel încât serverul poate ignora în siguranță un duplicat dacă rețeaua reîncearcă. Token-urile de sesiune, numele de fișiere, ID-urile de evenimente și cheile de mesaje se bazează toate pe aceeași proprietate.

UUID versus ID-uri cu auto-incrementare

Alternativa clasică este întregul cu auto-incrementare: 1, 2, 3 și așa mai departe. ID-urile secvențiale sunt compacte, se sortează natural și sunt ușor de citit, dar au dezavantaje reale. Dezvăluie câte înregistrări există și permit celor din afară să ghicească valorile vecine, și forțează fiecare inserare printr-un singur contor, care devine un blocaj atunci când fragmentezi o bază de date sau combini date din multe surse. UUID-urile rezolvă aceste probleme permițând oricărei părți să genereze o cheie independent și nedezvăluind nimic despre volum sau ordine. Compromisul este dimensiunea și puțin mai puțină localitate în indecși. Pentru sistemele care scalează sau care trebuie să-și ascundă mecanismele interne, acest compromis merită de obicei făcut. Poți explora acest instrument și altele similare prin colecția noastră toți generatorii, sau răsfoiește setul mai larg de instrumente pentru dezvoltatori pentru elemente conexe.

Întrebări frecvente

Este un GUID la fel ca un UUID?

Pentru scopuri de zi cu zi, da. GUID este numele dat de Microsoft aceluiași identificator de 128 de biți. Singura diferență reală este ordinea octeților în forma binară brută pe unele sisteme Windows; în formă de șir de caractere sunt identice și interschimbabile.

Ce versiune de UUID generează acest instrument?

Generează versiunea 4, varianta aleatorie. Din cei 128 de biți, 122 sunt umpluți cu date aleatorii, ceea ce face fiecare valoare extrem de improbabil să se repete și înseamnă că nu poartă nicio marcă temporală sau informație despre dispozitiv.

Pot fi vreodată două UUID-uri identice?

În teorie probabilitatea nu este exact zero, dar cu aproximativ 5,3 ori 10 la puterea 36 de valori v4 posibile, este atât de mică încât este tratată ca neglijabilă. Ar trebui să generezi numere astronomice dintre ele înainte ca o coliziune să devină probabilă.

De ce să folosești un UUID în loc de un număr cu auto-incrementare?

UUID-urile pot fi create independent de orice serviciu fără un contor comun, nu dezvăluie numărul de înregistrări sau ordinea, și fac combinarea datelor din multe surse lipsită de dureri de cap. ID-urile cu auto-incrementare sunt mai mici, dar devin un blocaj și scurg informații la scară.

UUID-urile sunt generate pe un server?

Nu. Acest instrument rulează în întregime în browserul tău, deci valorile aleatorii sunt produse local și nu sunt trimise nicăieri. Asta îl face sigur de folosit pentru chei și token-uri pe care intenționezi să le păstrezi private.

Ce înseamnă tiparul cu cratime?

Gruparea 8-4-4-4-12 este doar o convenție pentru lizibilitate. Cratimele nu poartă date; ele împart cele 32 de cifre hex în fragmente astfel încât oamenii să poată scana și compara valorile mai ușor.