Učinkoviti CUID Generator za Jedinstvene Identifikatore u Sustavima
Generirajte jedinstvene identifikatore otporne na sudare (CUID) za distribuirane sustave, baze podataka i web aplikacije. Trenutno stvorite skalabilne, sortabilne ID-ove.
Generator CUID-a
Brzo i jednostavno generirajte ID otporan na sudare.
Dokumentacija
Što je CUID?
CUID (jedinstveni identifikator otporan na kolizije) kratak je niz slova i znamenki koji se upotrebljava za označavanje zapisa, datoteke ili događaja tako da nijedne dvije stavke nemaju isti naziv. Ovaj alat generira CUID2, trenutačnu verziju formata, koristeći biblioteku @paralleldrive/cuid2. Svaki identifikator ima 25 znakova, sadržava samo mala slova i znamenke te se stvara u cijelosti u pregledniku — ništa se ne šalje poslužitelju.
Kako se koristi ovaj generator CUID-a
- Kliknite Generate New CUID da biste stvorili identifikator.
- Kliknite Copy to Clipboard da biste ga kopirali.
- Zalijepite identifikator u bazu podataka, naziv datoteke ili aplikaciju.
- Ponovno kliknite Generate da biste dobili drugi identifikator. Kolizije između zasebnih vrijednosti CUID2 iznimno su malo vjerojatne, iako matematički nisu nemoguće.
- Kliknite Reset da biste izbrisali rezultat.
Generirani identifikator pohranjen je i u URL-u stranice, pa se poveznica na rezultat može dijeliti ili označiti kao knjižna oznaka.
Struktura i formula CUID2
CUID2 izgrađen je ovako:
1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2Hash-funkcija kombinira četiri privatna ulaza: trenutačno vrijeme, brojač po sesiji, otisak glavnog računala i slučajnu entropiju. Provodi ih kroz SHA3-512, pretvara rezultat u bazu 36 (znamenke 0–9 i slova a-z), a zatim zadržava 24 tih znakova. Slučajno početno slovo daje konačnom identifikatoru 25 znakova, koliko je ovaj alat podešen.
Samo prvi znak stoji zasebno: slučajno slovo postavljeno na početak kako bi svaki identifikator počinjao slovom, a ne znamenkom. Mnogi sustavi, primjerice nazivi SQL tablica i stupaca, zahtijevaju da identifikatori počinju slovom, pa je CUID2 tako siguran za upotrebu kao naziv gotovo bilo gdje. Svaki znak nakon tog prvog slova dio je jednog neprekinutog, neprozirnog tijela hasha — nema zasebne odjeljke.
Budući da hash funkcionira samo u jednom smjeru, nijedan se njegov ulaz ne može izvući iz konačnog identifikatora. CUID2 nema vremensku oznaku, brojač ni otisak koji bi se mogli rekonstruirati. To je namjeran izbor radi privatnosti i sigurnosti: sam identifikator ne može otkriti kada je ni gdje stvoren.
Primjer s rješenjem
Generiranje identifikatora ovim alatom može dati:
1vcpuhcj51eomj1o31dnlqopu0
2Ovdje je v slučajno početno slovo, a cpuhcj51eomj1o31dnlqopu0 (24 znaka) tijelo hasha. Ta dva dijela izgledaju različito samo zato što je za prvi znak zajamčeno da bude slovo — tijelo hasha može sadržavati kombinaciju slova i znamenki.
Zašto sustavi upotrebljavaju CUID2
- Koordinacija nije potrebna. Svako računalo može samostalno generirati valjani identifikator bez traženja sljedeće vrijednosti od središnjeg poslužitelja ili baze podataka.
- Otpornost na kolizije. Kombinacija vremena, brojača, otiska glavnog računala i slučajne entropije čini iznimno malo vjerojatnim da će dva računala proizvesti isti identifikator, čak i pri generiranju mnogo identifikatora u sekundi.
- Prikladan za URL. CUID2 upotrebljava samo mala slova i znamenke, pa ga za upotrebu u web-adresi nikada nije potrebno kodirati.
- Brzo i privatno generiranje. Budući da ovaj alat pokreće generator u pregledniku, identifikatori se stvaraju trenutačno i nikada ne napuštaju uređaj.
Identifikatori CUID2 ne mogu se sortirati prema vremenu stvaranja. Za razliku od automatski uvećavanog broja u bazi podataka ili starijeg formata CUID (verzija 1), CUID2 skriva vremensku oznaku unutar hasha umjesto da je pohranjuje vidljivo. Aplikacije koje trebaju sortirati zapise prema redoslijedu stvaranja trebale bi uz identifikator pohraniti zaseban stupac s vremenskom oznakom.
CUID2 u odnosu na UUID i automatski uvećavane identifikatore
| Značajka | CUID2 | UUID v4 | Automatsko uvećavanje |
|---|---|---|---|
| Duljina | 25 znakova | 36 znakova (s crticama) | Varira (obično kratak broj) |
| Skup znakova | Mala slova i znamenke | Heksadekadske znamenke i crtice | Znamenke |
| Potrebna je središnja koordinacija | Ne | Ne | Da (slijed baze podataka) |
| Sortiranje prema vremenu stvaranja | Ne | Ne | Da |
| Prikladan za URL bez kodiranja | Da | Da | Da |
CUID2 i UUID v4 rješavaju isti problem: generiranje identifikatora bez središnje koordinacije. CUID2 je kraći i upotrebljava manji skup znakova, što olakšava njegovo čitanje i lijepljenje u URL. UUID je također siguran u web-adresi jer je crtica nerezervirani znak u URL-ovima, ali je 11 znakova dulji.
Uobičajene primjene
- Primarni ključevi u distribuiranim bazama podataka, u kojima više poslužitelja neovisno umeće retke
- Identifikatori zahtjeva ili praćenja koji služe za praćenje jedne radnje kroz više mikrousluga
- Nazivi datoteka za prijenose, kako dvije datoteke nikada ne bi prebrisale jedna drugu
- Identifikatori sesija ili tokena za web-aplikacije
- Identifikatori poruka u redovima čekanja kao što su Kafka ili RabbitMQ
Kratka povijest
Izvorni format CUID objavio je Eric Elliott 2012 kao alternativu UUID-ovima za distribuirane aplikacije. CUID2, koji je objavio isti projekt Paralleldrive, redizajnirao je format oko kriptografskog hasha i uklonio rekonstruirljivu vremensku oznaku i brojač koje je izvorna verzija izlagala. Ovaj alat generira samo identifikatore CUID2.
Često postavljana pitanja
Koja je razlika između CUID-a (v1) i CUID2? CUID v1 pohranjivao je vidljivu vremensku oznaku i brojač unutar identifikatora, što je omogućilo sortiranje identifikatora, ali je također otkrivalo kada su identifikatori stvarani i koliko ih je stvoreno. CUID2 zamjenjuje ta vidljiva polja jednosmjernim hashom, pa se iz identifikatora ne mogu očitati nikakve informacije.
Mogu li se CUID-ovi iz ovog alata sortirati prema vremenu stvaranja? Ne. CUID2 nema vremensku oznaku koja bi se mogla rekonstruirati, pa se identifikatori ne mogu poredati prema vremenu generiranja samo promatranjem niza.
Koliko je dug generirani identifikator i može li se duljina promijeniti? Ovaj alat uvijek generira identifikatore od 25 znakova. U ovom alatu ne postoji mogućnost zatražiti drugu duljinu.
Mogu li dva različita računala istodobno generirati isti CUID2? Teoretski je moguće, ali u praksi iznimno malo vjerojatno. Svaki identifikator kombinira otisak specifičan za glavno računalo sa slučajnom entropijom, pa je vrlo malo vjerojatno da će neovisna računala ikada proizvesti isti hash.
Šalje li ovaj alat podatke poslužitelju? Ne. Identifikator generira JavaScript koji se izvršava u pregledniku, koristeći lokalni sat sustava i slučajne vrijednosti koje pruža preglednik. Ništa se ne prenosi.
Mogu li CUID2 upotrijebiti kao primarni ključ baze podataka?
Da. Identifikatori CUID2 dobro funkcioniraju kao primarni ključevi u distribuiranim bazama podataka jer ih svaki čvor može generirati bez provjere sa središnjim slijedom. Po prirodi se ne sortiraju prema vremenu umetanja, pa bi aplikacija kojoj je takav redoslijed potreban trebala čuvati zaseban stupac created_at.