Generirati UUID (v1, v4, v5, v7)
- Nadzorna plošča
- Dokumentacija
- API
Zakaj uporabljati UUID?
UUID (Universally Unique Identifiers) so edinstveni identifikatorji, ki se uporabljajo za zagotavljanje edinstvenosti v različnih sistemih in bazah podatkov, ne da bi bilo potrebno centralno usklajevanje. Običajno se uporabljajo v porazdeljenih sistemih in spletnih aplikacijah za ustvarjanje edinstvenih identifikatorjev za vire.
Podprte različice UUID
To orodje podpira naslednje različice UUID:
- Različica 1: temelji na časovnem žigu in naslovu MAC.
- Različica 4: naključno ustvarjena (najpogosteje uporabljena).
- Različica 5: temelji na prstnem odtisu SHA-1 imenskega prostora in imena (deterministično: isti imenski prostor + ime par bo vedno ustvaril isti UUID).
- Različica 7: časovno urejeno, priporočljivo za sodobne primarne ključe baze podatkov (leksikografsko razvrščanje = kronološko razvrščanje).
UUID v5: imenski prostor in ime
Če želite ustvariti v5 UUID, morate izbrati standardni imenski prostor in podati ime:
- DNS: za uporabo, ko je ime ime domene (na primer
cdrn.fr). - URL: za uporabo, ko je ime URL (na primer
https://cdrn.fr/). - OID: Uporabite, ko je ime identifikator objekta ISO.
- X500: Uporabite, ko je ime razločno ime X.500.
Ker je generiranje deterministično, je UUID v5 posebej primeren za izdelavo ponovljivih identifikatorjev iz stabilnih podatkov.
Kako ustvariti UUID
Na domači strani lahko ustvarite UUID-je tako, da v spustnem meniju izberete želeno različico in kliknete gumb za ustvarjanje. Za različico 5 navedite tudi imenski prostor in ime.
Takoj ko je UUID ustvarjen, se bo pojavil v zeleni vrstici z rezultati, kar pomeni, da je bil ustvarjen uspešno. Če pride do napake, bo rdeča črta prikazala ustrezno sporočilo o napaki.
Primeri kode za uporabo ustvarjenih UUID-jev
Ustvarjene UUID-je lahko uporabite v svojih aplikacijah tako, da jih integrirate neposredno v kodo. Tukaj je primer v PHP:
toString() . PHP_EOL;
echo "UUID v5: ". $uuidV5->toString() . PHP_EOL;
echo "UUID v7: ". $uuidV7->toString() . PHP_EOL;
?>
Potrdite in analizirajte UUID-je
Prav tako lahko preverite in analizirate obstoječe UUID-je, da določite njihovo različico in veljavnost. Tukaj je primer kode v PHP:
getFields()->getVersion();
} drugače {
echo "Neveljaven UUID";
}
?>
Pogosta vprašanja
Kakšna je razlika med UUID v1, v4, v5 in v7?
v1 združuje časovni žig in naslov MAC naprave, kar lahko razkrije občutljive podatke. v4 je povsem naključna (122 naključnih bitov) in je najbolj uporabljena različica. v5 je determinističen: isti imenski prostor + imenski par vedno proizvede isti UUID zahvaljujoč zgoščevanju SHA-1. v7 vključuje časovni žig v milisekundah na začetku identifikatorja, zaradi česar je razvrščen kronološko in je idealen za primarne ključe.
Kakšna je verjetnost kolizije v4 UUID?
V4 UUID ima 122 naključnih bitov ali približno 5,3 × 10^36 možnih vrednosti. Da bi dosegli 50-odstotno verjetnost kolizije (paradoks rojstnega dne), bi bilo treba ustvariti približno 2,7 × 10^18 UUID. V praksi je pri standardni aplikaciji verjetnost kolizije zanemarljiva. To je tisto, kar omogoča generiranje identifikatorjev na strani odjemalca brez koordinacije s centralnim strežnikom.
Zakaj uporabljati UUID v7 za primarni ključ baze podatkov?
UUID v4, vstavljen v indeks B-drevesa, povzroči močno fragmentacijo: vsaka vstavitev pade na naključno mesto, kar poslabša zmogljivost in uporabo predpomnilnika. UUID v7 se začne s časovnim žigom v milisekundah, zato so nove vrstice vedno vstavljene na konec indeksa. Učinkovitost vstavljanja se nato približa zmogljivosti BIGSERIAL, hkrati pa ohranja prednosti univerzalnega identifikatorja.
Za kaj se uporabljajo imenski prostori DNS, URL, OID in X500 UUID v5?
Ti imenski prostori so UUID-ji, vnaprej določeni v RFC 4122, ki delujejo kot kontekstualna predpona za deterministično generiranje. DNS se uporablja z imenom domene, URL s polnim URL-jem, OID z identifikatorjem ISO objekta, X500 z razločevalnim imenom LDAP. Definirate lahko tudi svoj zasebni imenski prostor: v4 UUID, ustvarjen enkrat za vašo aplikacijo, ki se ponovno uporabi kot deterministični koren za vse vaše identifikatorje v5.
UUID ali samodejno povečevanje za osnovne identifikatorje?
Samodejno povečevanje ostaja zelo učinkovito za monolitne baze podatkov in takoj razkrije zaporedje pisanja, kar je lahko nezaželeno na strani javnega API-ja. UUID-ji so najprimernejši za porazdeljene arhitekture, generiranje na strani odjemalca, združevanje baz podatkov in javno izpostavljenost neprozornih identifikatorjev. Idealen kompromis v letu 2026: UUID v7 v primarnem ključu, ki združuje univerzalnost, primerno motnost in dobro zmogljivost indeksa.
Ali gredo ustvarjeni UUID-ji skozi strežnik tretje osebe?
Generiranje poteka v okolju cdrn.fr, brez klica zunanje storitve. Za povsem naključne (v4) ali časovne (v7) različice kot vnos niso potrebni občutljivi podatki. Za v5 se imenski prostor in ime, ki ju podate, uporabljata samo za lokalni izračun SHA-1. Ustvarjeni identifikatorji se ne beležijo, orodje lahko uporabite za izdelavo UUID-jev, namenjenih zaupnim kontekstom.
Primer zahteve
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":"..."}'
Vhodna shema
| Polje | Tip | Obvezno | Privzeto |
|---|---|---|---|
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 | – | – |
Končne točke
GET https://cdrn.fr/api/v1/tools- izpiše vsa razpoložljiva orodjaGET https://cdrn.fr/api/v1/tools/uuid-generator- pridobi shemo tega orodjaPOST https://cdrn.fr/api/v1/tools/uuid-generator/execute- izvede to orodje s JSON payloadom