Siirry sisältöön

Tehokas CUID-tunnisteen luoja järjestelmien yksilöllisille tunnisteille

Luo törmäyksenkestäviä yksilöllisiä tunnisteita (CUID) hajautetuille järjestelmille, tietokannoille ja verkkosovelluksille. Luo skaalautuvia, järjestettäviä tunnuksia välittömästi.

CUID-generaattori

Luo nopeasti ja helposti törmäyksenkestävä tunniste.

Luo tunniste napsauttamalla ”Luo uusi CUID”.
Latauslaskuri...
📚

Dokumentaatio

Mikä on CUID?

CUID (törmäyksenkestävä yksilöivä tunniste) on lyhyt kirjaimista ja numeroista koostuva merkkijono, jolla tietue, tiedosto tai tapahtuma nimetään niin, ettei millään kahdella kohteella ole samaa nimeä. Tämä työkalu luo muotoa CUID2, joka on formaatin nykyinen versio, käyttäen @paralleldrive/cuid2-kirjastoa. Jokainen tunniste on 25 merkkiä pitkä, sisältää vain pieniä kirjaimia ja numeroita ja luodaan kokonaan selaimessa — mitään ei lähetetä palvelimelle.

CUID-generaattorin käyttö

  1. Luo tunniste napsauttamalla Generate New CUID.
  2. Kopioi se napsauttamalla Copy to Clipboard.
  3. Liitä tunniste tietokantaan, tiedostonimeen tai sovellukseen.
  4. Luo toinen tunniste napsauttamalla Generate uudelleen. Eri CUID2-arvojen törmäykset ovat erittäin epätodennäköisiä, vaikka eivät matemaattisesti mahdottomia.
  5. Tyhjennä tulos napsauttamalla Reset.

Luotu tunniste tallennetaan myös sivun URL-osoitteeseen, joten tulokseen johtavan linkin voi jakaa tai lisätä kirjanmerkkeihin.

CUID2-rakenne ja kaava

CUID2 muodostetaan seuraavasti:

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

Hajautusfunktio yhdistää neljä yksityistä syötettä: nykyisen ajan, istuntokohtaisen laskurin, isäntäkoneen sormenjäljen ja satunnaisen entropian. Se syöttää ne algoritmiin SHA3-512, muuntaa tuloksen 36-kantaiseen esitykseen (numerot 0–9 ja kirjaimet a–z) ja säilyttää tuloksesta 24 merkkiä. Satunnainen alkukirjain tekee valmiista tunnisteesta 25 merkin pituisen, kuten tämä työkalu on määritetty.

Vain ensimmäinen merkki on itsenäinen: alkuun sijoitettu satunnainen kirjain varmistaa, että jokainen tunniste alkaa kirjaimella eikä numerolla. Monet järjestelmät, kuten SQL-taulujen ja -sarakkeiden nimeämiskäytännöt, edellyttävät tunnisteen alkavan kirjaimella, joten CUID2 sopii nimeksi lähes kaikkialla. Jokainen ensimmäisen kirjaimen jälkeinen merkki kuuluu yhteen yhtenäiseen, läpinäkymättömään hajautusarvon runkoon — siinä ei ole erillisiä osia.

Koska hajautus toimii vain yhteen suuntaan, sen syötteitä ei voi palauttaa valmiista tunnisteesta. CUID2 ei sisällä palautettavissa olevaa aikaleimaa, laskuria tai sormenjälkeä. Tämä on tietoinen yksityisyys- ja tietoturvaratkaisu: pelkkä tunniste ei voi paljastaa, milloin tai missä se luotiin.

Laskuesimerkki

Tällä työkalulla luotu tunniste voi olla esimerkiksi:

1vcpuhcj51eomj1o31dnlqopu0
2

Tässä v on satunnainen alkukirjain ja cpuhcj51eomj1o31dnlqopu0 (24 merkkiä) on hajautusrunko. Osat näyttävät erilaisilta vain siksi, että ensimmäinen merkki on aina kirjain — hajautusrungossa voi olla sekä kirjaimia että numeroita.

Miksi järjestelmät käyttävät CUID2-tunnisteita

  • Koordinointia ei tarvita. Mikä tahansa kone voi luoda kelvollisen tunnisteen itsenäisesti pyytämättä seuraavaa arvoa keskuspalvelimelta tai tietokannalta.
  • Törmäyksenkestävyys. Ajan, laskurin, isäntäkoneen sormenjäljen ja satunnaisen entropian yhdistelmä tekee erittäin epätodennäköiseksi, että kaksi konetta tuottaa saman tunnisteen, vaikka tunnisteita luotaisiin useita sekunnissa.
  • Sopii URL-osoitteisiin. CUID2 käyttää vain pieniä kirjaimia ja numeroita, joten sitä ei tarvitse koodata, kun sitä käytetään verkko-osoitteessa.
  • Nopea ja yksityinen luonti. Koska tämä työkalu suorittaa generaattorin selaimessa, tunnisteet luodaan heti eivätkä ne poistu laitteesta.

CUID2-tunnisteita ei voi järjestää luontiajan mukaan. Toisin kuin tietokannan automaattisesti kasvava numero tai vanhempi CUID-muoto (versio 1), CUID2 piilottaa aikaleimansa hajautukseen sen sijaan, että tallentaisi sen näkyviin. Sovellusten, joiden on järjestettävä tietueet luontijärjestykseen, kannattaa tallentaa tunnisteen rinnalle erillinen aikaleimasarake.

CUID2-tunnisteet, UUID-tunnisteet ja automaattisesti kasvavat tunnisteet

OminaisuusCUID2UUID v4Automaattisesti kasvava
Pituus25 merkkiä36 merkkiä (yhdysmerkkien kanssa)Vaihtelee (yleensä lyhyt numero)
MerkkijoukkoPienet kirjaimet ja numerotHeksadesimaalinumerot ja yhdysmerkitNumerot
Edellyttää keskitettyä koordinointiaEiEiKyllä (tietokannan sekvenssi)
Järjestettävissä luontiajan mukaanEiEiKyllä
Sopii URL-osoitteisiin ilman koodaustaKylläKylläKyllä

CUID2 ja UUID v4 ratkaisevat saman ongelman: tunnisteiden luomisen ilman keskitettyä koordinointia. CUID2 on lyhyempi ja käyttää pienempää merkkijoukkoa, joten se on helpompi lukea ja liittää URL-osoitteeseen. UUID sopii myös verkko-osoitteeseen, koska yhdysmerkki on URL-osoitteissa varaamaton merkki, mutta se on 11 merkkiä pidempi.

Yleisiä käyttötarkoituksia

  • Hajautettujen tietokantojen perusavaimet, joissa useat palvelimet lisäävät rivejä itsenäisesti
  • Pyyntö- tai jäljitystunnisteet, joiden avulla yhtä toimintoa seurataan useissa mikropalveluissa
  • Lähetettävien tiedostojen tiedostonimet, jotta kaksi tiedostoa eivät koskaan korvaa toisiaan
  • Verkkosovellusten istunto- tai token-tunnisteet
  • Jonojen, kuten Kafkan tai RabbitMQ:n, viestitunnisteet

Lyhyt historia

Eric Elliott julkaisi alkuperäisen CUID-formaatin vuonna 2012 vaihtoehdoksi UUID-tunnisteille hajautetuissa sovelluksissa. Saman Paralleldrive-projektin julkaisema CUID2 suunniteltiin uudelleen kryptografisen hajautuksen ympärille, ja siitä poistettiin alkuperäisen version näkyviin jättämä palautettavissa oleva aikaleima ja laskuri. Tämä työkalu luo vain CUID2-tunnisteita.

Usein kysyttyä

Mikä ero on CUID-version 1 ja CUID2-formaatin välillä? CUID v1 tallensi tunnisteeseen näkyvän aikaleiman ja laskurin, mikä mahdollisti tunnisteiden järjestämisen mutta paljasti myös, milloin ja kuinka monta tunnistetta oli luotu. CUID2 korvaa nämä näkyvät kentät yksisuuntaisella hajautuksella, joten tunnisteesta ei voi lukea tietoja takaisin.

Voiko tämän työkalun CUID-tunnisteet järjestää luontiajan mukaan? Ei. CUID2 ei sisällä palautettavissa olevaa aikaleimaa, joten tunnisteita ei voi järjestää niiden luontiajan mukaan pelkän merkkijonon perusteella.

Kuinka pitkä luotu tunniste on, ja voiko pituutta muuttaa? Tämä työkalu luo aina 25 merkin pituisia tunnisteita. Työkalussa ei ole mahdollisuutta pyytää muun pituisia tunnisteita.

Voivatko kaksi eri konetta luoda saman CUID2-tunnisteen samanaikaisesti? Teoriassa se on mahdollista, mutta käytännössä erittäin epätodennäköistä. Jokaisessa tunnisteessa yhdistyvät isäntäkonekohtainen sormenjälki ja satunnainen entropia, joten on erittäin epätodennäköistä, että toisistaan riippumattomat koneet koskaan tuottavat samaa hajautusarvoa.

Lähettääkö tämä työkalu tietoja palvelimelle? Ei. Tunniste luodaan selaimessa suoritettavalla JavaScriptillä käyttäen paikallisen järjestelmän kelloa ja selaimen tarjoamaa satunnaisuutta. Mitään ei lähetetä.

Voinko käyttää CUID2-tunnistetta tietokannan perusavaimena? Kyllä. CUID2-tunnisteet sopivat hyvin hajautettujen tietokantojen perusavaimiksi, koska mikä tahansa solmu voi luoda tunnisteen tarkistamatta asiaa keskitetystä sekvenssistä. Niitä ei voi luontaisesti järjestää lisäysajan mukaan, joten järjestystä tarvitsevan sovelluksen kannattaa säilyttää erillinen created_at-sarake.