UUID în limbaje și baze de date
Variante gata făcute: copiază codul direct sau deschide exemplul în generator și modifică-l după nevoie.
const id = crypto.randomUUID();
// 3b241101-e2bb-4255-8caf-4136c566a962
import uuid
uuid.uuid4()
uuid.uuid7() # Python 3.14+
CREATE TABLE comenzi (
id uuid PRIMARY KEY DEFAULT uuidv7(),
creat_la timestamptz DEFAULT now()
);
CREATE TABLE comenzi (
id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID(), 1))
);
SELECT BIN_TO_UUID(id, 1) FROM comenzi;
Cum folosești generatorul de UUID
- Alege versiunea: v4 (aleator) sau v7 (ordonat după timp).
- Alege câte să genereze, de la 1 la 100.
- Bifează după nevoie majuscule, fără cratime sau cu acolade, apoi copiază lista. Valorile se generează în browser; nu se trimite nimic către server.
Formatul UUID
Un UUID are 128 de biți, scriși ca 32 de cifre hexazecimale în grupuri de 8-4-4-4-12. Prima cifră din al treilea grup este versiunea.
v4: 3f2a9c4e-8b1d-4e7a-9c2f-6d5b8a1e0f43
v7: 019a3b5c-7e21-7d4f-8a6b-2c9e1f0d3a57
v4 are 122 de biți aleatori; șansa a două valori identice este neglijabilă. v7, definit în RFC 9562 (2024), începe cu un timestamp Unix în milisecunde, urmat de biți aleatori. De aceea UUID-urile v7 se sortează în ordinea creării.
De ce v7 pentru chei primare
Indexurile bazelor de date (de exemplu B-tree în MySQL InnoDB și PostgreSQL) lucrează mai bine când valorile noi vin la sfârșit. Valorile v4 sunt împrăștiate și produc fragmentare; v7 se adaugă mereu la coadă, ca un număr auto-increment, dar poate fi generat oriunde, fără să întrebi baza de date. Dezavantaj: v7 dezvăluie momentul creării.
// JavaScript (browser și Node.js): doar v4
crypto.randomUUID();
# Python
import uuid
uuid.uuid4()
uuid.uuid7() # de la Python 3.14
-- PostgreSQL
SELECT gen_random_uuid(); -- v4
SELECT uuidv7(); -- de la PostgreSQL 18
-- MySQL: UUID() dă versiunea 1; stochează compact în BINARY(16)
SELECT UUID_TO_BIN(UUID());
PHP nu are o funcție UUID în nucleu; se folosesc biblioteci ca ramsey/uuid sau symfony/uid, care au și v7. Vezi și Învață MySQL și Învață Python.
Întrebări frecvente
Pot fi ghicite UUID-urile?
v4 generat cu un generator criptografic, ca aici, este practic imposibil de ghicit. Nu le folosi totuși ca singură protecție pentru date private.
Ce înseamnă GUID?
Este numele folosit de Microsoft pentru același lucru. Formatul e identic; uneori apare între acolade.