UUID v7 Gjeneruesi – Identifikues të Renditur nga Koha dhe të Paparashikueshëm
Ky faqe kthen një listë identifikuesish UUID v7 (36 karaktere) në një interval prej 1 deri në 100, të gjeneruar menjëherë në shfletues dhe të renditur sipas kohës së krijimit. Ndryshe nga UUID v4, i cili është thjesht i rastësishëm dhe ngadalëson indeksimin e bazave të të dhënave, UUID v7 fut një stampë kohore prej 48 bitësh në fillim të çdo identifikuesi, të ndjekur nga bita të rastësishëm. Kjo i bëri identifikuesit të renditur kronologjikisht, duke rregulluar problemin e lokalitetit të indekseve, ndërkohë që mbeten të paparashikueshëm. Përdoruesi zgjedh formatin, numrin (1–100), shfaqjen me shkronja të mëdha (uppercase) dhe përfshirjen e vizave (hyphens). Çdo ndryshim rigjeneron menjëherë listën.
Si funksionon gjenerimi lokal në shfletues
Të gjitha identifikuesit UUID v7 gjenerohen tërësisht brenda shfletuesit duke përdorur funksionet e forta kriptografike të rastësisë (p.sh. crypto.getRandomValues()). Asnjë e dhënë nuk dërgohet në serverin BroBroGo. Kjo ruan privatësinë e përdoruesit dhe e bën mjetin të pavarur nga lidhja e rrjetit pas ngarkimit fillestar. Gjenerimi i çdo përdorimi ndodh në çast – mjafton të ndryshohet numri i identifikuesve ose cilësimet e shfaqjes dhe lista rigjenerohet automatikisht.
Struktura e UUID v7 – stampa kohore plus rastësia
UUID v7 është një format standardizuar i identifikuesve unikë universalë (RFC 9562). Ai përdor 128 bit gjithsej:
- 48 bit – stampa kohore Unix në milisekonda (kjo është pjesa e parë e identifikuesit, e shprehur në heksadecimal).
- 74 bit – bita të rastësishëm (të siguruar nga burimi kriptografik).
- 2 bit – versioni dhe varianti (për UUID v7, versioni 7 dhe variant i caktuar).
Representimi tekstual është një varg 36 karakterësh, i ndarë në pesë grupe me viza: xxxxxxxx-xxxx-7xxx-yxxx-xxxxxxxxxxxx. Këtu x janë heksadecimalë të stampës kohore dhe rastësisë, 7 tregon versionin 7, dhe y përmban bita të variantit (zakonisht 8, 9, a, ose b). Për shembull: 01J0X7K4-8Z9A-7XYZ-8ABC-1234567890AB. Stampa kohore 48-bitëshe lejon renditjen deri në nivelin e milisekondave.
Pse renditja kohore është thelbësore për bazat e të dhënave
Në bazat e të dhënave relacionale, përdorimi i UUID v4 (plotësisht i rastësishëm) për çelësa primarë shkakton fragmentim të indekseve B-Tree. Kur çelësat janë të rastësishëm, të dhënat e reja futen në faqe të ndryshme të indeksit, duke rritur operacionet e ndarjes dhe duke ulur performancën e shkrimit. UUID v7, duke filluar me stampën kohore, vendos çelësat e rinj pranë njëri-tjetrit në indeks, duke përmirësuar lokalitetin dhe duke reduktuar boshllëqet. Kjo është e ngjashme me përdorimin e një sekuence (auto-increment) por pa humbur paparashikueshmërinë.
Megjithatë, UUID v7 nuk garanton renditje strikte për identifikuesit e gjeneruar brenda së njëjtës milisekondë. Në atë rast, rastësia brenda stampës kohore përcakton radhën. Kjo është një zgjedhje e qëllimshme për të lejuar paralelizëm – dy gjenerime në të njëjtin milisekondë nga pajisje të ndryshme mund të kenë renditje arbitrare. Për aplikacionet që kërkojnë renditje të përpiktë të ngjarjeve brenda të njëjtës milisekondë, duhet të shtohet një numër sekuence shtesë.
Dallimi me UUID v4 dhe formate të tjera (ULID, NanoID)
| Format | Gjatësia | Baza e renditjes | Paparashikueshmëri | Përdorimi i stampës kohore |
|---|---|---|---|---|
| UUID v4 | 36 karaktere (128 bit) | Asnjë (plotësisht i rastësishëm) | I lartë | Jo |
| UUID v7 | 36 karaktere (128 bit) | Stampë kohore milisekondë + rastësi | I lartë | 48 bitë në fillim |
| ULID | 26 karaktere (128 bit) | Stampë kohore milisekondë + rastësi (Crockford base32) | I lartë | 48 bitë dhe më pas 80 bitë rastësi |
| NanoID | 21 karaktere (64–128 bit sipas alfabetit) | Jo (rastësor) | I lartë (por më i shkurtër) | Jo |
UUID v7 dhe ULID janë të dy të renditur nga krijimi, por ULID përdor një kodim tjetër (alfabet Crockford) dhe ka gjatësi më të shkurtër në tekst (26 karaktere). UUID v7 ruan përputhshmërinë me standardin UUID dhe shumë mjete ekzistuese (shumica e sistemeve që presin UUID pranojnë format 36 karakterësh). NanoID nuk ka stampë kohore, pra nuk është i renditur.
Si të përdorni mjetin – inputet dhe outputet
Inputet e përdoruesit:
- Format – i parazgjedhur UUID v7 (në këtë faqe, por mjeti mund të ketë edhe formate të tjera për faqe të tjera).
- Count – një numër i plotë nga 1 deri në 100. Përtej 100, kufizimi i faqes nuk lejon.
- Uppercase – një çelës (toggle) për të shfaqur karakteret heksadecimalë në shkronja të mëdha (A–F) në vend të të voglave.
- Include hyphens – një çelës për të përfshirë vizat në format standard apo për t’i hequr (duke e bërë vargun 32 karakterësh).
Outputet:
- Një listë me identifikuesit UUID v7 të gjeneruar, secili i klikueshëm për kopjim individual.
- Një tregues i numrit të identifikuesve të gjeneruar (p.sh. "10 ID").
- Statusi "Ready." në gjendje boshe, "Generated." pas çdo gjenerimi, dhe "Copied all!" kur të gjitha kopjohen në clipboard.
- Një buton për të kopjuar të gjitha ID-të menjëherë në clipboard.
Rregullat:
- Çdo ndryshim i cilësimeve (count, uppercase, hyphens) rigjeneron automatikisht të gjithë listën.
- Identifikuesit individualë kopjohen duke klikuar mbi to.
- Asnjë e dhënë nuk ruhet në server; gjenerimi është tërësisht lokal.
Kush ka nevojë për këtë mjet
- Zhvillues të sistemeve të shpërndara që kanë nevojë për çelësa primarë të renditur kronologjikisht për të përmirësuar lokalitetin e të dhënave në shumë nyje.
- Administratorë bazash të dhënash që duan të shmangin fragmentimin e indekseve të shkaktuar nga UUID v4, veçanërisht në bazat e të dhënave me shkrime intensive.
- Inxhinierë të sigurisë që kërkojnë identifikues të paparashikueshëm që nuk zbulojnë informacion të ndjeshëm (p.sh. renditja nuk zbulon numrin e përdoruesve) por që lejojnë renditjen sipas kohës.
- Kushdo që migron nga UUID v4 në një format të bazuar në kohë për të përmirësuar performancën e futjeve të të dhënave pa sakrifikuar unikalitetin.
Gabime të zakonshme dhe këshilla praktike
- Supozimi i renditjes strikte brenda milisekondës – Siç u përmend, UUID v7 nuk garanton radhëzim të saktë për ID-të e gjeneruara në të njëjtën milisekondë. Nëse kjo është e nevojshme, përdorni një numër sekuence monotonik shtesë (si në Twitter Snowflake) ose një metodë tjetër.
- Përdorimi i vogël/shkronjave të mëdha – Ndryshimi i rastit (uppercase/lowercase) nuk ndikon në vlerën numerike, por mund të krijë probleme në krahasime vargjesh në varësi të sistemit. Standardi UUID rekomandon shkronja të vogla, por shumë mjete pranojnë të dyja.
- Heqja e vizave – Nëse hiqen vizat, identifikuesi bëhet 32 karakterësh heksadecimalë. Kjo kursen hapësirë, por humbet formatimin e lexueshëm. Kur kopjoni në një sistem që pret UUID standard, sigurohuni që të përfshini vizat.
- Gjenerimi i më shumë se 100 ID-ve – Mjeti kufizon në 100 për shkak të thjeshtësisë dhe performancës së shfletuesit. Për më shumë, përsëritni thirrjet ose përdorni një mjet tjetër.
Pyetje të shpeshta (FAQ)
1. Si ndryshon UUID v7 nga ULID? Të dy përdorin stampën kohore 48-bitëshe dhe rastësi, por UUID v7 është 36 karaktere me viza (standardi UUID), ndërsa ULID është 26 karaktere me alfabet Crockford (i cili nuk ka shkronja të mëdha të paqarta). UUID v7 është më i përputhshëm me sistemet ekzistuese që presin UUID.
2. A mund të përdor UUID v7 për të gjeneruar çelësa primarë në PostgreSQL?
Po. PostgreSQL ka një lloj të dhënash uuid që pranon çdo UUID (v4, v7, etj.). Duke përdorur UUID v7, indekset B-Tree do të kenë performancë më të mirë se me v4.
3. Pse ndonjëherë dy ID të gjeneruara në të njëjtën kohë dalin të parregullta? Sepse UUID v7 nuk ka mekanizëm për të garantuar renditjen brenda së njëjtës milisekondë. Renditja e tyre varet nga bitat e rastësishëm pas stampës kohore. Kjo është e pritshme dhe nuk është defekt.
4. A janë të sigurta nga ana kriptografike këto ID?
Po. Pjesa e rastësishme (74 bit) gjenerohet nga burimi kriptografik i shfletuesit (getRandomValues). Kjo e bën të pamundur parashikimin e ID-ve të ardhshme pa ditur gjendjen e gjeneratorit.
5. Çfarë ndodh nëse e vendos count në 0? Mjeti lejon vetëm numra midis 1 dhe 100. Nëse futet 0, nuk do të gjenerohet asnjë ID.
6. A mund të kopjoj të gjitha ID-të menjëherë? Po, faqja ka një buton "Copy All" që kopjon të gjithë listën në clipboard. Statusi tregon "Copied all!". Gjithashtu, çdo ID individuale mund të kopjohet duke klikuar mbi të.