Generovať UUID (v1, v4, v5, v7)
- Dashboard
- Dokumentácia
- API
Prečo používať UUID?
UUID (Universally Unique Identifier) sú unikátne identifikátory používané na garantovanie unikátnosti naprieč odlišnými systémami a databázami bez nutnosti centrálnej koordinácie. Sú bežne používané v distribuovaných systémoch a webových aplikáciách na generovanie unikátnych identifikátorov zdrojov.
Podporované UUID verzie
Tento nástroj podporuje nasledujúce UUID verzie:
- Verzia 1: založená na timestampe a MAC adrese.
- Verzia 4: generovaná náhodne (najpoužívanejšia).
- Verzia 5: založená na SHA-1 otisku namespace a názvu (deterministická: rovnaká dvojica namespace + meno vždy produkuje rovnaké UUID).
- Verzia 7: zoradená časovo, odporúčaná pre primárne kľúče moderných databáz (lexikografické zoradenie = chronologické zoradenie).
UUID v5: namespace a meno
Na generovanie UUID v5 musíte zvoliť štandardný namespace a poskytnúť meno:
- DNS: na použitie, keď je meno doménové meno (napríklad
cdrn.fr). - URL: na použitie, keď je meno URL (napríklad
https://cdrn.fr/). - OID: na použitie, keď je meno identifikátor objektu ISO.
- X500: na použitie, keď je meno rozlišovacie meno X.500.
Keďže je generovanie deterministické, UUID v5 je obzvlášť vhodné na produkciu reprodukovateľných identifikátorov zo stabilných dát.
Ako generovať UUID
Na úvodnej stránke môžete generovať UUID výberom požadovanej verzie v rozbaľovacom menu a kliknutím na tlačidlo generovania. Pre verziu 5 vyplňte navyše namespace a meno.
Akonáhle je UUID vygenerované, objaví sa na zelenom riadku výsledku indikujúcom, že bolo úspešne vygenerované. Ak dôjde k chybe, červený riadok zobrazí zodpovedajúcu chybovú správu.
Príklady kódu na použitie generovaných UUID
Generované UUID môžete použiť vo vašich aplikáciách priamym integrovaním do vášho kódu. Tu je príklad v PHP:
<?php
use Ramsey\Uuid\Uuid;
// Generovat UUID v4 (nahodne)
$uuidV4 = Uuid::uuid4();
// Generovat UUID v5 (deterministicke z namespace a mena)
$uuidV5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'cdrn.fr');
// Generovat UUID v7 (casovo zoradene)
$uuidV7 = Uuid::uuid7();
echo "UUID v4: " . $uuidV4->toString() . PHP_EOL;
echo "UUID v5: " . $uuidV5->toString() . PHP_EOL;
echo "UUID v7: " . $uuidV7->toString() . PHP_EOL;
?>
Validovať a analyzovať UUID
Existujúce UUID môžete tiež validovať a analyzovať na určenie verzie a validity. Tu je príklad kódu v PHP:
<?php
use Ramsey\Uuid\Uuid;
// Validovat UUID
$uuidString = '123e4567-e89b-12d3-a456-426614174000';
if (Uuid::isValid($uuidString)) {
$uuid = Uuid::fromString($uuidString);
echo "Validne UUID verzie: " . $uuid->getFields()->getVersion();
} else {
echo "Nevalidne UUID";
}
?>
Často kladené otázky
Aký rozdiel medzi UUID v1, v4, v5 a v7?
v1 kombinuje timestamp a MAC adresu počítača, čo môže odhaliť citlivé informácie. v4 je čisto náhodná (122 bitov náhody), je to najpoužívanejšia verzia. v5 je deterministická: rovnaká dvojica namespace + meno produkuje vždy rovnaké UUID vďaka SHA-1 hashu. v7 integruje millisekundový timestamp na začiatok identifikátora, čo ho robí chronologicky zoradeným a ideálnym pre primárne kľúče.
Aká je pravdepodobnosť kolízie UUID v4?
UUID v4 disponuje 122 náhodnými bitmi, čiže približne 5,3 × 10^36 možnými hodnotami. Na dosiahnutie 50% pravdepodobnosti kolízie (narodeninový paradox) by bolo potrebné vygenerovať približne 2,7 × 10^18 UUID. V praxi je na štandardnej aplikácii pravdepodobnosť kolízie zanedbateľná. To umožňuje generovať identifikátory na strane klienta bez koordinácie s centrálnym serverom.
Prečo preferovať UUID v7 pre primárny kľúč databázy?
UUID v4 vložené do B-tree indexu spôsobuje silnú fragmentáciu: každé vloženie padá na náhodnú pozíciu, čo degraduje výkon a využitie cache. UUID v7 začína millisekundovým timestampom, takže sa nové riadky vždy vkladajú na koniec indexu. Vkladací výkon sa potom blíži BIGSERIAL, pričom zachováva výhody univerzálneho identifikátora.
Na čo slúžia DNS, URL, OID a X500 namespaces UUID v5?
Tieto namespaces sú preddefinované UUID v RFC 4122, ktoré fungujú ako kontextový prefix pre deterministické generovanie. DNS sa používa s doménovým menom, URL s úplným URL, OID s ISO identifikátorom objektu, X500 s LDAP rozlišovacím menom. Môžete tiež definovať vlastný privátny namespace: UUID v4 vygenerované raz pre vašu aplikáciu, znovupoužité ako deterministický koreň pre všetky vaše v5 identifikátory.
UUID alebo auto-increment pre databázové identifikátory?
Auto-increment zostáva veľmi efektívny pre monolitické databázy a ochotne odhaľuje zápisovú sekvenciu, čo môže byť nežiaduce na strane verejného API. UUID sa lepšie hodia pre distribuované architektúry, generovanie na strane klienta, fúzie databáz a verejné vystavovanie opakných identifikátorov. Ideálny kompromis v 2026: UUID v7 ako primárny kľúč, ktorý kombinuje univerzalitu, rozumnú opaknosť a dobré výkony indexu.
Prechádzajú generované UUID tretím serverom?
Generovanie prebieha v prostredí cdrn.fr bez volania externej služby. Pre čisto náhodné (v4) alebo časové (v7) verzie nie je vstupne vyžadovaná žiadna citlivá informácia. Pre v5 slúžia namespace a meno, ktoré poskytnete, iba na lokálny SHA-1 výpočet. Žiadny generovaný identifikátor nie je logovaný, nástroj môžete použiť na produkciu UUID určených na dôverné kontexty.
Ukážka požiadavky
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":"..."}'
Vstupná schéma
| Pole | Typ | Povinné | Predvolené |
|---|---|---|---|
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 | – | – |
Koncové body
GET https://cdrn.fr/api/v1/tools- vypíše všetky dostupné nástrojeGET https://cdrn.fr/api/v1/tools/uuid-generator- získa schému tohto nástrojaPOST https://cdrn.fr/api/v1/tools/uuid-generator/execute- spustí tento nástroj s JSON payloadom