Generátor UUID v7

Generujte hodnoty UUID v7 online: časovo zoraditeľné UUID so 48-bitovou milisekundovou časovou pečiatkou a 74 náhodnými bitmi.

Formát
Vygenerované ID
Pripravené. Generujte hodnoty UUID v7 priamo vo vašom prehliadači.

Ako sa tento identifikátor tvorí

Formát
48-bitová časová pečiatka Unix v milisekundách, bity verzie 7, bity variantu RFC a náhodná výplň.
Entropia
74 náhodných bitov v tejto implementácii; nepoužíva sa žiadne monotónne počítadlo.
Čas
Áno. Prvých 48 bitov kóduje čas vytvorenia, takže identifikátory sa dajú zoradiť podľa času naprieč rôznymi milisekundami.
Riziko kolízie
V rámci jednej milisekundy závisí riziko kolízie od 74 náhodných bitov; pri extrémne vysokom objeme v rovnakej milisekunde by sa mala použiť koordinovaná služba.
Príklad
01a044bc-5e07-7a04-baf1-cb3e50a2faab

Vaše ID sa generujú lokálne pomocou bezpečnej náhodnosti prehliadača. Do služby BroBroGo sa nič neodosiela.

Často kladené otázky

Prečo zvoliť UUID v7 namiesto UUID v4?

UUID v7 si zachováva štandardný tvar UUID, ale dá sa zoradiť podľa času, čo pomáha udržiavať logy, databázové indexy a toky udalostí v chronologickom poradí.

Skrýva UUID v7 čas vytvorenia?

Nie. Časová pečiatka je priamou súčasťou identifikátora. Ak potrebujete nepriehľadný identifikátor bez časových údajov, použite UUID v4 alebo NanoID.

Čo je UUID v7 a prečo vznikol

UUID v7 je identifikátor, ktorý kombinuje dva pôvodne protichodné požiadavky – chronologické zotriedenie a neuhádnuteľnosť. Každý vygenerovaný reťazec má dĺžku 36 znakov a začína 48‑bitovou časovou pečiatkou v Unix milisekundách, po ktorej nasleduje náhodná zložka. Výsledkom je identifikátor, ktorý je možné zoradiť podľa času vzniku, a teda rieši problém indexovej lokalizácie, ktorý trápi najmä UUID verzie 4 (úplne náhodné UUID).

Formát UUID v7 je súčasťou štandardu RFC 9562, ktorý definuje časovo zoradené UUID. Celková veľkosť je 128 bitov, textová reprezentácia zaberá 36 znakov. Prvých 48 bitov tvorí Unix timestamp v milisekundách, zvyšných 80 bitov je náhodných. Takáto konštrukcia zaručuje, že dve UUID v7 vygenerované v rôznych milisekundách budú mať rôzny začiatok podľa toho, ktoré vzniklo skôr. Identifikátory vzniknuté v tej istej milisekunde už nemusia byť v presnom poradí – nástroj negarantuje striktné usporiadanie v rámci jednej milisekundy. Tento detail je dôležitý pre systémy, ktoré vyžadujú absolútnu linearitu času.

Nástroj na generovanie UUID v7 na tejto stránke vytvorí zoznam identifikátorov na základe vami zadaného počtu (1 až 100) a ďalších zobrazovacích preferencií. Identifikátory sú vygenerované lokálne v prehliadači, pričom sa používa kryptograficky silná náhodnosť prehliadača – žiadne údaje nie sú odoslané na server BroBroGo. Výstup je priamo pripravený na kopírovanie jednotlivo alebo hromadne.

Ako UUID v7 funguje – štruktúra identifikátora

Každé UUID v7 je 36‑znakový reťazec v štandardnom hexadecimálnom tvare. Časová časť zaberá prvých 12 hexadecimálnych znakov (48 bitov). Náhodná časť zaberá zvyšných 20 hexadecimálnych znakov (80 bitov). Ak sú povolené spojovníky (predvolené nastavenie), reťazec je rozdelený do piatich skupín podľa bežnej konvencie UUID: 8–4–4–4–12.

Príklad UUID v7 s povolenými spojovníkmi:

018f3a7e-5b2c-7a41-9e3f-1a2b3c4d5e6f

Bez spojovníkov by ten istý identifikátor vyzeral ako:

018f3a7e5b2c7a419e3f1a2b3c4d5e6f

Všimnite si, že prvých pár znakov (018f3a7e) predstavuje časovú pečiatku. Vďaka tomu je pri abecednom zoraďovaní reťazcov poradie rovnaké ako poradie podľa času vzniku – aspoň pre identifikátory z rôznych milisekúnd. Pre identifikátory z tej istej milisekundy už poradie závisí od náhodnej zložky.

Formát umožňuje prepínať medzi malými a veľkými písmenami (veľké písmená sú niekedy preferované pri vizuálnom odlíšení alebo pri integrácii s určitými databázami). Rovnako je možné vypnúť spojovníky, čo skracuje reťazec na 32 znakov a môže zjednodušiť spracovanie v niektorých systémoch (napríklad pri ukladaní do stĺpcov typu char(32) bez spojovníkov).

Vlastnosť Hodnota
Celková dĺžka so spojovníkmi 36 znakov
Celková dĺžka bez spojovníkov 32 znakov
Veľkosť časovej pečiatky 48 bitov (12 hex znakov)
Veľkosť náhodnej zložky 80 bitov (20 hex znakov)
Typ časovej pečiatky Unix milisekundy
Zaručené poradie Iba pre rôzne milisekundy
Generovanie Lokálne v prehliadači

Porovnanie UUID v7 s UUID v4 a inými formátmi

Najčastejšie používaným identifikátorom v súčasnosti je UUID verzie 4 (UUID v4). Je úplne náhodný – všetkých 128 bitov vyplnených náhodne. To znamená, že pri vkladaní do databázového indexu (napríklad B‑stromu) spôsobuje náhodné rozloženie, čo vedie k fragmentácii indexu a zníženiu výkonu pri zápise. UUID v7 tento problém rieši tým, že prvých 48 bitov je časová pečiatka, a teda nové identifikátory sú vložené „vedľa seba“ v indexe.

Vlastnosť UUID v4 UUID v7 ULID
Časová zložka Nie Áno (48 bitov, ms) Áno (48 bitov, ms)
Náhodná zložka 128 bitov 80 bitov 80 bitov
Textová dĺžka 36 znakov 36 znakov 26 znakov
Znaková sada Hexadecimálna Hexadecimálna Base32
Poradie podľa času Nie Áno (v rôznych ms) Áno (v rôznych ms)
Štandard RFC 4122 / RFC 9562 RFC 9562 Neoficiálny

ULID je podobný koncept – tiež kombinuje čas a náhodu, ale používa 26‑znakovú reprezentáciu v Base32, ktorá je kratšia. ULID však nie je formalizovaný v RFC a negarantuje spätnú kompatibilitu s existujúcimi parsermi UUID. UUID v7 zostáva plne kompatibilný so všetkými nástrojmi, ktoré rozumejú štandardnému 36‑znakovému UUID formátu.

NanoID je znova iný prístup – používa väčšiu znakovú sadu a kratšie identifikátory, ale nemá časovú zložku, takže nie je časovo zoraditeľný. Pre systémy vyžadujúce chronologické zoradenie je preto UUID v7 vhodnejšia voľba.

Použitie nástroja – vstupy, výstupy a správanie

Rozhranie nástroja je navrhnuté tak, aby poskytovalo okamžitú odozvu pri každej zmene parametrov. Hlavné vstupy:

  • Počet identifikátorov – číslo od 1 do 100. Po každej zmene sa zoznam okamžite prepíše.
  • Prepínač veľkých písmen – zapnutím sa všetky hexadecimálne znaky (a–f) zmenia na veľké (A–F).
  • Prepínač spojovníkov – vypnutím sa odstránia spojovníky z výstupu.

Výstupy:

  • Zoznam vygenerovaných UUID v7 identifikátorov.
  • Počet vygenerovaných identifikátorov („Počet ID“).
  • Stavový text:
    • „Ready.“ (východiskový stav, idle)
    • „Generated.“ (po vygenerovaní)
    • „Copied all!“ (po hromadnom skopírovaní)

Kliknutie na jednotlivý identifikátor skopíruje jeho text do schránky. Tlačidlo na hromadné kopírovanie skopíruje všetky identifikátory naraz, oddelené podľa konvencie (zvyčajne nový riadok).

Každá zmena vstupov (počet, veľké písmená, spojovníky) okamžite a automaticky pregeneruje všetky identifikátory. Nie je potrebné stláčať žiadne tlačidlo „Generovať“. Toto správanie je kľúčové – používateľ vidí vždy aktuálny výstup zodpovedajúci nastaveniam.

Hraničné prípady a časté omyly

Rovnaká milisekunda nerovná sa rovnaké poradie

Najčastejší omyl týkajúci sa UUID v7 je presvedčenie, že identifikátory sú striktne zoradené podľa času vzniku. V skutočnosti sú zoradené len tie, ktoré vznikli v rôznych milisekundách. Ak vygenerujete 50 UUID v7 v rámci jednej milisekundy, ich vzájomné poradie je náhodné, pretože ďalších 80 bitov je náhodných. Niektorí vývojári preto pri implementácii paralelných systémov predpokladajú, že poradie v rámci milisekundy je dané, čo nie je pravda.

Počet identifikátorov mimo rozsahu

Nástroj akceptuje počty len od 1 do 100 vrátane. Hodnota 0 nie je povolená – vygenerovanie nula identifikátorov nedáva zmysel. Viac ako 100 identifikátorov by zbytočne zaťažovalo prehliadač a používateľa informačným šumom.

Veľké písmená nie sú ekvivalentné

Hoci UUID sú case‑insensitive pri parsovaní („a“ a „A“ predstavujú to isté hexadecimálne číslo), databázové systémy a parsery môžu mať predvolené nastavenie na malé písmená. Pri hromadnom importe do databáz typu PostgreSQL alebo MySQL na kódovaní písmen nezáleží, no niektoré nástroje na porovnávanie reťazcov (napríklad grep) rozlišujú veľkosť písmen. Pre konzistenciu v rámci projektu je vhodné zvoliť jeden formát a dodržiavať ho.

Spojovníky alebo bez nich – vplyv na úložisko

Odstránenie spojovníkov skracuje reťazec z 36 na 32 znakov, čo šetrí 4 byty na uloženie. Pri obrovských tabuľkách (miliardy riadkov) to môže znamenať úsporu desiatok gigabajtov. Na druhej strane, bez spojovníkov je identifikátor horšie čitateľný pre človeka.

Pre koho je nástroj určený a praktické prípady použitia

Vývojári distribuovaných systémov

V mikroservisovej architektúre často vzniká potreba vygenerovať unikátny identifikátor na rôznych uzloch bez centralizovaného generátora. UUID v7 poskytuje dostatok náhodnosti (80 bitov), aby bola kolízia prakticky vylúčená, a zároveň umožňuje zoradiť záznamy podľa času vzniku – napríklad pri auditných logoch, kde potrebujete rýchlo nájsť záznamy z určitého časového okna.

Databázoví administrátori

Pri migrácii z UUID v4 na UUID v7 sa výrazne znižuje fragmentácia B‑stromových indexov. V praxi to znamená rýchlejšie vkladanie a efektívnejšie využitie cache. Ak databáza používa clustering podľa primárneho kľúča, prechod na UUID v7 môže zlepšiť výkon dotazov, ktoré vyberajú rozsahy podľa času.

Bezpečnostne orientovaní inžinieri

Na rozdiel od sekvenčných ID (auto‑increment, SERIAL), UUID v7 nie je uhádnuteľné. Náhodná časť má 80 bitov, čo pri dnešných výpočtových kapacitách znemožňuje akýkoľvek brute‑force útok. To je dôležité pri verejne vystavených identifikátoroch (napríklad v URL odkazoch), kde by sekvenčné ID umožnilo „prechádzať“ záznamy.

Event sourcing a messaging systémy

V systémoch založených na udalostiach (event sourcing) sa identifikátory často používajú na určenie poradia udalostí. UUID v7 poskytuje približné poradie, ktoré je postačujúce pre väčšinu prípadov – udalosti z rôznych sekúnd sú v správnom poradí, udalosti z tej istej sekundy môžu byť usporiadané dodatočne podľa iných kritérií.

Súkromie a nezávislosť od servera

Generovanie prebieha výhradne v prehliadači. Žiadny identifikátor nie je odoslaný na server BroBroGo. Používateľ si môže byť istý, že citlivé identifikátory (napríklad pre interné systémy) nezdieľa s treťou stranou. To je dôležité najmä v prostrediach s prísnymi bezpečnostnými politikami.

FAQ

Otázka: Môžem použiť UUID v7 ako primárny kľúč v PostgreSQL?
Odpoveď: Áno. PostgreSQL podporuje UUID ako dátový typ od verzie 8.3. Pri použití s B‑stromovým indexom je UUID v7 výrazne efektívnejšie ako UUID v4, pretože nové identifikátory sú vkladané blízko seba, čo znižuje fragmentáciu indexu.

Otázka: Je UUID v7 bezpečnejšie ako UUID v4?
Odpoveď: Z hľadiska náhodnosti obe verzie poskytujú dostatok bitov (UUID v4 má 122 náhodných bitov, UUID v7 má 80 náhodných bitov). Obe sú prakticky neuhádnuteľné. Rozdiel je v schopnosti zoradenia podľa času, nie v kryptografickej sile.

Otázka: Čo sa stane, keď vygenerujem 1000 identifikátorov?
Odpoveď: Nástroj podporuje maximálne 100 identifikátorov na jedno generovanie. Pre väčšie množstvá odporúčame vygenerovať dávky po 100 a skopírovať ich postupne alebo použiť programové riešenie s knižnicou pre UUID v7.

Otázka: Môžem UUID v7 použiť v URL bez spojovníkov?
Odpoveď: Áno. Vypnutím spojovníkov vznikne 32‑znakový hexadecimálny reťazec, ktorý je URL‑safe (obsahuje len znaky 0–9 a a–f, prípadne A–F). Je však kratší, a teda menej čitateľný pre človeka.

Otázka: Ako vzniká prvá časť UUID v7? Je to aktuálny čas v milisekundách?
Odpoveď: Áno. Pri generovaní sa použije aktuálny Unix timestamp v milisekundách získaný z prehliadača (z Date.now()). Táto hodnota sa zapíše do prvých 48 bitov identifikátora. Pri rýchlom generovaní viacerých ID v rámci jednej milisekundy majú rovnaký timestamp.

Otázka: Prečo nie je poradie v rámci jednej milisekundy zaručené?
Odpoveď: Pretože ďalších 80 bitov je vyplnených náhodne. Na rozdiel od sekvenčného čítača (ktorý by umožnil poradie, ale zničil neuhádnuteľnosť) náhodná zložka zabezpečuje, že identifikátory nie sú predvídateľné. Je to zámerný kompromis medzi poradím a bezpečnosťou.