Generisanje UUID v4 identifikatora
Stranica uuid-generator stvara jedan ili više UUID v4 identifikatora — nasumične nizove od 36 znakova u standardnom obliku 8‑4‑4‑4‑12. Broj generisanih ID‑ova podešavate između 1 i 100, a možete birati hoće li biti prikazani velikim ili malim slovima, te s crticama ili bez njih. Svi ID‑ovi nastaju trenutno u vašem pregledniku, koristeći jaku preglednikovu slučajnost. Jedan klik kopira pojedinačni ID, a dugme Copy all kopira čitav skup.
Šta ovu stranicu čini drugačijom: UUID v4 koristi 122 bita slučajnosti bez ugrađene vremenske oznake. Svaka vrijednost je praktično nepredvidiva, a vjerovatnoća sudara (kolizije) je zanemariva. Za razliku od UUID v7 ili ULID‑a, v4 ID‑ovi se sortiraju proizvoljno — ne nose nikakvu vremensku informaciju, što fragmentira indekse baze podataka ako ih koristite kao primarni ključ. Stranica vam omogućava i prebacivanje između velikih i malih slova te uključivanje/isključivanje crtica, ali unutrašnja slučajnost i format ostaju nepromijenjeni. Podrazumijevani izlaz su mala slova s crticama. Promjena bilo koje opcije odmah regenerira cijeli skup.
Struktura UUID v4: 122 bita slučajnosti u 36 znakova
UUID v4 je definisan standardom RFC 4122. U 16 okteta (128 bita) smješteno je 122 bita slučajnosti; preostala 4 bita su rezervisana za verziju (verzija 4) i varijantu. Prikazuje se kao 32 heksadecimalne cifre (0–9, a–f) raspoređene u obrazac 8‑4‑4‑4‑12, ukupno 36 znakova uključujući 4 crtice. Kada isključite crtice, dobijate niz od 32 heksadecimalna znaka.
Broj mogućih UUID v4 vrijednosti iznosi 2^122 ≈ 5,3 × 10^36. To je dovoljno velik da je vjerovatnoća generisanja dva ista ID‑a u praksi zanemariva — prema poznatom „problemu rođendana”, potrebno bi bilo generisati oko 2^61 ≈ 2,3 × 10^18 primjeraka da bi vjerovatnoća sudara dosegla 50 %. Za svakodnevne potrebe (stotine ili hiljade ID‑ova) kolizija je praktično nemoguća.
Kako preglednik proizvodi slučajnost
Savremeni preglednici nude API crypto.getRandomValues() koji koristi kriptografski siguran generator pseudoslučajnih brojeva (CSPRNG). Ovaj generator crpi entropiju iz operativnog sistema (npr. /dev/urandom na Linuxu ili CryptGenRandom na Windowsu) i proizvodi nizove bitova koji su statistički nerazlučivi od istinski slučajnih. Sav rad se odvija lokalno na vašem računaru — ni jedan podatak ne napušta preglednik. To znači da alat radi i bez internetske veze (nakon što je stranica učitana) i da nema rizika od presretanja ID‑ova na putu do servera.
Utjecaj na performanse baza podataka
UUID v4 identifikatori su nestrpljivi (nesortirani) po svojoj prirodi. Kada se koriste kao primarni ključ u relacijskoj bazi podataka (npr. MySQL, PostgreSQL), svaki novi red unosi se na proizvoljnu lokaciju u indeksu. To dovodi do čestih page splitova (dijeljenje stranica indeksa) i fragmentacije, što usporava upite koji se oslanjaju na sekvencijalno skeniranje ili opseg pretrage.
Radi poređenja:
| Vrsta identifikatora | Izvor slučajnosti | Sortiranje | Utjecaj na indeks |
|---|---|---|---|
| UUID v4 | 122 bita slučajnosti | Proizvoljno | Visoka fragmentacija |
| UUID v7 | Vremenska oznaka + slučajnost | Hronološki | Niska fragmentacija |
| ULID | Vremenska oznaka + slučajnost | Hronološki | Niska fragmentacija |
| Sekvencijalni broj | 0 | Rastući | Minimalna fragmentacija |
Zato baze podataka preporučuju vremenski sortirane varijante (UUID v7, ULID) kad je ključ primarni i kad je brzina upisa kritična. UUID v4 je, s druge strane, idealan za situacije u kojima je nepredvidivost važnija od brzine upisa — na primjer, za sigurnosne tokene, sesijske identifikatore ili anonimizirane ključeve gdje vremenski redoslijed ne smije biti otkriven.
Opcije alata i kako ih koristiti
Alat nudi tri ulazne kontrole:
- Format — trenutno je izabran UUID v4, ali su dostupni i UUID v7, ULID i NanoID. Promjena formata mijenja i dostupne opcije (npr. za v7 i ULID neće biti togglea za velika slova). Ovaj članak pokriva samo UUID v4.
- Count — broj između 1 i 100 (uključivo). Polje prihvata samo numeričke vrijednosti unutar tog opsega.
- Uppercase — prekidač koji kad je uključen prikazuje ID‑ove velikim heksadecimalnim slovima (A–F). Podrazumijevano: isključeno (mala slova).
- Include hyphens — prekidač koji uključuje/isključuje crtice u obrascu 8‑4‑4‑4‑12. Podrazumijevano: uključeno.
Svaka promjena bilo koje kontrole trenutno ponovo generiše cijeli skup ID‑ova. Statusne poruke na dnu prikazuju: „Ready.” (početno stanje), „Generated.” (nakon generisanja) i „Copied all!” (nakon kopiranja svih).
Kopiranje
Klik na bilo koji pojedinačni ID kopira ga u međuspremnik. Dugme Copy all kopira sve prikazane ID‑ove odvojene novim redom. Funkcija kopiranja koristi Clipboard API, koji je podržan u svim modernim preglednicima.
Ko treba da koristi UUID v4 — i kada
UUID v4 je najbolji izbor kad god je nepredvidivost primarni zahtjev, a redoslijed nije bitan. Tipične primjene:
- Sigurnosni tokeni — npr. ID za resetovanje lozinke, autentifikacijski tokeni koji ne smiju biti pogađani.
- Sesijski identifikatori — jedinstveni ključevi za web sesije, gdje vremenski redoslijed ne smije otkriti starost sesije.
- Anonimizirani ključevi — u testnim bazama podataka gdje stvarni identiteti moraju biti zamijenjeni nasumičnim, neobrnutim vrijednostima.
- Eksterni identifikatori — javni ID‑ovi (npr. u URL‑ovima) koji ne smiju otkrivati redoslijed kreiranja ili veličinu skupa podataka.
Nasuprot tome, ako vam je potrebna vremenska sortiranost (npr. za primarni ključ u bazi s visokim upisnim opterećenjem), razmotrite UUID v7 ili ULID. Ako vam je potrebna kratkoća i čitljivost, NanoID može biti prikladniji.
Uobičajene greške i najbolje prakse
- Korištenje UUID v4 kao primarnog ključa u velikim tabelama — može dramatično usporiti upite zbog fragmentacije indeksa. Ako baš morate, razmotrite clustered index na drugom polju ili upotrijebite vremenski sortiranu varijantu.
- Pretpostavka da su UUID v4 uvijek jedinstveni — iako je vjerovatnoća kolizije zanemariva, nije nula. U sistemima s više generativnih čvorova (npr. distribuirane baze) potreban je mehanizam za detekciju duplikata.
- Miješanje velikih i malih slova — heksadecimalna cifra je neosjetljiva na veličinu slova u većini sistema (npr.
aiApredstavljaju istu vrijednost), ali kodovi koji zavise od tačnog niza (npr. URL‑ovi) mogu biti osjetljivi. Alat vam omogućava da se odlučite za jedan stil. - Generisanje previše ID‑ova odjednom — alat podržava do 100, što je obično dovoljno za batch operacije. Za hiljade ID‑ova bolje je koristiti skriptu na serveru.
Često postavljana pitanja
1. Kolika je vjerovatnoća da dobijem dva ista UUID v4? Vjerovatnoća je izuzetno mala. Da biste imali 50 % šanse za barem jedan sudar, potrebno je generisati oko 2,3 × 10^18 primjeraka (prema problemu rođendana za 122 bita). U praksi, za manje od milijardu ID‑ova vjerovatnoća je manja od 0,0000001 %.
2. Zašto se UUID v4 ne sortira hronološki? Zato što ne sadrži vremensku oznaku. Sva 122 bita su nasumična, tako da ID‑ovi nemaju nikakav ugrađeni redoslijed.
3. Mogu li generisati UUID v4 bez crtica? Da. Isključite prekidač Include hyphens i dobit ćete niz od 32 heksadecimalna znaka bez crtica. To je validan UUID v4, ali bez formatiranja.
4. Da li se ID‑ovi šalju na bilo koji server? Ne. Generisanje se odvija u potpunosti u vašem pregledniku (JavaScript, crypto.getRandomValues). Ni jedan podatak ne napušta vaš računar.
5. Mogu li kopirati samo jedan ID? Da. Kliknite na bilo koji pojedinačni ID i on će biti kopiran u međuspremnik.
6. Zašto bih koristio UUID v4 umjesto jednostavnog brojača? Brojač je predvidiv i otkriva redoslijed kreiranja. UUID v4 je nepredvidiv i ne otkriva nikakvu informaciju o vremenu nastanka ili količini podataka. To je ključno za sigurnosne tokene, anonimizaciju i javne identifikatore.