Učinkovit generator CUID za edinstvene identifikatorje v sistemih
Ustvarjanje edinstvenih identifikatorjev (CUID), odpornih proti trkom, za porazdeljene sisteme, podatkovne zbirke in spletne aplikacije. Hitro ustvarjanje skalabilnih, razvrščenih ID-jev.
Generator CUID
Hitro in preprosto ustvarite ID, odporen proti trkom.
Dokumentacija
Kaj je CUID?
CUID (edinstveni identifikator, odporen proti trkom) je kratek niz črk in števk, ki se uporablja za označevanje zapisa, datoteke ali dogodka, tako da nobena dva elementa nimata istega imena. To orodje ustvari CUID2, trenutno različico formata, z uporabo knjižnice @paralleldrive/cuid2. Vsak identifikator je dolg 25 znakov, vsebuje samo male črke in števke ter je ustvarjen v celoti v brskalniku — nič se ne pošlje strežniku.
Kako uporabljati ta generator CUID
- Kliknite Generate New CUID, da ustvarite identifikator.
- Kliknite Copy to Clipboard, da ga kopirate.
- Prilepite identifikator v podatkovno zbirko, ime datoteke ali aplikacijo.
- Za drug identifikator znova kliknite Generate. Trki med ločenimi vrednostmi CUID2 so izjemno malo verjetni, vendar matematično niso nemogoči.
- Kliknite Reset, da počistite rezultat.
Ustvarjeni identifikator je shranjen tudi v URL-ju strani, zato je mogoče povezavo do rezultata deliti ali shraniti med zaznamke.
Zgradba in formula CUID2
CUID2 je zgrajen takole:
1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2Zgoščevalna funkcija združi štiri zasebne vhodne vrednosti: trenutni čas, števec za trenutno sejo, prstni odtis gostiteljskega računalnika in naključno entropijo. Te podatke obdela s funkcijo SHA3-512, rezultat pretvori v osnovo 36 (števke 0–9 in črke a-z), nato pa obdrži 24 teh znakov. Naključna začetna črka končni identifikator podaljša na 25 znakov, kolikor jih uporablja to orodje.
Samostojna je le prva črka: naključna črka na začetku zagotovi, da se vsak identifikator začne s črko in ne s števko. Številni sistemi, na primer imena tabel in stolpcev SQL, zahtevajo, da se identifikator začne s črko, zato je CUID2 skoraj povsod varno uporabiti kot ime. Vsak znak za to prvo črko je del enega neprekinjenega, nerazčlenjenega telesa zgoščene vrednosti — nima ločenih odsekov.
Ker zgoščevalna funkcija deluje samo v eno smer, iz končnega identifikatorja ni mogoče pridobiti nobenega od njenih vhodnih podatkov. CUID2 nima obnovljivega časovnega žiga, obnovljivega števca ali obnovljivega prstnega odtisa. To je namerna odločitev za zasebnost in varnost: iz samega identifikatorja ni mogoče ugotoviti, kdaj ali kje je bil ustvarjen.
Primer z rešitvijo
Z orodjem lahko ustvarite identifikator, kot je:
1vcpuhcj51eomj1o31dnlqopu0
2Tukaj je v naključna začetna črka, cpuhcj51eomj1o31dnlqopu0 (24 znakov) pa je zgoščevalno telo. Dela sta videti različna le zato, ker je za prvi znak zagotovljeno, da je črka — zgoščevalno telo lahko vsebuje kombinacijo črk in števk.
Zakaj sistemi uporabljajo CUID2
- Usklajevanje ni potrebno. Vsak računalnik lahko sam ustvari veljaven identifikator, ne da bi za naslednjo vrednost prosil osrednji strežnik ali podatkovno zbirko.
- Odpornost proti trkom. Kombinacija časa, števca, prstnega odtisa gostitelja in naključne entropije pomeni, da je zelo malo verjetno, da bi dva računalnika ustvarila isti identifikator, tudi če ustvarjata veliko identifikatorjev na sekundo.
- Primeren za URL-je. CUID2 uporablja samo male črke in števke, zato ga za uporabo v spletnem naslovu ni treba kodirati.
- Hitro in zasebno ustvarjanje. Ker to orodje generator izvaja v brskalniku, se identifikatorji ustvarijo takoj in nikoli ne zapustijo naprave.
Identifikatorjev CUID2 ni mogoče razvrščati po času nastanka. Za razliko od samodejno povečujoče se številke v podatkovni zbirki ali starejšega formata CUID (različica 1) CUID2 skriva časovni žig v zgoščevalni vrednosti, namesto da bi ga shranil v vidni obliki. Aplikacije, ki morajo zapise razvrščati po vrstnem redu nastanka, naj poleg identifikatorja shranijo ločen časovni žig.
CUID2 v primerjavi z UUID in samodejno povečujočimi se identifikatorji
| Lastnost | CUID2 | UUID v4 | Samodejno povečevanje |
|---|---|---|---|
| Dolžina | 25 znakov | 36 znakov (z vezaji) | Različno (običajno kratka številka) |
| Nabor znakov | Male črke in števke | Šestnajstiške števke in vezaji | Števke |
| Zahteva osrednje usklajevanje | Ne | Ne | Da (zaporedje v podatkovni zbirki) |
| Razvrščanje po času nastanka | Ne | Ne | Da |
| Primeren za URL-je brez kodiranja | Da | Da | Da |
CUID2 in UUID v4 rešujeta isti problem: ustvarjanje identifikatorjev brez osrednjega usklajevanja. CUID2 je krajši in uporablja manjši nabor znakov, zato ga je lažje brati in prilepiti v URL. UUID je prav tako varen za uporabo v spletnem naslovu, saj je vezaj v URL-jih nerezerviran znak, vendar je dolg 11 znakov več.
Pogoste uporabe
- Primarni ključi v porazdeljenih podatkovnih zbirkah, kjer več strežnikov neodvisno vstavi vrstice
- Identifikatorji zahtev ali sledenja, ki se uporabljajo za spremljanje enega dejanja v več mikrostoritvah
- Imena datotek za prenose, tako da nobena datoteka ne prepiše druge
- Identifikatorji sej ali žetonov za spletne aplikacije
- Identifikatorji sporočil v čakalnih vrstah, kot sta Kafka ali RabbitMQ
Kratka zgodovina
Prvotni format CUID je Eric Elliott izdal leta 2012 kot alternativo UUID-jem za porazdeljene aplikacije. Format CUID2, ki ga je objavil isti projekt Paralleldrive, je bil preoblikovan okoli kriptografske zgoščevalne funkcije ter odstranil obnovljivi časovni žig in števec, ki ju je razkrivala prvotna različica. To orodje ustvarja samo identifikatorje CUID2.
Pogosta vprašanja
Kakšna je razlika med CUID (v1) in CUID2? CUID v1 je v identifikatorju shranil vidni časovni žig in števec, zaradi česar je bilo mogoče identifikatorje razvrščati, hkrati pa je razkrival, kdaj in koliko identifikatorjev je bilo ustvarjenih. CUID2 ta vidna polja nadomesti z enosmerno zgoščevalno funkcijo, zato iz identifikatorja ni mogoče prebrati nobenih podatkov.
Ali je mogoče CUID-je iz tega orodja razvrščati po času nastanka? Ne. CUID2 nima obnovljivega časovnega žiga, zato identifikatorjev samo s pogledom na niz ni mogoče razvrstiti glede na čas njihovega nastanka.
Kako dolg je ustvarjeni identifikator in ali je mogoče dolžino spremeniti? To orodje vedno ustvari identifikatorje, dolge 25 znakov. V tem orodju ni možnosti za zahtevano drugačno dolžino.
Ali lahko dva različna računalnika hkrati ustvarita isti CUID2? Teoretično je to mogoče, v praksi pa izjemno malo verjetno. Vsak identifikator združuje prstni odtis, značilen za gostitelja, z naključno entropijo, zato je zelo malo verjetno, da bi neodvisni računalniki kdaj ustvarili isto zgoščevalno vrednost.
Ali to orodje pošilja kakršne koli podatke strežniku? Ne. Identifikator ustvari JavaScript, ki se izvaja v brskalniku, pri tem pa uporablja lokalno sistemsko uro in naključnost, ki jo zagotovi brskalnik. Nič se ne prenaša.
Ali lahko CUID2 uporabim kot primarni ključ podatkovne zbirke?
Da. Identifikatorji CUID2 so primerni kot primarni ključi v porazdeljenih podatkovnih zbirkah, saj jih lahko ustvari katero koli vozlišče, ne da bi preverjalo osrednje zaporedje. Po času vstavljanja se ne razvrščajo naravno, zato naj aplikacija, ki potrebuje tak vrstni red, hrani ločen stolpec created_at.