UUID má viacero verzií, každá s rôznymi vlastnosťami:
• v1: Založené na čase a ID uzla, usporiadané ale môže odhaliť informácie
• v3: Založené na názve a mennom priestore, používa MD5 hash
• v4: Úplne náhodne generované, najčastejšie používaná verzia
• v5: Založené na názve a mennom priestore, používa SHA-1 hash, bezpečnejšie ako v3
• v6: Vylepšená verzia v1, časová časť usporiadaná podľa big-endian, vhodnejšia na triedenie
• v7: Nová verzia založená na Unix časovej pečiatke, kombinuje časovosť a náhodnosť
Ako vybrať správnu verziu UUID
Vyberte najvhodnejšiu verziu podľa scenára použitia:
• Potrebujete bezpečnosť: Vyberte v4 (náhodné) alebo v5 (názvy založené na SHA-1)
• Potrebujete triedenie: Vyberte v6 alebo v7 (založené na čase a ľahko zoradené)
• Potrebujete deterministické: Vyberte v3 alebo v5 (rovnaký vstup vytvorí rovnaký výstup)
• Potrebujete výkon: Vyberte v1 (rýchle generovanie)
• Špeciálne hodnoty: NIL (všetky 0) alebo MAX (všetky F) pre hraničné prípady
Náhodnosť a deterministickosť
UUID v4 je úplne náhodné, vhodné pre väčšinu aplikácií. v3 a v5 sú deterministické, rovnaký názov a menný priestor vždy generuje rovnaké UUID, vhodné pre konzistentné mapovanie. v1, v6 a v7 obsahujú časové informácie, za určitých podmienok majú poradie.
v1, v6 a v7 obsahujú časové informácie, ale spracovávajú ich rôzne. v6 vylepšuje problémy s časovým triedením v1, v7 používa Unix časovú pečiatku pre jednoduchšiu časovosť. Ak potrebujete UUID zoradené podľa času generovania, v6 a v7 sú lepšou voľbou.
v1 môže odhaliť čas generovania a informácie o uzle (MAC adresa). v4 je úplne náhodné, najlepšia voľba pre scenáre citlivé na súkromie. v3 používa MD5 hash, menej bezpečné ako v5 s SHA-1. NIL a MAX sú pevné hodnoty, nemali by sa používať v bezpečnostných scenároch vyžadujúcich jedinečnosť.
UUID sa hlavne používa v scenároch vyžadujúcich globálne unikátne identifikátory: distribuované systémy, kľúče databáz, identifikátory relácií, názvy súborov, API tokeny atď. Výber správnej verzie môže optimalizovať výkon, bezpečnosť a organizáciu dát.