Preskočiť na obsah

Efektívny generátor CUID pre jedinečné identifikátory v systémoch

Generujte kolízne odolné jedinečné identifikátory (CUID) pre distribuované systémy, databázy a webové aplikácie. Vytvárajte škálovateľné, triediteľné ID okamžite.

Generátor CUID

Rýchlo a jednoducho vygenerujte ID odolné voči kolíziám.

Kliknutím na „Vygenerovať nový CUID“ vytvoríte identifikátor.
Kalkulačka načítavania...
📚

Dokumentácia

Čo je CUID?

CUID (jedinečný identifikátor odolný voči kolíziám) je krátky reťazec písmen a číslic používaný na označenie záznamu, súboru alebo udalosti tak, aby žiadne dve položky nemali rovnaký názov. Tento nástroj generuje CUID2, aktuálnu verziu formátu, pomocou knižnice @paralleldrive/cuid2. Každý identifikátor má 25 znakov, obsahuje iba malé písmená a číslice a vytvára sa úplne v prehliadači — nič sa neposiela na server.

Ako používať tento generátor CUID

  1. Kliknutím na Generate New CUID vytvoríte identifikátor.
  2. Kliknutím na Copy to Clipboard ho skopírujete.
  3. Vložte identifikátor do databázy, názvu súboru alebo aplikácie.
  4. Ďalším kliknutím na tlačidlo generovania vytvoríte iný identifikátor. Kolízie medzi samostatnými hodnotami CUID2 sú mimoriadne nepravdepodobné, hoci z matematického hľadiska nie sú nemožné.
  5. Kliknutím na Reset vymažete výsledok.

Vygenerovaný identifikátor sa ukladá aj do URL stránky, takže odkaz na výsledok možno zdieľať alebo uložiť medzi záložky.

Štruktúra a vzorec CUID2

CUID2 sa vytvára takto:

1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2

Hašovacia funkcia kombinuje štyri súkromné vstupy: aktuálny čas, počítadlo pre danú reláciu, odtlačok hostiteľského počítača a náhodnú entropiu. Spracuje ich algoritmom SHA3-512, výsledok prevedie do číselnej sústavy so základom 36 (číslice 0–9 a písmená a-z) a potom ponechá 24 týchto znakov. Náhodné úvodné písmeno doplní hotový identifikátor na 25 znakov, čo je dĺžka nastavená pre tento nástroj.

Samostatne má význam iba prvý znak: náhodné písmeno umiestnené na začiatku, aby každý identifikátor začínal písmenom, nie číslicou. Mnohé systémy, napríklad názvy tabuliek a stĺpcov SQL, vyžadujú, aby identifikátory začínali písmenom, takže CUID2 možno takmer kdekoľvek bezpečne použiť ako názov. Každý znak za prvým písmenom je súčasťou jedného súvislého, nepriehľadného tela hašu — nemá samostatné časti.

Keďže haš funguje iba jedným smerom, zo získaného identifikátora nemožno spätne získať žiadny z jeho vstupov. CUID2 neobsahuje obnoviteľnú časovú pečiatku, počítadlo ani odtlačok. Ide o zámerné rozhodnutie v prospech ochrany súkromia a bezpečnosti: samotný identifikátor nemôže odhaliť, kedy ani kde bol vytvorený.

Vyriešený príklad

Generovanie identifikátora pomocou tohto nástroja môže vytvoriť napríklad:

1vcpuhcj51eomj1o31dnlqopu0
2

Tu v predstavuje náhodné úvodné písmeno a cpuhcj51eomj1o31dnlqopu0 (24 znakov) je telo hašu. Obe časti vyzerajú odlišne iba preto, že prvý znak je vždy písmeno — telo hašu môže obsahovať kombináciu písmen a číslic.

Prečo systémy používajú CUID2

  • Nevyžaduje koordináciu. Každý počítač môže vytvoriť platný identifikátor samostatne, bez žiadosti centrálnemu serveru alebo databáze o ďalšiu hodnotu.
  • Odolnosť voči kolíziám. Kombinácia času, počítadla, odtlačku hostiteľa a náhodnej entropie spôsobuje, že je mimoriadne nepravdepodobné, aby dva počítače vytvorili rovnaký identifikátor, dokonca aj pri generovaní mnohých identifikátorov za sekundu.
  • Vhodné pre URL. CUID2 používa iba malé písmená a číslice, takže ho pri použití vo webovej adrese nikdy netreba kódovať.
  • Rýchle a súkromné generovanie. Keďže tento nástroj spúšťa generátor v prehliadači, identifikátory sa vytvárajú okamžite a nikdy neopúšťajú zariadenie.

Identifikátory CUID2 nemožno zoradiť podľa času vytvorenia. Na rozdiel od automaticky zvyšovaného čísla v databáze alebo staršieho formátu CUID (verzia 1) CUID2 ukrýva časovú pečiatku v haši namiesto toho, aby ju uchovával priamo. Aplikácie, ktoré potrebujú zoradiť záznamy podľa poradia vytvorenia, by mali spolu s identifikátorom ukladať samostatný stĺpec s časovou pečiatkou.

CUID2 verzus UUID a automaticky zvyšované identifikátory

VlastnosťCUID2UUID v4Automatické zvyšovanie
Dĺžka25 znakov36 znakov (s pomlčkami)Mení sa (zvyčajne krátke číslo)
Množina znakovMalé písmená a čísliceŠestnástkové číslice a pomlčkyČíslice
Vyžaduje centrálnu koordináciuNieNieÁno (databázová sekvencia)
Zoraditeľné podľa času vytvoreniaNieNieÁno
Vhodné pre URL bez kódovaniaÁnoÁnoÁno

CUID2 a UUID v4 riešia rovnaký problém: generovanie identifikátorov bez centrálnej koordinácie. CUID2 je kratší a používa menšiu množinu znakov, vďaka čomu sa ľahšie číta a vkladá do URL. UUID je vo webovej adrese tiež bezpečný, pretože pomlčka je v URL nevyhradený znak, ale je o 11 znakov dlhší.

Bežné použitia

  • Primárne kľúče v distribuovaných databázach, v ktorých viaceré servery nezávisle vkladajú riadky
  • Identifikátory požiadaviek alebo sledovania používané na sledovanie jednej akcie naprieč viacerými mikroslužbami
  • Názvy súborov pri nahrávaní, aby sa dva súbory nikdy navzájom neprepísali
  • Identifikátory relácií alebo tokenov pre webové aplikácie
  • Identifikátory správ vo frontoch, ako sú Kafka alebo RabbitMQ

Stručná história

Pôvodný formát CUID vydal Eric Elliott v roku 2012 ako alternatívu k UUID pre distribuované aplikácie. CUID2, ktorý vydal ten istý projekt Paralleldrive, prepracoval formát okolo kryptografického hašu a odstránil obnoviteľnú časovú pečiatku a počítadlo, ktoré pôvodná verzia odhaľovala. Tento nástroj generuje iba identifikátory CUID2.

Najčastejšie otázky

Aký je rozdiel medzi CUID (v1) a CUID2? CUID v1 uchovával v identifikátore viditeľnú časovú pečiatku a počítadlo, vďaka čomu bolo možné identifikátory zoradiť, no zároveň odhaľoval, kedy a koľko identifikátorov bolo vytvorených. CUID2 nahrádza tieto viditeľné polia jednosmerným hašom, takže z identifikátora nemožno spätne prečítať žiadne informácie.

Dajú sa CUID z tohto nástroja zoradiť podľa času vytvorenia? Nie. CUID2 nemá obnoviteľnú časovú pečiatku, takže identifikátory nemožno zoradiť podľa času ich vytvorenia iba na základe reťazca.

Aká je dĺžka vygenerovaného identifikátora a možno ju zmeniť? Tento nástroj vždy generuje identifikátory s dĺžkou 25 znakov. Nástroj neposkytuje možnosť vyžiadať si inú dĺžku.

Môžu dva rôzne počítače vytvoriť rovnaký CUID2 v rovnakom čase? Teoreticky je to možné, v praxi však mimoriadne nepravdepodobné. Každý identifikátor kombinuje odtlačok špecifický pre hostiteľa s náhodnou entropiou, takže je veľmi nepravdepodobné, aby nezávislé počítače niekedy vytvorili rovnaký haš.

Posiela tento nástroj údaje na server? Nie. Identifikátor vytvára JavaScript spustený v prehliadači pomocou lokálnych systémových hodín a náhodných údajov poskytovaných prehliadačom. Nič sa neprenáša.

Môžem použiť CUID2 ako primárny kľúč databázy? Áno. Identifikátory CUID2 dobre fungujú ako primárne kľúče v distribuovaných databázach, pretože ich môže vytvoriť ktorýkoľvek uzol bez kontroly centrálnej sekvencie. Prirodzene sa nezoraďujú podľa času vloženia, takže aplikácia, ktorá toto poradie potrebuje, by mala uchovávať samostatný stĺpec created_at.