Kas ir šis rīks?
UUID (Universally Unique Identifier) ir 128 bitu identifikators, kas rakstīts kā 36 rakstzīmes, piemēram, 550e8400-e29b-41d4-a716-446655440000. Versijas 4 UUID tiek ģenerēti no nejaušiem datiem, kas padara sakritības tik neiespējamas, ka tās var ignorēt praksē: tu vari ģenerēt miljardu UUID sekundē gadu desmitiem, pirms dublikāts kļūst iespējams.
UUID tiek izmantoti kā datubāzu primārās atslēgas, pieprasījumu ID izsekošanai, faila nosaukumi, API atslēgas un jebkur, kur nepieciešams identifikators bez saskaņošanas ar centrālu iestādi.
UUID ir standartizēti RFC 4122, pārskatīti 2024. gadā kā RFC 9562 — pārskatīšana atstāja v4 nemainīgu un pievienoja UUIDv7, laika zīmoga sakārtotu variantu, kas paredzēts labākai indeksēšanai kā datubāzes atslēgai.
Kāpēc to izmantot?
- Kriptogrāfiski drošs: izmanto crypto.randomUUID(), nevis vāju Math.random().
- Vairumģenerēšana — līdz 500 UUID uzreiz, katrs savā rindā, gatavs ielīmēšanai.
- Lielo burtu un bez defisēm iespējas sistēmām ar konkrētām formāta prasībām.
- Darbojas bezsaistē tavā pārlūkā; UUID nekad netiek nekur nosūtīti.
- Bezmaksas un tūlītējs, bez pieteikšanās.
Kā to lietot
- Izvēlies, cik UUID nepieciešams (1–500).
- Pēc izvēles atzīmē "Lielie burti" vai "Noņemt defises".
- Klikšķini "Ģenerēt UUID".
- Klikšķini "Kopēt visu", lai nokopētu visu sarakstu.
Piemērs
Ievade
Skaits: 3Izvade
f47ac10b-58cc-4372-a567-0e02b2c3d479
9c858901-8a57-4791-81fe-4c455b099bc9
16fd2706-8baf-433b-82eb-8c7fada847daKatrs UUID tiek ģenerēts neatkarīgi no droša nejaušu datu avota.
Bieži lietošanas gadījumi
- Datubāzu primārās atslēgas: UUID ļauj ģenerēt derīgu ID pirms ievietošanas, noderīgi bezsaistes aplikācijām vai kad klientam jāatsaucas uz ierakstu pirms servera apstiprinājuma.
- Sadalītas sistēmas: vairāki serveri var ģenerēt ID neatkarīgi bez saskaņošanas un bez sakritības riska — atšķirībā no automātiski augošiem veseliem skaitļiem, kuriem nepieciešams viens patiesības avots.
- Idempotences atslēgas: tā paša UUID nosūtīšana ar atkārtotu API pieprasījumu ļauj serverim atpazīt un droši ignorēt dublēto iesniegumu.
- Testa dati un sākotnējie dati: vairumā ģenerē simtiem unikālu ID vienlaikus testa datubāzes vai mock API atbilžu piepildīšanai.
- React/Vue saraksta atslēgas: kad saraksta vienumiem vēl nav dabiska unikāla ID, ģenerēts UUID darbojas kā stabila atslēga izstrādes laikā.
Ierobežojumi, kas jāzina
UUID nav sakārtojami pēc izveides laika — v4 nejaušība nozīmē, ka jauni ID nesakārtojas tuvu cits citam datubāzes indeksā, kas var pasliktināt ievietošanas veiktspēju lielā mērogā (tāpēc pastāv UUID v7 — laikā sakārtota alternatīva). Ja nepieciešama gan laika sakārtotība, gan unikalitāte, v7 vai Snowflake tipa ID der labāk nekā v4.
Pats UUID nav drošības akreditācijas dati. Tas ir neparedzams tajā ziņā, ka nevar paredzēt vienu no cita, bet tas nekad nav bijis veidots ar auditējamības, derīguma termiņa vai atsaukšanas funkcijām, kas nepieciešamas īstam autentifikācijas žetonam — tam izmanto specializētu sesijas/API žetonu bibliotēku.
Kā nejaušība patiešām darbojas
v4 UUID ir 122 patiešām nejauši biti (pārējie 6 biti ir fiksēti, lai apzīmētu versiju un variantu saskaņā ar RFC 4122 specifikāciju). Šis rīks iegūst šo nejaušību no crypto.getRandomValues() caur pārlūka Web Crypto API — to pašu avotu, ko izmanto TLS atslēgām un citām kriptogrāfiskajām darbībām, nevis daudz vājāku Math.random(), kas ir pietiekami paredzams, ka dažas vecākas UUID bibliotēkas, kas uz tā balstītas, ir kritizētas par uzminamu ID ģenerēšanu.
Lai izteiktu sakritības iespējamību konkrētos skaitļos: ar 122 nejaušiem bitiem būtu jāģenerē aptuveni 2,71 kvintiljons UUID, pirms ir 50% varbūtība kaut vienai sakritībai — vairākas kārtas lielāks skaitlis, nekā jebkura viena aplikācija jebkad radīs. Tāpēc UUID v4 praksē tiek uzskatīts par praktiski bez sakritībām, lai gan tas matemātiski nav neiespējami.
Biežāk uzdotie jautājumi
Vai divi ģenerēti UUID var sakrist?
Teorētiski jā, praktiski nē. v4 UUID ir 122 nejauši biti. Sakritības varbūtība paliek niecīga pat pēc triljoniem ģenerēšanas — tos var droši uzskatīt par unikāliem.
Kāda ir atšķirība starp UUID versijām?
v1 balstīts uz laika zīmogu + MAC adresi (atklāj informāciju), v4 ir pilnībā nejaušs (visbiežāk izmantotais), v5 iegūts no nosaukuma caur jaucējfunkciju (deterministisks), v7 ir laikā sakārtots nejaušs (labs datubāzu indeksiem). Šis rīks ģenerē v4.
Vai šie UUID ir pietiekami droši žetoniem?
Tie izmanto kriptogrāfiski drošu nejaušības avotu, kas ir daudz labāks nekā Math.random(). Sesijas žetoniem joprojām priekšroka dodama specializētiem žetonu ģeneratoriem ar lielāku entropiju, bet v4 UUID der identifikatoriem.
Vai UUID ir tas pats, kas GUID?
Jā. GUID (Globally Unique Identifier) ir Microsoft nosaukums tam pašam 128 bitu formātam. Termini ir savstarpēji aizvietojami.
Vai ģenerētie UUID tiek saglabāti vai reģistrēti?
Nē. Ģenerēšana notiek lokāli tavā pārlūkā. Nekas netiek pārsūtīts, saglabāts vai reģistrēts — katrs redzamais UUID pastāv tikai tavā ekrānā.