Identificatorii unici universali (UUID) au fost piatra de temelie a sistemelor distribuite de zeci de ani, oferind o modalitate fiabilă de a genera chei unice fără coordonare centralizată. În timp ce versiunea 4 UUID (care se bazează exclusiv pe numere aleatoare) este, fără îndoială, varianta cea mai faimoasă și implementată pe scară largă, are limitări inerente atunci când este utilizată ca cheie primară în sistemele de gestionare a bazelor de date relaționale (RDBMS). Aleatoritatea este excelentă pentru imprevizibilitate, dar teribil pentru indexarea bazelor de date. Când inserați un UUID aleatoriu într-un index B-tree, acesta provoacă divizări masive de pagini și fragmentare a indexului, ceea ce duce la o performanță de scriere degradată în timp. Aici intră în joc UUID-urile bazate pe timp, în special versiunile 1, 6 și 7, oferind o alternativă structurată care respectă atât unicitatea, cât și ordinea cronologică.
Versiunea UUID 1 a fost încercarea inițială de a combina unicitatea cu timpul. Acesta generează un identificator folosind marcajul de timp curent, o secvență de ceas și adresa MAC a nodului. Includerea adresei MAC a garantat unicitatea spațială pe diferite mașini, în timp ce marcajul de timp a garantat unicitatea temporală. Cu toate acestea, UUID v1 are un defect critic pentru indexarea bazei de date: marcajul de timp este structurat cu cei mai semnificativi biți reprezentând cea mai mică granularitate de timp. În termeni simpli, pe măsură ce timpul trece, începutul șirului UUID se schimbă rapid și imprevizibil, distrugând orice potențial de sortare secvențială. În plus, expunerea adresei MAC a ridicat probleme semnificative de confidențialitate și securitate, ceea ce a determinat mulți dezvoltatori să abandoneze complet v1.
Pentru a rezolva aceste probleme flagrante, comunitatea de ingineri a introdus UUID versiunea 6 și versiunea 7. UUID v6 este în esență un UUID v1 reorganizat. Preia componentele marcajului de timp ale v1 și le rearanjează astfel încât cei mai semnificativi biți să reprezinte cea mai mare granularitate de timp (ani, luni, zile), coborând la fracțiuni de secundă. Această rearanjare simplă asigură că valorile UUID v6 sunt sortabile lexicografic în funcție de timp. Dacă generați un UUID v6 astăzi și altul mâine, UUID-ul de mâine va sorta după cel de azi, aliniindu-se perfect cu modul în care arborii B a bazei de date se așteaptă ca datele să fie inserate. Acest lucru elimină fragmentarea indexului asociată cu v4 și imposibilitatea de sortare a v1, rămânând în același timp compatibil cu sistemele care se așteaptă la structura tradițională UUID.
Versiunea UUID 7 duce această optimizare un pas mai departe și reprezintă standardul de aur modern pentru cheile primare ale bazei de date. În loc să se bazeze pe moștenirea epoca gregoriană folosită de v1 și v6, UUID v7 utilizează marcajul de timp standard Unix Epoch (milisecunde de la miezul nopții 1 ianuarie 1970 UTC). Acest marcaj temporal ocupă primii 48 de biți ai identificatorului. Biții rămași sunt umpluți cu date aleatoare criptografic puternice. Această abordare hibridă oferă tot ce este mai bun din ambele lumi: sortabilitatea robustă, secvențială necesară pentru inserările de baze de date de înaltă performanță, combinată cu securitatea și confidențialitatea generării aleatorii de date. Folosind generatorul nostru UUID 100% gratuit, privat în browser, puteți crea instantaneu acești identificatori moderni, fără a vă risca datele prin încărcări zero pe server.