Co je UUID vlastně zač
UUID, zkratka pro Universally Unique Identifier (univerzálně jedinečný identifikátor), je 128bitová hodnota používaná k označení něčeho, aniž byste se museli nikoho ptát o svolení. Můžete se setkat i s názvem GUID, tedy Globally Unique Identifier, což je prostě jméno, které stejné myšlence dala Microsoft ve Windows a světě .NET. Oba pojmy popisují ve valné většině případů, na kterých záleží, stejné 128bitové číslo. Když tedy kolega řekne GUID a vy řeknete UUID, mluvíte téměř vždy o naprosto stejné věci.
Těch 128 bitů se běžně zapisuje jako 32 hexadecimálních číslic rozdělených pomlčkami do pěti skupin ve vzoru 8-4-4-12. Typická hodnota vypadá takto: 123e4567-e89b-12d3-a456-426614174000. Pomlčky samy o sobě nenesou žádný význam; existují čistě proto, aby si člověk mohl hodnotu přečíst, aniž by ztratil místo, kde skončil. Každý znak je hexadecimální číslice od 0 do f, a proto UUID působí hustěji než běžné číslo, i když je to pod povrchem jen jedno velmi velké celé číslo.

Verze a proč vítězí v4
Standard definuje několik verzí a liší se v tom, jak jsou bity vyplněny. Verze 1 je založená na čase: propojuje aktuální časové razítko s MAC adresou sítě daného stroje. Díky tomu jsou hodnoty v1 řaditelné podle času vzniku, ale zároveň prozrazují informace o tom, kde a přibližně kdy vznikly, což není vždy žádoucí. Verze 3 a 5 jsou založené na jménu, hashují jmenný prostor plus název, takže stejný vstup vždy dá stejný identifikátor.
Verze 4 jde úplně jinou cestou. Je téměř čistě náhodná. Ze 128 bitů je šest vyhrazeno k označení verze a varianty, takže zbývá 122 bitů vyplněných náhodnými daty. Žádné časové razítko, žádná MAC adresa, žádný jmenný prostor, jen šum. Přesně proto většina generátorů, včetně tohoto, vytváří ve výchozím nastavení v4. Neprozrazuje nic o zařízení ani o okamžiku vzniku a nepotřebuje žádnou koordinaci mezi stranami, které ho vytvářejí. Nástroj na této stránce běží celý ve vašem prohlížeči, takže náhodné hodnoty nikdy neopustí váš počítač.
Jak nepravděpodobná je skutečně kolize
Rozumnou obavou je, že dvě náhodná UUID mohou být jednou identická. Se 122 náhodnými bity je prostor možných hodnot v4 roven 2 na 122, což je zhruba 5,3 následováno 36 nulami. Aby to bylo lidsky pochopitelné: museli byste generovat miliardy UUID každou vteřinu po mnoho desetiletí, než by se pravděpodobnost jediné duplicity vyšplhala na cokoliv měřitelného. Samotný standard popisuje šanci na kolizi jako natolik blízkou nule, že je zanedbatelná. V praxi týmy považují v4 za jedinečné a jdou dál, a mají pravdu.

Kde po ně vývojáři sahají
Protože jedinečnost nepotřebuje žádnou centrální autoritu, UUID vynikají tam, kde je koordinace drahá nebo nemožná. Přirozeně se hodí jako primární klíče databází, zejména když do nich zapisuje více služeb a nemůžete se zastavit a zeptat sdíleného čítače na další číslo. V distribuovaných systémech mohou dva uzly na opačných koncích planety vytvořit identifikátor ve stejném okamžiku, aniž by se kdy srazily. Napájejí i idempotenční klíče API, kde klient připojí UUID k požadavku, aby server mohl bezpečně ignorovat duplicitu, pokud síť požadavek zopakuje. Relační tokeny, názvy souborů, ID událostí a klíče zpráv se všechny spoléhají na stejnou vlastnost.
UUID versus automaticky se zvyšující ID
Klasickou alternativou je automaticky se zvyšující celé číslo: 1, 2, 3 a tak dále. Sekvenční ID jsou kompaktní, přirozeně se řadí a snadno se čtou, ale mají reálné nevýhody. Prozrazují, kolik záznamů existuje, a umožňují cizím lidem hádat sousední hodnoty, a nutí každý zápis projít jediným čítačem, což se stává úzkým hrdlem, když databázi škálujete horizontálně nebo slučujete data z mnoha zdrojů. UUID tyto problémy řeší tím, že umožní kterékoli straně vygenerovat klíč nezávisle a neprozrazují nic o objemu ani pořadí. Cenou je velikost a o něco menší lokalita v indexech. U systémů, které škálují do šířky nebo musí skrývat své vnitřnosti, se tato cena obvykle vyplatí. Tento a podobné nástroje můžete prozkoumat v naší kolekci všech generátorů, nebo si prohlédněte širší sadu vývojářských nástrojů pro související stavební prvky.
Často kladené otázky
Je GUID totéž co UUID?
Pro běžné účely ano. GUID je název, který Microsoft dal stejnému 128bitovému identifikátoru. Jediný skutečný rozdíl je pořadí bajtů v surové binární podobě na některých systémech Windows; v textové podobě jsou identické a zaměnitelné.
Kterou verzi UUID tento nástroj generuje?
Generuje verzi 4, náhodnou variantu. Ze 128 jejích bitů je 122 vyplněno náhodnými daty, což činí každou hodnotu extrémně nepravděpodobnou k opakování a znamená, že nenese žádné časové razítko ani informace o zařízení.
Můžou být dvě UUID někdy stejná?
Teoreticky pravděpodobnost není přesně nulová, ale s přibližně 5,3krát 10 na 36 možnými hodnotami v4 je natolik malá, že se považuje za zanedbatelnou. Museli byste jich vygenerovat astronomické množství, než by se kolize stala pravděpodobnou.
Proč používat UUID místo automaticky se zvyšujícího čísla?
UUID mohou být vytvořena nezávisle kteroukoli službou bez sdíleného čítače, neprozrazují počet záznamů ani pořadí a usnadňují bezbolestné slučování dat z mnoha zdrojů. Automaticky se zvyšující ID jsou menší, ale ve velkém měřítku se stávají úzkým hrdlem a prozrazují informace.
Generují se UUID na serveru?
Ne. Tento nástroj běží celý ve vašem prohlížeči, takže náhodné hodnoty se vytvářejí lokálně a nikam se neodesílají. Díky tomu je bezpečné ho používat pro klíče a tokeny, které chcete udržet v soukromí.
Co znamená vzor s pomlčkami?
Rozdělení 8-4-4-4-12 je jen konvence pro lepší čitelnost. Pomlčky nenesou žádná data; rozdělují 32 hexadecimálních číslic na části, aby lidé mohli hodnoty snáze procházet a porovnávat.
