Generuoti UUID (v1, v4, v5, v7)

generuoja jūsų UUID (Universally Unique Identifier) v1, v4, v5 (deterministinis) arba v7 (time-ordered) formate, atitinkant RFC 4122

Kodėl naudoti UUID?

UUID (universaliai unikalūs identifikatoriai) yra unikalūs identifikatoriai, naudojami siekiant užtikrinti unikalumą įvairiose sistemose ir duomenų bazėse, nereikalaujant centrinio koordinavimo. Jie dažniausiai naudojami paskirstytose sistemose ir žiniatinklio programose, siekiant sukurti unikalius išteklių identifikatorius.

Palaikomos UUID versijos

Šis įrankis palaiko šias UUID versijas:

  • 1 versija: pagrįsta laiko žyma ir MAC adresu.
  • 4 versija: atsitiktinai sugeneruota (dažniausiai naudojama).
  • 5 versija: pagrįsta vardų erdvės ir pavadinimo SHA-1 kontroliniu atspaudu (deterministinis: ta pati vardų erdvė ir vardų pora visada sukurs tą patį UUID).
  • 7 versija: laikina tvarka, rekomenduojama šiuolaikiniams pirminiams duomenų bazių raktams (leksikografinis rūšiavimas = chronologinis rūšiavimas).

UUID v5: vardų erdvė ir pavadinimas

Norėdami sugeneruoti v5 UUID, turite pasirinkti standartinę vardų erdvę ir pateikti pavadinimą:

  • DNS: naudoti, kai vardas yra domeno pavadinimas (pvz., cdrn.fr).
  • URL: naudoti, kai pavadinimas yra URL (pvz., https://cdrn.fr/).
  • OID: naudokite, kai pavadinimas yra ISO objekto identifikatorius.
  • X500: naudokite, kai pavadinimas yra X.500 skiriamasis pavadinimas.

Kadangi generavimas yra deterministinis, UUID v5 ypač tinka atkurti atkuriamus identifikatorius iš stabilių duomenų.

Kaip sukurti UUID

Pagrindiniame puslapyje galite sugeneruoti UUID išskleidžiamajame meniu pasirinkę norimą versiją ir spustelėję generavimo mygtuką. 5 versijoje taip pat pateikite vardų sritį ir pavadinimą.

Kai tik bus sugeneruotas UUID, jis bus rodomas žalioje rezultatų eilutėje, nurodant, kad jis buvo sėkmingai sugeneruotas. Jei įvyksta klaida, raudona linija bus rodomas atitinkamas klaidos pranešimas.

Sukurtų UUID naudojimo kodų pavyzdžiai

Sugeneruotus UUID galite naudoti savo programose, integruodami juos tiesiai į savo kodą. Čia yra PHP pavyzdys:


toString() . PHP_EOL;
echo "UUID v5:". $uuidV5->toString() . PHP_EOL;
echo "UUID v7:". $uuidV7->toString() . PHP_EOL;
?>

    

Patvirtinkite ir analizuokite UUID

Taip pat galite patvirtinti ir analizuoti esamus UUID, kad nustatytumėte jų versiją ir galiojimą. Čia yra PHP kodo pavyzdys:


getFields()->getVersion();
} dar {
    echo "Netinkamas UUID";
}
?>

    

Dažnai užduodami klausimai

Kuo skiriasi UUID v1, v4, v5 ir v7?

v1 sujungia laiko žymą ir įrenginio MAC adresą, kuris gali atskleisti neskelbtiną informaciją. v4 yra visiškai atsitiktinis (122 atsitiktiniai bitai), tai dažniausiai naudojama versija. v5 yra deterministinis: ta pati vardų erdvė ir vardų pora visada sukuria tą patį UUID dėl SHA-1 maišos. v7 apima laiko žymą milisekundėmis identifikatoriaus pradžioje, todėl jis rūšiuojamas chronologiškai ir idealiai tinka pirminiams raktams.

Kokia yra v4 UUID susidūrimo tikimybė?

V4 UUID turi 122 atsitiktinius bitus arba galimas maždaug 5,3 × 10^36 reikšmes. Norint pasiekti 50 % susidūrimo tikimybę (gimtadienio paradoksas), reikėtų sugeneruoti maždaug 2,7 × 10^18 UUID. Praktikoje, naudojant standartinę programą, susidūrimo tikimybė yra nereikšminga. Tai leidžia generuoti kliento identifikatorius nederinant su centriniu serveriu.

Kodėl naudoti UUID v7 pagrindiniam duomenų bazės raktui?

Į B medžio indeksą įterptas UUID v4 sukelia stiprų suskaidymą: kiekvienas įterpimas patenka į atsitiktinę vietą, o tai sumažina našumą ir talpyklos naudojimą. UUID v7 prasideda laiko žyma milisekundėmis, todėl naujos eilutės visada įterpiamos indekso pabaigoje. Tada įterpimo našumas priartėja prie BIGSERIAL, išlaikant universalaus identifikatoriaus pranašumus.

Kam naudojamos UUID v5 DNS, URL, OID ir X500 vardų erdvės?

Šios vardų erdvės yra UUID, iš anksto apibrėžti RFC 4122, kurie veikia kaip deterministinio generavimo kontekstinis priešdėlis. DNS naudojamas su domeno pavadinimu, URL su visu URL, OID su objekto ISO identifikatoriumi, X500 su LDAP skiriamuoju pavadinimu. Taip pat galite apibrėžti savo privačią vardų erdvę: vieną kartą jūsų programai sugeneruotą v4 UUID, pakartotinai naudojamą kaip deterministinę visų jūsų v5 identifikatorių šaknį.

UUID arba automatinis bazinių identifikatorių padidinimas?

Automatinis padidinimas išlieka labai efektyvus monolitinėms duomenų bazėms ir lengvai atskleidžia rašymo seką, o tai gali būti nepageidautina viešoje API pusėje. UUID geriausiai tinka paskirstytoms architektūroms, kliento pusės generavimui, duomenų bazių sujungimui ir nepermatomų identifikatorių viešam atskleidimui. Idealus kompromisas 2026 m.: UUID v7 pirminiame rakte, kuriame derinamas universalumas, pagrįstas neskaidrumas ir geras indekso veikimas.

Ar sugeneruoti UUID perduodami per trečiosios šalies serverį?

Generavimas atliekamas cdrn.fr aplinkoje, nekviečiant išorinės tarnybos. Grynai atsitiktinės (v4) arba laikinosios (v7) versijose neskelbtinos informacijos kaip įvesties nereikia. 5 versijos vardų sritis ir pavadinimas naudojami tik vietiniam SHA-1 skaičiavimui. Neregistruojami jokie sugeneruoti identifikatoriai, galite naudoti įrankį, kad sukurtumėte UUID, skirtus konfidencialiems kontekstams.

Užklausos pavyzdys

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":"..."}'

Įvesties schema

Laukas Tipas Privalomas Numatytasis
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

Galiniai taškai

  • GET https://cdrn.fr/api/v1/tools - išvardija visus galimus įrankius
  • GET https://cdrn.fr/api/v1/tools/uuid-generator - gauna šio įrankio schemą
  • POST https://cdrn.fr/api/v1/tools/uuid-generator/execute - vykdo šį įrankį su JSON payload