Gjenerues i UUID v4

Gjeneroni vlera UUID v4 online: 122 bite rastësie, strukturë standarde UUID dhe rezultate gati për t'u kopjuar në shfletuesin tuaj.

Formati
ID-të e gjeneruara
Gati. Gjeneroni vlera UUID v4 në shfletuesin tuaj.

Si ndërtohet ky ID

Struktura
UUID 128-bitësh me versionin 4 dhe bitet e variantit RFC, i shfaqur si grupe heksadecimale 8-4-4-4-12.
Entropia
122 bite rastësie nga crypto.randomUUID().
Koha
Asnjë; ID-të v4 nuk zbulojnë se kur janë krijuar.
Rreziku i kolizionit
Kolizionet rregullohen nga 122 bite rastësie, gjë që është shumë përtej vëllimeve praktike për sistemet normale.
Shembull
2ff4b769-0b0e-4294-bb6f-33154928b869

ID-të tuaja gjenerohen lokalisht me rastësi të fortë të shfletuesit. Asgjë nuk dërgohet në BroBroGo.

Pyetjet e shpeshta

Kur duhet të përdor UUID v4?

Përdorni UUID v4 kur ju nevojiten identifikues të rastësishëm të paqartë (opaque) që nuk renditen sipas kohës së krijimit dhe nuk ekzponojnë informacione kohore.

A mund t'i heq vizat lidhëse ose t'i kthej shkronjat në të mëdha?

Po. Vegla e dedikuar për UUID v4 ruan panelin e opsioneve të UUID, kështu që mund të aktivizoni/çaktivizoni vizat lidhëse dhe shkronjat e mëdha në rezultat.

Gjeneruesi i UUID v4 – 122 bit rastësi, pa renditje, pa kolizione praktike

Faqja uuid‑v4‑generator prodhon një ose më shumë identifikues UUID v4 – vargje të rastit 36 karakterëshe në formatin standard 8‑4‑4‑4‑12 heksadecimal. Kontrolloni numrin (1 deri 100), përdorimin e shkronjave të mëdha dhe përfshirjen e vizave. ID‑të shfaqen menjëherë në shfletues; klikoni një ID për ta kopjuar ose përdorni butonin për të kopjuar të gjitha. Ajo që e bën këtë faqe të ndryshme nga gjeneruesit e tjerë të ID‑ve është se UUID v4 përdor 122 bit rastësi të pastër (6 bitat e mbetur janë bita fiks versioni/varianti), vlerat e UUID v4 renditen arbitrarisht – nuk mbajnë asnjë informacion kohe ose renditjeje – dhe probabiliteti i përplasjes është i papërfillshëm për qëllime praktike. Për më tepër, faqja ekspozon ndërrues specifikë për format (shkronja të mëdha, viza) që janë të rëndësishëm vetëm për UUID‑të (v4 dhe v7); llojet e tjera të ID‑ve në mjet përdor kontrolle të ndryshme.

Struktura e UUID v4: 122 bit rastësi dhe paraqitja kanonike

UUID v4 përcaktohet nga standardi RFC 4122. Në formën e tij të plotë, është një varg 36 karakterësh i grupuar si 8‑4‑4‑4‑12 (p.sh. 550e8400-e29b-41d4-a716-446655440000). Nga 128 bitat total, 122 janë të mbushur me rastësi të krijuar nga burime të forta kriptografike në shfletues (si crypto.randomUUID ose crypto.getRandomValues). 6 bitat e mbetur janë fiks:

  • 4 bita tregojnë versionin: për v4, këta janë gjithmonë 0100 (që në heksadecimal jep 4 në pozicionin e parë të grupit të tretë, p.sh. 41d4 ka 4 si shifrën e parë).
  • 2 bita tregojnë variantin: për variantin e RFC 4122, këta janë 10 (që në heksadecimal jep një shifër nga 8b në pozicionin e parë të grupit të katërt, p.sh. a716 ka a).

Pra, çdo UUID v4 i gjeneruar nga kjo faqe përmban gjithmonë 4 në atë vend dhe një shifër nga 8b në vendin tjetër fiks. Ky është identifikuesi i vetëm që garanton 122 bit rastësi. Nëse hiqen vizat, vargu shkurtohet në 32 karaktere heksadecimal, por 122 bitat e rastësisë mbeten të njëjtë.

Rastësia dhe probabiliteti i përplasjes

Me 122 bit rastësi, numri i UUID‑ve të ndryshme të mundshme është 2^122 ≈ 5.3 × 10^36. Kjo është aq e madhe sa probabiliteti i përplasjes (gjenerimi i dy UUID‑ve identike) është praktikisht zero për çdo aplikacion real. Për të dhënë një ide: nëse gjeneroni 1 miliard UUID v4 çdo sekondë për 100 vjet, probabiliteti për të parë një përplasje të vetme është rreth 1 në 50 miliardë.

Kjo bazohet në parimin e paradoksit të ditëlindjes. Për një grup prej N UUID‑sh të rastit, probabiliteti për të pasur të paktën një përplasje është afërsisht N^2 / (2 * 2^122). Për N = 10^18 (një kuintilion), probabiliteti është rreth 0.04%. Pra, edhe në shkallë të madhe, kolizionet janë të papërfillshme.

Faqja gjeneron IDs menjëherë në shfletues duke përdorur crypto.randomUUID (ose ekuivalent) – pa asnjë kërkesë në server. Kjo siguron që rastësia vjen nga burime të forta të sistemit operativ, jo nga një algoritëm pseudo‑rastësor i parashikueshëm.

Ndikimi në indeksimin e bazës së të dhënave

Një paralajmërim i rëndësishëm për projektuesit e bazave të të dhënave: UUID v4 nuk ka asnjë renditje të qenësishme. Vlerat e tij janë krejtësisht të rastit. Nëse përdoren si çelës primar në një tabelë të indeksuar me B‑pemë (siç ndodh në PostgreSQL, MySQL, SQL Server), çdo futje e re do të shtojë një rekord në një faqe të rastit të indeksit. Kjo shkakton:

  • Fragmentim të lartë të indeksit – faqet e indeksit nuk mbushen në mënyrë sekuenciale, por shpërndahen rastësisht.
  • Shkrim të ngadaltë – çdo futje kërkon kërkim dhe shkrim në një faqe të rastit, duke rritur kohën e I/O.
  • Rritje të madhësisë së indeksit – për shkak të faqeve gjysmë të zbrazëta.

Për aplikacione me shkrim të lartë (si regjistrimi i ngjarjeve ose sensorët), kjo mund të degradojë performancën ndjeshëm. Standardi i ri UUID v7 (i përfshirë gjithashtu në dropdown‑in e faqes) zgjidh këtë problem duke përdorur një stampë kohe në bitat e parë, duke mundësuar renditje sekuenciale dhe indeksim më efikas. Nëse keni nevojë për çelësa primarë të shpejtë në baza të dhënave relacionale, preferoni v7. Por nëse keni nevojë për ID të paparashikueshme, ose punoni në sistem të shpërndarë pa orë të sinkronizuara, v4 mbetet zgjedhja e duhur.

Krahasimi me identifikuesit e bazuar në kohë (UUID v7, ULID)

Karakteristikë UUID v4 UUID v7 ULID
Rastësi totale 122 bit rastësi 74 bit rastësi + 48 bit kohë 80 bit rastësi + 48 bit kohë
Renditja Arbitrare (pa renditje) Kronologjike (në bazë të kohës) Kronologjike
Gjatësia me viza 36 char 36 char 26 char (base32)
Përdorimi në indeks Fragmenton B‑pemë Miqësor për indekse sekuenciale Miqësor për indekse

Dallimi kryesor: v4 nuk jep asnjë informacion për momentin e krijimit. Kjo është e dëshirueshme kur nuk dëshironi të zbuloni rendin e krijimit (p.sh. për fshehjen e numrit të regjistrimeve) ose kur orët e sistemeve nuk janë të sinkronizuara. ULID dhe v7, nga ana tjetër, janë të renditshëm dhe më efikasë për baza të dhënash, por zbulojnë kohën e krijimit me saktësi milisekonda.

Rastet e përdorimit për identifikues jo vijorë

Kush ka nevojë për UUID v4?:

  • Zhvilluesit e aplikacioneve që krijojnë çelësa të rastit për objekte, sesione ose ngjarje në sisteme të shpërndara pa koordinim qendror.
  • Inxhinierët e sigurisë që kërkojnë identifikues të paparashikueshëm për tokena API ose ID kërkesash, ku lidhja me kohën nuk është e dëshirueshme.
  • Testuesit dhe gjeneruesit e të dhënave që popullojnë baza të dhënash testuese me vlera realiste, unike.
  • Sistemet offline – çdo nyje mund të gjenerojë UUID v4 pa u lidhur me një server qendror, duke siguruar unicitet global.

Për shembull, në një arkitekturë mikroshërbimesh, çdo shërbim mund të gjenerojë ID‑të e veta për ngjarje ose kërkesa pa rrezik përplasjeje. Ose në një aplikacion celular që punon offline, çdo veprim mund t'i caktohet një UUID v4 dhe më pas sinkronizohet më vonë.

Personalizimi i formatit: shkronja të mëdha dhe viza

Faqja ofron dy ndërrues që ndryshojnë paraqitjen e UUID‑ve, pa ndryshuar vlerën numerike:

Shkronjat e mëdha (Uppercase) – kur aktivizohen, shkronjat a–f në vargun heksadecimal shfaqen si A–F. Kjo nuk ndikon në bitat e brendshëm; është thjesht një preferencë vizuale. Disa sisteme (si disa baza të dhënash) i trajtojnë shkronjat e mëdha dhe të vogla si ekuivalente, por nëse duhet të ruani në një formë të caktuar (p.sh. JSON që pret shkronja të vogla), kthejeni në atë formë.

Përfshirja e vizave (Include hyphens) – kur çaktivizohen, vizat hiqen dhe UUID shfaqet si një varg 32 karakterësh heksadecimal (p.sh. 550e8400e29b41d4a716446655440000). Kjo është e dobishme për:

  • URL‑të – vargu pa viza është më i shkurtër dhe nuk ka karaktere speciale.
  • Krahasimet ose kërkimet në tekste – nuk keni nevojë të merreni me vizat.
  • Ruajtjen në formate të ngushta – 32 bajtë në vend të 36.

Megjithatë, viza e bën UUID‑në më të lexueshme dhe më të lehtë për t'u kopjuar/ngjitur pa gabime. Standardi RFC 4122 rekomandon formatin me viza për paraqitjen kanonike.

Gjenerimi në shfletues – privatësi dhe shpejtësi

Të gjitha ID‑të gjenerohen tërësisht në shfletuesin tuaj duke përdorur funksionet e integruara kriptografike të JavaScript (si crypto.randomUUID(), e mbështetur në shfletuesit modernë). Asgjë nuk dërgohet në asnjë server. Kjo sjell dy përparësi:

  • Privatësi – nuk ka regjistrim të adresës IP, nuk ka cookie, nuk ka gjurmim të gjenerimeve.
  • Shpejtësi – ID‑të shfaqen menjëherë pa vonesë rrjeti.

Për më tepër, çdo ndryshim në cilësimet (numërimi i ID‑ve, shkronjat e mëdha, vizat) rigjeneron automatikisht listën. Nuk ka nevojë të shtypni një buton "Gjenero". Gjithashtu, mund të kopjoni një ID individuale duke klikuar mbi të, ose të gjitha me një klikim – shiriti i statusit tregon "Kopjuar të gjitha!" ose "Gati." në varësi të gjendjes.

Pyetje të shpeshta (FAQ)

1. A mund të përsëritet një UUID v4? Teorikisht po, por probabiliteti është aq i vogël sa mund të injorohet. Me 2^122 kombinime të mundshme, për të arritur një probabilitet 1% të përplasjes, do t'ju duheshin rreth 2.6 × 10^18 UUID (rreth 2.6 trilionë). Për shumicën e aplikacioneve, kjo nuk është shqetësim.

2. Sa bit rastësi përmban një UUID v4? 122 bit. 6 bita janë fiksuar për versionin dhe variantin. Kjo do të thotë se nga 128 bitat total, vetëm 122 janë të lirë për rastësi.

3. Pse nuk duhet të përdor UUID v4 si çelës primar në SQL? Për shkak të fragmentimit të indeksit. Duke qenë të rastit, futjet e reja shkaktojnë shkrime në faqe të ndryshme të indeksit, duke ngadalësuar performancën e shkrimit dhe duke rritur hapësirën e indeksit. Nëse keni nevojë për shkrim të shpejtë dhe nuk keni kërkesa për paparashikueshmëri, përdorni UUID v7 ose një çelës sekuencial.

4. A ndikon aktivizimi i shkronjave të mëdha në unicitetin e UUID? Jo. a dhe A janë të njëjta në heksadecimal. Uniciteti varet nga bitat, jo nga rasti i shkronjave. Megjithatë, nëse ruani në një sistem që i trajton shkronjat e mëdha dhe të vogla si të ndryshme, sigurohuni që të zgjidhni një formë të qëndrueshme.

5. A gjenerohen UUID‑të në server? Jo. Gjithçka ndodh në shfletuesin tuaj. Asnjë e dhënë nuk dërgohet në internet. Kjo është e rëndësishme për privatësinë dhe për rastet kur nuk keni lidhje interneti.

6. Sa UUID mund të gjeneroj njëherësh? Midis 1 dhe 100. Faqja nuk pranon numra jashtë këtij intervali. Ndryshimi i numrit rigjeneron menjëherë listën.