Generátor UUID zdarma - Vytvořte V1 & V4 UUID okamžitě
Generujte jedinečné identifikátory okamžitě pomocí našeho bezplatného generátoru UUID. Vytvořte verzi 1 (časově založenou) a verzi 4 (náhodnou) UUID pro databáze, API a distribuované systémy.
Generátor UUID
Dokumentace
Generátor UUID
Generátor UUID je nástroj, který vytváří univerzálně jedinečný identifikátor neboli UUID: 128bitový kód používaný k označení části dat tak, aby žádná jiná položka kdekoli pravděpodobně nesdílela stejný štítek. Tato stránka generuje UUID verze 1 (založená na čase) a verze 4 (náhodná).
Co je UUID?
UUID je číslo o délce 128 bitů zapsané jako 32 šestnáctkových číslic (znaky 0-9 a a–f). Dělí se na pět skupin oddělených pomlčkami ve tvaru 8-4-4-4-12, tedy celkem 36 znaků. Příklad UUID vypadá takto:
1550e8400-e29b-41d4-a716-446655440000
2UUID jsou definována standardem organizace Internet Engineering Task Force. První verze tohoto standardu, RFC 4122, vyšla v červenec 2005. V květen 2024 ji nahradil dokument RFC 9562, který ruší platnost RFC 4122 a přidává nové verze. Software používá UUID k identifikaci řádků databáze, souborů a dalších záznamů, aniž by potřeboval ústřední autoritu, která by čísla přidělovala. Prostor možných UUID je tak velký, že dva počítače mohou generovat UUID nezávisle, i ve stejném okamžiku, a téměř nikdy nevytvoří totéž.
Formát a struktura UUID
128 bitů UUID je rozděleno do pojmenovaných polí. Každé pole zabírá pevný počet bitů:
time_low– 32 bitůtime_mid– 16 bitůtime_hi_and_version– 16 bitůclock_seq_hi_and_reserved– 8 bitůclock_seq_low– 8 bitůnode– 48 bitů
Čtyři bity v poli time_hi_and_version označují číslo verze UUID a dva bity v poli clock_seq_hi_and_reserved označují variantu, která softwaru říká, jak číst zbývající pole.
Jak pomocí tohoto nástroje vygenerovat UUID
- Vyberte verzi: verzi 1 (založenou na čase) nebo verzi 4 (náhodnou).
- Zvolte „Generovat“. Nástroj okamžitě vytvoří nové UUID o délce 128 bitů.
- Zvolte „Kopírovat“, čímž zkopírujete výsledek do schránky.
- Vložte UUID do kódu, databáze nebo konfiguračního souboru.
Verze 4 se hodí pro většinu úloh, například pro klíče v databázích, protože neobsahuje žádnou informaci o tom, kdy ani kde vznikla. Verze 1 zaznamenává čas vzniku, což se může hodit, pokud chcete vědět, kdy byl záznam vytvořen.
UUID verze 1 vs. verze 4
Verze 1 kóduje aktuální časové razítko spolu s pořadím hodin a hodnotou uzlu. Původní standard umožňoval, aby hodnotou uzlu byla skutečná síťová adresa (MAC) počítače. Novější standard uvádí, že adresy MAC představují riziko pro soukromí a neměly by se používat, a místo nich povoluje náhodnou hodnotu uzlu. Tento nástroj pro uzel vždy používá náhodné bity, takže jeho UUID verze 1 nikdy nečtou ani neprozrazují skutečnou adresu MAC. Jak standard pro náhodný uzel vyžaduje, nástroj nastavuje nejméně významný bit prvního oktetu uzlu (bit multicastu) na 1, což označuje uzel jako náhodný, nikoli jako skutečnou síťovou adresu. Hodiny nástroje čtou čas v milisekundách, proto jsou nejmenší kroky časového razítka vždy nulové.
UUID verze 1 se jako text neřadí podle času vzniku. Nejrychleji se měnící část časového razítka, time_low, je na začátku, takže pozdější UUID se může seřadit před dřívější. RFC 9562 přidává verzi 6, přeuspořádanou podobu verze 1 pro lepší řazení v databázích, a uvádí, že nové systémy by pokud možno měly používat verzi 7 namísto verzí 1 a 6.
Verze 4 se skládá z náhodných bitů, přičemž několik bitů je pevně nastaveno k označení verze a varianty. Neobsahuje časové razítko ani údaje specifické pro počítač, takže neprozrazuje nic o tom, kdy ani kde byla vytvořena. Podle času vytvoření ji nelze seřadit.
Standard obsahuje i další verze, tento nástroj je však negeneruje. Verze 2 je vyhrazena pro DCE Security. Verze 3 a 5 vznikají zahašováním jmenného prostoru a jména algoritmem MD5 nebo SHA-1, takže stejný vstup vždy dává stejné UUID. Verze 6, 7 a 8 přidal dokument RFC 9562.
Jak vypočítat UUID (vzorec)
Verze 4:
- Vygenerujte 128 náhodných bitů. Nástroj je získává z rozhraní Web Crypto API (
crypto.getRandomValues), tedy z kryptograficky bezpečného zdroje; teprve když toto rozhraní chybí, přejde naMath.random. - Nastavte čtyři bity verze, tedy první hexadecimální číslici třetí skupiny, na
0100(hexadecimálně4). - Nastavte dva nejvyšší bity čtvrté skupiny na
10(první hexadecimální číslice této skupiny pak bude8,9,anebob).
Náhodných je jen 122 ze 128 bitů, protože 6 bitů je pevně dáno kroky 2 a 3. Vychází tak 2^122, tedy zhruba 5,3 × 10^36, možných UUID verze 4.
Verze 1:
- Vezměte aktuální čas jako počet intervalů o délce 100 nanosekund od 15. října 1582, tedy od data reformy gregoriánského kalendáře. Tím se naplní pole
time_low,time_mida část poletime_hi_and_version. - Vygenerujte náhodné pořadí hodin o délce 14 bitů, které slouží k zamezení duplicit, pokud se systémové hodiny nastaví zpět.
- Vygenerujte náhodnou hodnotu uzlu o délce 48 bitů a poté nastavte bit multicastu (nejméně významný bit jejího prvního bajtu) na 1. Pořadí hodin a uzel pocházejí ze stejného losování Web Crypto jako u verze 4, se stejnou záložní variantou
Math.random. - Nastavte bity verze na
0001a bity varianty na10.
Napříč všemi verzemi UUID obsahuje celý prostor o velikosti 128 bitů 2^128, tedy zhruba 3,4 × 10^38, možných hodnot.
Praktický příklad
Vezměme ukázkové UUID z předchozího textu: 550e8400-e29b-41d4-a716-446655440000.
- Třetí skupina,
41d4: první číslice je4, která označuje UUID verze 4. - Čtvrtá skupina,
a716: první číslice,a(binárně1010), začíná požadovanými bity varianty10. - Zbývající hexadecimální číslice tvoří náhodná data.
Program, který toto UUID čte, zkontroluje číslici 4 a vzor 10, aby potvrdil formát, a zbytek pak bere jako neprůhlednou hodnotu.
Běžné použití UUID
- Primární klíče v databázích, zejména když více serverů vytváří záznamy současně bez vzájemné koordinace.
- Identifikátory souborů, událostí a prostředků v distribuovaných systémech, jako jsou mikroslužby.
- ID zařízení ve velkých sítích, kde každé zařízení může vygenerovat vlastní ID offline.
UUID by se neměla používat jako hesla, tajné klíče relací ani klíče API. Standard uvádí, že implementace nesmějí používat UUID jako bezpečnostní oprávnění, tedy ID, které uděluje přístup už tím, že je známé.
Hlavním kompromisem je velikost: UUID zabírá 16 bajtů úložiště, zatímco jednoduchý celočíselný čítač se spokojí se 4 nebo 8 bajty. Náhodná UUID, například verze 4, mají také špatnou lokalitu v databázovém indexu: nové hodnoty se ukládají na náhodná místa indexu, což může zpomalit vkládání.
Alternativy k UUID
Automaticky se zvyšující celá čísla jsou menší a jednodušší, ale nefungují dobře, jakmile musí ID nezávisle přidělovat více než jeden server. Problém s řazením mělo vyřešit několik schémat ID uspořádaných podle času a RFC 9562 je uvádí jako pozadí, včetně Snowflake od Twitteru a ULID. ULID má 128 bitů stejně jako UUID a je lexikograficky řaditelný, což znamená, že se jako text řadí podle pořadí vzniku. U nových systémů nabízí stejnou výhodu přímo ve standardu UUID verze 7.
Historie standardu UUID
UUID se poprvé použila v systému Apollo Network Computing System, poté v Distributed Computing Environment organizace Open Software Foundation a nakonec v Microsoft Windows. Organizace Internet Engineering Task Force vydala RFC 4122 v červenec 2005 a nahradila jej dokumentem RFC 9562 v květen 2024.
Často kladené otázky
K čemu slouží generátor UUID? Vytváří jedinečné identifikátory pro databáze, distribuované systémy a ID zařízení, takže si žádné dva záznamy nemusejí sdílet stejný identifikátor.
Jaký je rozdíl mezi UUID v1 a v4? Verze 1 kóduje časové razítko. Verze 4 je až na bity verze a varianty náhodná a žádné časové razítko neobsahuje. Výstup verze 1 z tohoto nástroje používá náhodnou hodnotu uzlu místo skutečné adresy MAC, takže neprozrazuje informace identifikující počítač.
Prozrazuje verze 1 mou adresu MAC? S tímto nástrojem ne. Původní standard umožňoval, aby pole uzlu v UUID verze 1 obsahovalo skutečnou adresu MAC, ale tento generátor toto pole vždy vyplní náhodnými bity, přičemž nastaví bit multicastu, aby je označil jako náhodné.
Je zaručeno, že UUID jsou jedinečná? Žádné schéma identifikátorů nemůže zaručit absolutní jedinečnost, ale UUID verze 4 má zhruba 5,3 × 10^36 možných náhodných hodnot. Pravděpodobnost duplicity je tak malá, že ji lze pro téměř jakékoli praktické použití ignorovat, pokud jsou náhodná čísla kvalitní.
Mohu použít UUID jako primární klíč databáze? Ano. UUID se v distribuovaných systémech jako primární klíče osvědčují, protože je může vygenerovat kterýkoli uzel, aniž by se musel dotazovat ústředního serveru. Cenou je 16 bajtů úložiště na klíč a u náhodných verzí pomalejší vkládání do velmi velkých tabulek.
Je UUID totéž co GUID? Ano. RFC 9562 uvádí, že se UUID říká také GUID (Globally Unique IDentifiers), tedy název používaný na platformách Microsoftu.
Lze UUID verze 1 nebo verze 4 řadit podle času vzniku? Jako text ne. Verze 4 je náhodná a verze 1 dává nejrychleji se měnící část časového razítka na začátek. Pro ID, která se řadí podle pořadí vzniku, použijte UUID verze 7 nebo ULID.
Reference
- Internet Engineering Task Force. RFC 9562: Universally Unique IDentifiers (UUIDs). RFC 9562 — ruší platnost RFC 4122 (květen 2024); 122 náhodných bitů ve verzi 4; verze 6 a 7 a doporučení upřednostňovat verzi 7; adresy MAC by se neměly používat; UUID nesmějí sloužit jako bezpečnostní oprávnění; špatná lokalita v indexu u verze 4; historie Apollo NCS, OSF DCE a Microsoftu; GUID jako další název.
- Internet Engineering Task Force. RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace. RFC 4122 — vydáno v červenec 2005; časové razítko verze 1 počítá intervaly o délce 100 nanosekund od 15. října 1582.
- Projekt ULID. Universally Unique Lexicographically Sortable Identifier. specifikace ULID — kompatibilita s UUID v rozsahu 128 bitů a lexikografické řazení.