UUID v7 Generator: Abuurista Aqoonsiyada Wakhtiga Ku Salaysan ee Aamin ah
Boggan wuxuu kuu ogolaanayaa inaad abuurto liis UUID v7 ah (1 ilaa 100 gudaha), iyadoo la xusho haddii xarfaha weyn yihiin iyo haddii hyphens lagu daro. Aqoonsiyadaas waxaa laga abuuraa browserkaaga gudahiisa, waxba kuma dirsido BroBroGo. Markaad beddesho mid kasta oo ka mid ah xulashooyinka (tirada, xarfaha weyn, hyphens), liiska waa la cusboonaysiiyaa isla markiiba.
Maxay tahay sababta bogganu u kala duwan yahay
UUID v7 waa nooc ka mid ah aqoonsiyada (identifiers) ee isku daraya wakhti iyo bakhtiyaa. Dhismihiisu waa 128-bit: 48-bit u horreeya waa waqtiga Unix millisecond (tiirarka milliseken ee tan iyo 1970), inta ka hadhayna waa bakhti (random) xoog leh. Sidaa awgeed, UUID v7 waa kala-saarista wakhtiga – marka la abuuro, haddii aad u kala horreysiiso, kuwa hore ayay yihiin kuwa wakhtiga hore leh. Tani waxay xallinaysaa dhibaatada "index locality" ee UUID v4, kaas oo si buuxda u bakhtiya ah, isagoo keenaya kala qaybsanaan iyo tayada yar ee kaydinta B-tree-ga.
Si kastaba ha ahaatee, uma dammaanad qaado in kuwa isla milliseken la abuuro ay si sax ah u kala horreeyaan. Bakhtiga qaybta labaad wuxuu u dhaxeeyaa 12 bits oo qayb ah, marka dhawr UUID v7 oo isku milliseken la abuuro looma kala saari karo iyadoo la isku halaynayo wakhtiga oo kaliya. Tani waa ikhtiyaar looga golleeyahay in la helo waxqabad sare marka la isticmaalayo nidaamyo isbarbar socda (parallel systems).
Qaabka iyo qaybaha UUID v7
UUID v7 waxaa loo qeexay RFC 9562 (kaas oo beddelay RFC 4122). Qaabka qoraalka waa 36-character: 8-4-4-4-12, oo leh hyphens. Tusaale: 018f3e1a-2b7c-7e00-b000-123456789abc.
Qaybaha:
| Tirada xarfaha | Macnaha |
|---|---|
| 8 | 32-bit ugu horreeya (qayb ka mid ah waqtiga Unix millisecond) |
| 4 | 16-bit xiga (waqtiga dheeri ah + qayb variant) |
| 4 | 12-bit + 4-bit (variant + qayb bakhti) |
| 12 | 48-bit bakhti (cryptographically random) |
Marka la isticmaalayo Uppercase toggle, waa la soo saaraa kuwa weyn: 018F3E1A-2B7C-7E00-B000-123456789ABC. Haddii Include hyphens la damiyo, qaabku wuxuu noqonayaa 32-character oo kaliya: 018f3e1a2b7c7e00b000123456789abc. Tani waxay waxtar u leedahay marka aad u baahan tahay qoraal gaaban ama aad ku kaydinayso nidaamka xaddidan.
Maxay muhiim u tahay kala-saarista wakhtiga
Database-ga B-tree index-ka, haddii aad ku darayso diiwaano leh furaha aqoonsi oo aan kala horreysnayn (sida UUID v4), index-ka waa inuu mar walba raadiyo goob cusub oo kaydinta ah. Tani waxay keentaa index fragmentation – index-ku wuu sii kordhaa, oo waa la gaabiyaa waxqabadka gelinta (insert) iyo baadhista (select). Laakiin UUID v7, marka aad diyaarinayso, furaha cusub wuxuu ku yimaadaa cidhifka dambe ee index-ka, sidaa daraadeed gelintu way degdeg badantahay, index-ku wuxuu ahaadaa mid cufan.
Tusaale: Haddii aad isticmaasho UUID v4 oo 1 milyan diiwaan ah, index-ku wuxuu noqon karaa mid la xidhiidha 500+ bog oo kala firdhiyey. UUID v7 wuxuu ku dhow yahay 1-2 bog oo keliya, taasoo keentay in insert-yada ay noqdaan kuwa u dhakhsaha badan 5-10 jeer. Tani waa sababta ay dhismayaasha sida event sourcing, audit trails, iyo messaging systems ay u doorbidaan UUID v7.
Qaabka abuurista browser-ka gudihiisa
Boggan wuxuu u adeegsadaa crypto.getRandomValues() – habka ugu aaminka ah ee browser-ka si loo helo tiro bakhti ah oo adag. Ma jiro server loo dirayo, sidaa daraadeed:
- Privacy: Waxba kuma dirayo shabakadda. Aqoonsiyadu waxay ku soo baxaan browserkaaga oo kaliya.
- Degdeg: Markaad riixdo badhista, dhaliinta waxay dhacdaa milliseken gudihiis.
- Xaddidaadda: Tirada ugu badan waa 100, sababtoo ah ma jiro sabab loo baahan yahay in ka badan 100 hal mar — laakiin waxaad soo celin kartaa jeerka.
Marka la isticmaalayo crypto.getRandomValues(), waxaa la hubinayaa in bakhtiga uu yahay mid aan la saadaalin karin, sidaa daraadeed amaanka aqoonsigu waa mid heerkiisu sarreeyo.
Isticmaalka iyo khaladaadka la iska ilaaliyo
Khaladka ugu weyn ee dadku sameeyaan waa inay isticmaalaan UUID v7 sida kala-saarista saxda ah ee gudaha milliseken. Sidii hore loo sheegay, haddii aad abuurto 100 UUID v7 hal mar, waa suurtagal in dhawr ka mid ah ay isku milliseken la abuuraan. Sidaa daraadeed, haddii aad u baahan tahay kala-saarista saxda ah (strict ordering), waa inaad isticmaashaa ULID ama nooc kale oo leh 48-bit timestamp + 80-bit random, kaasoo xalliya dhibaatada isku milliseken.
Sidoo kale, waa in la xasuustaa in UUID v7 aanu ahayn mid loogu talagalay cryptographic nonce ama session token. In kasta oo bakhtigu yahay mid adag, nidaamka wakhtigu wuu saadaalin karaa. Isticmaalka ugu wanaagsan waa database primary key ama event ID halkaas oo amniga aqoonsigu ku filan yahay.
Marka aad beddesho xulashada hyphens ama uppercase, waa inaad ka warqabtaa in qoraalka cusub uu leeyahay dherer iyo qaab ka duwan. Tusaale ahaan, haddii aad kaydinayso UUID-ga adoo la adeegsanaya hyphens, marka aad damiso hyphens waa inaad cusboonaysiisaa kaydka si aad u ilaaliso joogtaynta.
FAQ
1. Maxaa ka duwan UUID v7 iyo UUID v4? UUID v4 waa bakhti buuxa (128 bits random), marka kala-saaristu waa mid aan wakhti ku salaysnayn. UUID v7 waa 48-bit timestamp + 80-bit random, sidaa daraadeed aqoonsiyadu waa la kala saari karaa wakhtiga abuurista.
2. Ma waa inaan isticmaalaa xarfaha weyn (uppercase)? Xulasho. Qaabka caadiga ah waa xarfaha yaryar (lowercase), laakiin xarfaha weyn waa loo isticmaali karaa haddii aad rabto inay si fiican uga soo baxaan qoraalka. Labadooduba waa kuwa sax ah, laakiin qaar ka mid ah nidaamyada sida Google Cloud waa ay yaqaaniin labadaba.
3. Waa maxay sababta tirada ugu badan tahay 100? Waa xaddid la isku raacay. Haddii aad u baahan tahay in ka badan 100, waxaad soo celin kartaa bogga jeerka. Xaddidku waa mid loogu talagalay in la fududeeyo isticmaalka iyo in laga hortago in browser-ku culeys badanaa.
4. Ma waa inaan damiyo hyphens? Haddii aad u baahan tahay qoraal gaaban oo aan lahayn hyphens (32-character), waa inaad damiso. Laakiin waa inaad ogaataa in qaabka caadiga ah (oo leh hyphens) uu yahay mid u dhigma heerka RFC 9562.
5. UUID v7 ma yahay mid aamin ah oo aan la saadaalin karin? Haa, bakhtiga qaybtiisa rasmiga (80-bit) wuxuu ka yimaadaa crypto.getRandomValues(), taasoo ka dhigaysa mid aan la saadaalin karin. Laakiin waqtigu waa la saadaalin karaa, sidaa daraadeed waa inaan loo isticmaalin sida token-ka ama nonce-ga.
6. Sidee u xaliyaa dhibaatada index fragmentation-ka? Sababtoo ah timestamp-ka ayaa u horreeya, UUID-ga cusub wuxuu u hoggaansamiyaa kala-saarista wakhtiga, sidaa daraadeed index-ka B-tree wuxuu ku dari karaa cidhifka dambe, isagoon u baahnayn inuu dib u habeeyo qaybo badan. Tani waxay yareysaa fragmentation-ka waxayna kordhisaa waxqabadka insert-yada.