Generirati UUID-ove (v1, v4, v5, v7)
- Nadzorna ploča
- Dokumentacija
- API
Zašto koristiti UUID-ove?
UUID (Universally Unique Identifiers) su jedinstveni identifikatori koji se koriste za osiguravanje jedinstvenosti u različitim sustavima i bazama podataka bez potrebe za središnjom koordinacijom. Obično se koriste u distribuiranim sustavima i web aplikacijama za generiranje jedinstvenih identifikatora za resurse.
Podržane verzije UUID-a
Ovaj alat podržava sljedeće verzije UUID-a:
- Verzija 1: na temelju vremenske oznake i MAC adrese.
- Verzija 4: nasumično generirana (najčešće korištena).
- Verzija 5: na temelju SHA-1 otiska prsta prostora imena i imena (deterministički: isti par prostora imena + imena uvijek će proizvesti isti UUID).
- Verzija 7: vremenski uređena, preporučuje se za primarne ključeve modernih baza podataka (leksikografsko sortiranje = kronološko sortiranje).
UUID v5: imenski prostor i ime
Da biste generirali v5 UUID, morate odabrati standardni imenski prostor i navesti naziv:
- DNS: koristiti kada je naziv naziv domene (na primjer
cdrn.fr). - URL: koristiti kada je naziv URL (na primjer
https://cdrn.fr/). - OID: Koristite kada je naziv identifikator ISO objekta.
- X500: Koristite kada je ime X.500 razlikovno ime.
Budući da je generiranje determinističko, UUID v5 posebno je prikladan za proizvodnju reproducibilnih identifikatora iz stabilnih podataka.
Kako generirati UUID-ove
Na početnoj stranici možete generirati UUID-ove odabirom željene verzije s padajućeg izbornika i klikom na gumb za generiranje. Za verziju 5 također navedite imenski prostor i naziv.
Čim se UUID generira, pojavit će se u zelenom retku rezultata što znači da je uspješno generiran. Ako se pojavi pogreška, crvena linija prikazat će odgovarajuću poruku o pogrešci.
Primjeri koda za korištenje generiranih UUID-ova
Generirane UUID-ove možete koristiti u svojim aplikacijama tako da ih izravno integrirate u svoj kod. Evo primjera u PHP-u:
<šifra>
toString() . PHP_EOL;
echo "UUID v5: ". $uuidV5->toString() . PHP_EOL;
echo "UUID v7: ". $uuidV7->toString() . PHP_EOL;
?>
Potvrdite i analizirajte UUID-ove
Također možete potvrditi i analizirati postojeće UUID-ove kako biste odredili njihovu verziju i valjanost. Evo primjera koda u PHP-u:
<šifra>
getFields()->getVersion();
} inače {
echo "Nevažeći UUID";
}
?>
Često postavljana pitanja
Koja je razlika između UUID v1, v4, v5 i v7?
v1 kombinira vremensku oznaku i MAC adresu stroja, što može otkriti osjetljive informacije. v4 je čisto slučajan (122 slučajna bita), to je najčešće korištena verzija. v5 je deterministički: isti prostor imena + par naziva uvijek proizvodi isti UUID zahvaljujući SHA-1 raspršivanju. v7 uključuje vremensku oznaku u milisekundama na početku identifikatora, što ga čini poredanim kronološki i idealnim za primarne ključeve.
Koja je vjerojatnost kolizije v4 UUID-a?
v4 UUID ima 122 nasumična bita ili približno 5,3 × 10^36 mogućih vrijednosti. Da bi se postigla 50% vjerojatnost sudara (paradoks rođendana), trebalo bi generirati približno 2,7 × 10^18 UUID. U praksi, na standardnoj aplikaciji, vjerojatnost kolizije je zanemariva. To je ono što omogućuje generiranje identifikatora na strani klijenta bez koordinacije sa središnjim poslužiteljem.
Zašto koristiti UUID v7 za primarni ključ baze podataka?
UUID v4 umetnut u indeks B-stabla uzrokuje snažnu fragmentaciju: svako umetanje pada na nasumično mjesto, što smanjuje performanse i korištenje predmemorije. UUID v7 počinje s vremenskom oznakom u milisekundama, tako da se novi redovi uvijek umeću na kraj indeksa. Izvedba umetanja tada se približava onoj BIGSERIAL, zadržavajući prednosti univerzalnog identifikatora.
Za što se koriste DNS, URL, OID i X500 imenski prostori UUID v5?
Ti su prostori imena UUID-ovi unaprijed definirani u RFC 4122 koji djeluju kao kontekstualni prefiks za determinističko generiranje. DNS se koristi s nazivom domene, URL s punim URL-om, OID s ISO identifikatorom objekta, X500 s LDAP razlikovnim imenom. Također možete definirati vlastiti privatni prostor imena: v4 UUID generiran jednom za vašu aplikaciju, ponovno korišten kao deterministički korijen za sve vaše v5 identifikatore.
UUID ili automatsko povećanje za osnovne identifikatore?
Automatsko povećanje ostaje vrlo učinkovito za monolitne baze podataka i lako otkriva redoslijed pisanja, što može biti nepoželjno na strani javnog API-ja. UUID-ovi su najprikladniji za distribuirane arhitekture, generiranje na strani klijenta, spajanje baza podataka i javno izlaganje neprozirnih identifikatora. Idealan kompromis u 2026.: UUID v7 u primarnom ključu, koji kombinira univerzalnost, razumnu neprozirnost i dobru izvedbu indeksa.
Prolaze li generirani UUID-ovi kroz poslužitelj treće strane?
Generacija se provodi u okruženju cdrn.fr, bez pozivanja vanjskog servisa. Za čisto nasumične (v4) ili vremenske (v7) verzije nisu potrebne osjetljive informacije kao unos. Za v5, imenski prostor i ime koje navedete koriste se samo za lokalni SHA-1 izračun. Generirani identifikatori se ne bilježe, možete koristiti alat za izradu UUID-ova namijenjenih povjerljivim kontekstima.
Primjer zahtjeva
curl -X POST https://cdrn.fr/api/v1/tools/uuid-generator/execute \
-H "Content-Type: application/json" \
-d '{"version":"uuid_version_1","quantity":3,"namespace":"namespace_dns","name":"..."}'
Ulazna shema
| Polje | Tip | Obavezno | Zadano |
|---|---|---|---|
version |
choice (uuid_version_1, uuid_version_4, uuid_version_5, uuid_version_7) | ✓ | – |
quantity |
integer | ✓ | 3 |
namespace |
choice (namespace_dns, namespace_url, namespace_oid, namespace_x500) | – | – |
name |
string | – | – |
Krajnje točke
GET https://cdrn.fr/api/v1/tools- ispisuje sve dostupne alateGET https://cdrn.fr/api/v1/tools/uuid-generator- dohvaća shemu ovog alataPOST https://cdrn.fr/api/v1/tools/uuid-generator/execute- izvršava ovaj alat s JSON payloadom