Tõhus CUID generaator unikaalseteks identifikaatoriteks süsteemides
Looge hajutatud süsteemidele, andmebaasidele ja veebirakendustele kollisioonivabad unikaalsed identifikaatorid (CUID). Looge koheselt skaleeritavad ja sorteeritavad ID-d.
CUID-generaator
Genereeri kiiresti ja lihtsalt kokkupõrget vältiv ID.
Dokumentatsioon
Mis on CUID?
CUID (põrgetele vastupidav unikaalne identifikaator) on lühike tähtedest ja numbritest koosnev jada, mida kasutatakse kirje, faili või sündmuse tähistamiseks, et kahel üksusel ei oleks sama nime. See tööriist genereerib vormingu praegust versiooni CUID2, kasutades teeki @paralleldrive/cuid2. Iga identifikaator on 25 märgi pikkune, sisaldab ainult väiketähti ja numbreid ning luuakse täielikult brauseris — midagi ei saadeta serverisse.
Kuidas seda CUID-generaatorit kasutada
- Uue identifikaatori loomiseks klõpsake Generate New CUID.
- Selle kopeerimiseks klõpsake Copy to Clipboard.
- Kleepige identifikaator andmebaasi, failinimesse või rakendusse.
- Järgmise identifikaatori saamiseks klõpsake uuesti genereerimisnuppu. Eraldi CUID2 väärtuste kokkulangemine on äärmiselt ebatõenäoline, ehkki matemaatiliselt mitte võimatu.
- Tulemuse kustutamiseks klõpsake Reset.
Genereeritud identifikaator salvestatakse ka lehe URL-i, nii et tulemuse linki saab jagada või järjehoidjatesse lisada.
CUID2 struktuur ja valem
CUID2 koostatakse järgmiselt:
1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2Räsifunktsioon segab nelja privaatset sisendit: praegust aega, seansipõhist loendurit, hostarvuti sõrmejälge ja juhuslikku entroopiat. See töötleb need läbi SHA3-512, teisendab tulemuse 36-süsteemi (numbrid 0–9 ja tähed a-z) ning säilitab neist 24 märki. Juhuslik algustäht teeb lõpliku identifikaatori pikkuseks 25 märki, nagu see tööriist on seadistatud.
Ainult esimene märk on eraldiseisev: algusesse paigutatud juhuslik täht tagab, et iga identifikaator algab tähe, mitte numbriga. Paljud süsteemid, näiteks SQL-i tabeli- ja veerunimed, nõuavad, et identifikaator algaks tähega, seega on CUID2 nimeks kasutamiseks peaaegu kõikjal sobiv. Kõik pärast esimest tähte olevad märgid moodustavad ühe pideva läbipaistmatu räsikeha — sellel ei ole eraldi osi.
Kuna räsi töötab ainult ühes suunas, ei saa ühtki sisendit valmis identifikaatorist välja lugeda. CUID2 ei sisalda taastatavat ajatemplenumbrit, loendurit ega sõrmejälge. See on teadlik privaatsus- ja turvavalik: ainult identifikaatori põhjal ei saa teada, millal või kus see loodi.
Näidisarvutus
Selle tööriistaga identifikaatori genereerimise tulemus võib olla järgmine:
1vcpuhcj51eomj1o31dnlqopu0
2Siin on v juhuslik algustäht ning cpuhcj51eomj1o31dnlqopu0 (24 märki) on räsikeha. Need kaks osa näevad erinevad välja ainult seetõttu, et esimene märk on kindlasti täht — räsikeha võib sisaldada nii tähti kui ka numbreid.
Miks süsteemid kasutavad CUID2-t
- Koordineerimine pole vajalik. Iga masin saab kehtiva identifikaatori luua iseseisvalt, küsimata järgmist väärtust keskserverilt või andmebaasilt.
- Kokkupõrgetele vastupidavus. Aja, loenduri, hosti sõrmejälje ja juhusliku entroopia kombinatsioon muudab äärmiselt ebatõenäoliseks, et kaks masinat loovad sama identifikaatori, isegi kui nad genereerivad mitu identifikaatorit sekundis.
- URL-i jaoks sobiv. CUID2 kasutab ainult väiketähti ja numbreid, seega ei ole seda veebiaadressis kasutamiseks vaja kodeerida.
- Kiire ja privaatne genereerimine. Kuna see tööriist käitab generaatorit brauseris, luuakse identifikaatorid kohe ja need ei lahku seadmest.
CUID2 identifikaatoreid ei saa loomise aja järgi sortida. Erinevalt andmebaasi automaatselt suurenevast numbrist või vanemast CUID-i (versioon 1) vormingust peidab CUID2 ajatempli räsi sisse, mitte ei salvesta seda nähtaval kujul. Rakendused, mis peavad kirjeid loomise järjekorra järgi sortima, peaksid koos identifikaatoriga salvestama eraldi ajatempli veeru.
CUID2 vs. UUID vs. automaatselt suurenevad identifikaatorid
| Omadus | CUID2 | UUID v4 | Automaatne juurdekasv |
|---|---|---|---|
| Pikkus | 25 märki | 36 märki (sidekriipsudega) | Muutuv (tavaliselt lühike number) |
| Märgistik | Väiketähed ja numbrid | kuueteistkümnendsüsteemi numbrid ja sidekriipsud | Numbrid |
| Vajab keskset koordineerimist | Ei | Ei | Jah (andmebaasijada) |
| Loomise aja järgi sorditav | Ei | Ei | Jah |
| URL-i jaoks sobiv ilma kodeerimiseta | Jah | Jah | Jah |
CUID2 ja UUID v4 lahendavad sama probleemi: identifikaatorite genereerimise ilma keskse koordineerimiseta. CUID2 on lühem ja kasutab väiksemat märgistikku, mistõttu on seda lihtsam lugeda ja URL-i kleepida. UUID on veebiaadressis samuti turvaline, sest sidekriips on URL-ides reserveerimata märk, kuid see on 11 märki pikem.
Levinud kasutusalad
- Hajusandmebaaside primaarvõtmed, kui mitu serverit lisavad ridu iseseisvalt
- Päringu- või jälgimisidentifikaatorid, mille abil saab üht toimingut jälgida mitmes mikroteenuses
- Üleslaaditavate failide nimed, et kaks faili ei kirjutaks kunagi teineteist üle
- Veebirakenduste seansi- või loaidentifikaatorid
- Sõnumijärjekordade (nt Kafka või RabbitMQ) sõnumiidentifikaatorid
Lühike ajalugu
Algse CUID-vormingu avaldas Eric Elliott 2012. aastal UUID-de alternatiivina hajusrakenduste jaoks. CUID2, mille avaldas sama Paralleldrive'i projekt, kujundati ümber krüptograafilise räsi ümber ning sellest eemaldati taastatav ajatempel ja loendur, mida algne versioon avaldas. See tööriist genereerib ainult CUID2 identifikaatoreid.
Korduma kippuvad küsimused
Mis vahe on CUID-il (v1) ja CUID2-l? CUID v1 salvestas identifikaatori sisse nähtava ajatempli ja loenduri, mis muutis identifikaatorid sorditavaks, kuid paljastas ka, millal ja kui palju identifikaatoreid oli loodud. CUID2 asendab need nähtavad väljad ühesuunalise räsiga, nii et identifikaatorist ei saa mingit teavet tagasi lugeda.
Kas selle tööriista CUID-e saab loomise aja järgi sortida? Ei. CUID2-l ei ole taastatavat ajatemplit, seega ei saa identifikaatoreid ainult jada vaadates nende genereerimise aja järgi järjestada.
Kui pikk on genereeritud identifikaator ja kas pikkust saab muuta? See tööriist genereerib alati 25-märgilisi identifikaatoreid. Selle tööriistaga ei saa teistsugust pikkust taotleda.
Kas kaks eri masinat võivad samal ajal genereerida sama CUID2-e? Teoreetiliselt on see võimalik, kuid praktikas äärmiselt ebatõenäoline. Iga identifikaator ühendab hostipõhise sõrmejälje juhusliku entroopiaga, mistõttu on väga ebatõenäoline, et sõltumatud masinad loovad kunagi sama räsi.
Kas see tööriist saadab andmeid serverisse? Ei. Identifikaator genereeritakse brauseris töötava JavaScripti abil, kasutades kohaliku süsteemi kella ja brauseri pakutavat juhuslikkust. Midagi ei edastata.
Kas CUID2-t saab kasutada andmebaasi primaarvõtmena?
Jah. CUID2 identifikaatorid sobivad hajusandmebaaside primaarvõtmeteks, sest iga sõlm saab sellise luua ilma keskse jadaga kontrollimata. Need ei ole sisestusaja järgi loomupäraselt sorditud, seega peaks sellist järjestust vajav rakendus säilitama eraldi veeru created_at.