fixmint
RO

UUID v4 sau v7: care să folosești și de ce contează

De · · actualizat 8 noiembrie 2026 · 5 min de citit

Folosește UUID v4 când ai nevoie de un identificator aleator și nimic mai mult. Folosește UUID v7 când identificatorul va fi o cheie de bază de date sau când vrei ca ID-urile să se sorteze după momentul creării. Ambele au 128 de biți, scrise în aceeași formă de 36 de caractere, deci diferența stă în felul în care sunt aranjați biții. Generatorul UUID de mai jos creează oricare dintre versiuni, câte unul până la 500 deodată, direct în browser.

Generator UUIDAm nevoie de ID-uri unice pentru codÎncearcă gratuit

Cum arată un UUID

Un UUID, adică identificator unic universal, este un număr de 128 de biți scris ca 32 de cifre hexazecimale, în cinci grupuri: 8, 4, 4, 4 și 12 cifre, separate prin cratime. Un exemplu este 3f2b8c1e-6d4a-4f7b-9c2e-8a1d5e0b7f63.

Două părți ale numărului sunt fixe. Patru biți țin versiunea, deci al treilea grup începe cu 4 pentru v4 sau cu 7 pentru v7. Doi biți țin varianta, deci al patrulea grup începe cu 8, 9, a sau b. Restul transportă chiar identificatorul. Biții de variantă și de versiune sunt motivul pentru care un UUID v4 are 122 de biți aleatori, nu 128.

UUID v4: aleator

Un UUID v4 este aleator, în afară de biții fixi. Cei 122 de biți aleatori fac o repetare extrem de puțin probabilă. Să presupunem că generezi un miliard de UUID-uri v4. Șansa ca două să coincidă este aproximativ n la pătrat împărțit la dublul numărului de valori posibile, adică circa 10 la puterea minus 19. Cu alte cuvinte, coliziunile nu sunt ceva pentru care trebuie să proiectezi.

Estimarea presupune că generatorul ia biții dintr-o sursă criptografică de aleatoriu. Un generator previzibil ar submina această estimare. Acest instrument folosește sursa criptografică de aleatoriu a browserului, prin crypto.randomUUID sau crypto.getRandomValues.

UUID v7: mai întâi timpul

RFC 9562 definește v7. Primii 48 de biți țin ora Unix în milisecunde, deci un ID creat mai târziu are o primă parte mai mare decât un ID creat mai devreme. Urmează biții de versiune, apoi biți aleatori, biții de variantă și încă biți aleatori. O parte din spațiul aleator poate ține un contor, care păstrează ordinea ID-urilor când mai multe sunt create în aceeași milisecundă.

Pentru că timpul vine primul, dacă sortezi ID-urile v7 ca text, cu aceeași capitalizare, ele se ordonează după momentul creării, până la milisecundă. Asta funcționează pentru că cifrele hexazecimale au lățime fixă, iar timpul se află în primele caractere.

Timpul este și vizibil. Oricine citește un UUID v7 poate vedea aproximativ când a fost creat. Poți verifica singur cu câmpul Inspectare din Generatorul UUID, care transformă primii 48 de biți înapoi într-o dată și oră.

De ce v7 se potrivește indexurilor din baze de date

Un index dintr-o bază de date este de obicei un B-tree, o structură ținută în ordine sortată după cheie. Când cheia este aleatorie, ca la v4, fiecare rând nou ajunge într-un loc aleator din index. Baza de date trebuie atunci să scrie în multe părți diferite ale indexului, ceea ce înseamnă mai multe divizări de pagini și mai multe ratări ale cache-ului. Pe un tabel mare, munca asta se adună.

O cheie v7 este mai mare decât aproape toate cheile deja din index, pentru că partea de timp crește. Rândurile noi se adaugă aproape de capătul indexului, la fel ca la un număr care se incrementează automat. Paginile recente rămân în memorie, iar scrierile rămân ordonate. Diferența se simte cel mai mult în tabelele mari care cresc tot timpul și abia se observă într-unul mic.

Cum alegi între v4 și v7

  • Chei primare din baze de date sau orice tabel care crește în timp: v7. Indexul rămâne ordonat.
  • Jurnale, evenimente sau mesaje pe care le sortezi des după timp: v7, pentru că ID-ul însuși poartă ordinea.
  • ID-uri publice unde momentul creării trebuie să rămână privat: v4. Un ID v7 arată când a fost făcut.
  • Multe dispozitive cu ceasuri nesigure: atât v4, cât și v7 rămân unice, pentru că biții aleatori fac treaba asta. Doar ordinea de sortare a v7 depinde de ceasuri corecte.

Ambele versiuni sunt standard, dar bibliotecile mai vechi pot cunoaște doar v4. RFC 4122 a descris versiunile de la 1 la 5 mulți ani. RFC 9562 a fost publicat în mai 2024, înlocuiește RFC 4122 și definește versiunile 6, 7 și 8. Verifică dacă versiunea bibliotecii tale acceptă v7 înainte să te bazezi pe ea.

Stocarea UUID-urilor

Un UUID scris ca text ocupă 36 de caractere. Cei 16 octeți ai săi pot fi stocați în formă binară, care ocupă mult mai puțin spațiu. Multe baze de date au un tip UUID nativ sau o coloană binară de 16 octeți pentru asta, iar comparația este mai rapidă decât cea pe text.

Alege un format și păstrează-l. Majuscule, minuscule, cratime și acolade înseamnă același UUID pentru un om, dar o bază de date sau o comparație de șiruri poate să le trateze ca valori diferite. Opțiunile generatorului pentru majuscule, fără cratime și cu acolade există pentru sisteme care cer aceste forme.

Nu folosi niciodată un UUID ca secret

Un UUID este un identificator, nu o parolă, un token de sesiune sau o cheie de acces. A fost construit să fie unic, nu să fie imposibil de ghicit. Un UUID v7 poartă și momentul creării. Iar identificatorii ajung lipiți în linkuri, jurnale, e-mailuri și capturi de ecran, unde oricine îi vede îi poate refolosi.

Controlul accesului ține de server. Cineva care cunoaște un ID nu ar trebui să primească automat voie să vadă sau să modifice înregistrarea pe care o numește. Pentru parole, fraze de acces sau token-uri, folosește un generator făcut pentru secrete. Generatorul de parole creează parole aleatorii sau fraze din cuvinte direct pe dispozitivul tău, cu aleatoriu sigur, și îți estimează puterea. Pentru context despre de ce contează lungimea și aleatoriul, citește parole puternice și entropie.

Cum folosești instrumentul

  1. Alege versiunea 4 pentru ID-uri aleatorii, sau versiunea 7 pentru ID-uri care se sortează după timp.
  2. Setează numărul, de la 1 la 500 deodată.
  3. Bifează majuscule, fără cratime sau acolade dacă codul tău cere o anumită formă.
  4. Copiază-le pe toate sau descarcă lista ca fișier .txt.
  5. Lipește orice UUID în câmpul Inspectare ca să citești versiunea, varianta și, pentru v7, timpul încorporat.

Răspunsuri rapide

Este unic un UUID v4? În practică, da. Cei 122 de biți aleatori fac o repetare atât de puțin probabilă încât nu trebuie să verifici una.

Ar trebui să folosesc v7 pentru tot? Nu întotdeauna. Folosește v7 pentru chei de bază de date și orice se sortează după timp. Folosește v4 când momentul creării trebuie să rămână ascuns.

Pot folosi un UUID ca parolă? Nu. Este un identificator. Pentru orice trebuie să rămână secret, folosește un generator de parole.

Trimite instrumentul ID-urile undeva? Nu. ID-urile sunt create și afișate în browserul tău și nu sunt trimise către un server.

Tradus din Original în engleză cu ajutorul AI.

Comentarii

    Încă nu sunt comentarii. Fii primul.

    Evaluarea ta (opțional)

    E-mailul tău nu este afișat și nu este păstrat niciodată.

    Copertă pentru Open Data for AGI - Why Public, Free, and Open Datasets MatterOpen Data for AGI - Why Public, Free, and Open Datasets Matter

    De ce seturile de date publice, gratuite și deschise vor modela inteligența artificială generală la fel de mult ca algoritmii și puterea de calcul.

    $4.99Cumpără de pe GumroadÎn engleză