UUID v7 forskrift og rauntíma myndun á vefsíðu
UUID v7 er 36 stafa auðkenni sem sameinar tímaröðun og öryggi. Síðan UUID v7 Generator á BroBroGo býr til lista af slíkum auðkennum, frá 1 upp í 100 í einu, með stillanlegu sniði. Notandinn velur fjölda, hvort stafir séu hástafir og hvort bandstrik komi fram. Allt gerist í vafranum, engin gögn sendast til miðlara.
Hvað er UUID v7 og hvernig virkar það?
UUID v7 er sjöunda útgáfan af alþjóðlega staðlinum fyrir auðkenni (RFC 4122). Hvert auðkenni er 128 bitar að stærð, skrifað sem 36 stafa strengur með bandstrikum á stöðluðum stöðum. Einstakt við v7 er að fyrstu 48 bitarnir eru Unix tímastimpill í millisekúndum, en restin (80 bitar) er tilviljunarkennd.
Staðlað snið lítur svona út: 018f3f6a-7b3c-7b3c-9b3c-1b3c7b3c7b3c. Fyrsti hluti (018f3f6a) er tímastimpillinn. Seinni hlutar innihald tilviljunarkennda bita. Þegar kveikt er á hástafastillingu verður úttakið 018F3F6A-7B3C-7B3C-9B3C-1B3C7B3C7B3C.
Síðan notar sterka tilviljunarkennd úr vafranum (Web Crypto API) til að mynda hvern bita. Engin tengsl eru við miðlara, svo myndunin er hrein, hröð og örugg. Enginn utanaðkomandi aðili fær upplýsingar um notkunina.
Tímastimpillinn – ástæðan fyrir röðun
UUID v7 var hannað til að leysa vandamál UUID v4. Í v4 eru allir bitar tilviljunarkenndir. Þegar slík auðkenni eru notuð sem aðallykill í gagnagrunni, dreifast þau um allt gagnasafnið. B-tré (B-tree) gagnagrunnar verða óhagkvæmir vegna þess að nýjar færslur lenda á random stað í trénu. Í v7 myndast hins vegar ný auðkenni í tímaröð, þannig að nýjar færslur bætast við hægri hlið trésins.
Tímastimpillinn er 48 bita Unix millisekúnda tímatal. Það þýðir að hann nær yfir um 8.900 ár frá upphafi Unix-tímans (1970). Í reikniverki nægir þetta fyrir allt sem líklegt er að verði smíðað á næstu áratugum.
Röðunin er þó ekki ströng innan sömu millisekúndu. Ef tvö auðkenni verða til á nákvæmlega sama tíma, ræður slembihlutinn hvoru kemur fyrst. Þetta er mikilvægt atriði fyrir kerfi sem þurfa nákvæmlega tímaröð í hverri millisekúndu.
| Eiginleiki | UUID v4 | UUID v7 |
|---|---|---|
| Tímastimpill | Enginn | 48 bita Unix ms |
| Tilviljunarkenndir bitar | 122 bitar | 80 bitar |
| Röðun | Engin | Tímabundin (ekki ströng innan ms) |
| B-tré frammistaða | Léleg | Góð |
| Lengd | 36 stafir | 36 stafir |
Sama millisekúnda – hvenær skiptir það máli?
UUID v7 tryggir ekki stranga röðun fyrir auðkenni mynduð á sömu millisekúndunni. Ef 100 auðkenni verða til á sömu ms, raðast þau eftir slembihlutanum. Þetta er meðvituð hönnunarákvörðun. Hönnuðir v7 vildu forðast að fórna afköstum eða öryggi fyrir fullkomna röðun.
Fyrir flest forrit skiptir þetta litlu máli. Í gagnagrunni birtast færslur frá sömu ms í handahófskenndri röð, en allar færslur frá mismunandi ms raðast rétt. Ef nákvæm röðun innan ms er krafa, þarf annaðhvort að nota ULID (sem notar fleiri bita fyrir tímaröðun) eða bæta við raðnúmeri utan UUID.
Í kerfum sem senda mörg skilaboð á sekúndu getur þetta verið afslappað. Flest kerfi hafa samt sem áður aðra tímaröðun (t.d. raðnúmer í boðum) sem kemur í veg fyrir rugling.
Af hverju staðbundin myndun í vafranum?
Síðan myndar UUID v7 auðkenni beint í vafra notandans. Engin gögn fara til BroBroGo miðlara. Notandinn getur unnið með auðkennin án nettengingar ef vafrinn hefur hlaðið síðuna.
Staðbundin myndun hefur kosti:
- Næði: Enginn utanaðkomandi aðili sér hvaða auðkenni eru mynduð.
- Hraði: Engin bið eftir neti.
- Öryggi: Engin hætta á að auðkenni leki til miðlara.
- Notagildi: Vafrinn getur myndað allt að 100 auðkenni á augabragði.
Síðan notar Web Crypto API sem veitir sterka tilviljunarkennd. Þetta er sama tækni og notuð er í dulkóðun og öryggissamskiptum.
Stillingar og áhrif þeirra
Síðan býður upp á nokkrar stillingar sem breyta úttakinu samstundis.
Fjöldi (1-100): Notandinn velur hversu mörg auðkenni eigi að mynda. Síðan styður að hámarki 100, en hægt er að mynda fleiri með því að endurtaka ferlið.
Hástafir: Venjulegt UUID skrifast með lágstöfum (018f3f6a-7b3c-...). Með hástafastillingu verða allir bókstafir hástafir (018F3F6A-7B3C-...). Hástafir hafa engin áhrif á tölulegt gildi, en sum forrit og kerfi krefjast ákveðins stafsetningar.
Bandstrik: Hægt er að slökkva á bandstrikum. Þá verður úttakið 018f3f6a7b3c7b3c9b3c1b3c7b3c7b3c. Bandstrik bæta aðeins við lesanleika, en sum forrit (t.d. skráarkerfi) vilja sleppa þeim.
Áhrif stillinga á úttak:
| Stilling | Dæmi um úttak |
|---|---|
| Lágstafir, bandstrik | 018f3f6a-7b3c-7b3c-9b3c-1b3c7b3c7b3c |
| Hástafir, bandstrik | 018F3F6A-7B3C-7B3C-9B3C-1B3C7B3C7B3C |
| Lágstafir, engin bandstrik | 018f3f6a7b3c7b3c9b3c1b3c7b3c7b3c |
| Hástafir, engin bandstrik | 018F3F6A7B3C7B3C9B3C1B3C7B3C7B3C |
Hagnýtar villur sem forritarar gera
-
Gera ráð fyrir ströngri röðun innan ms: UUID v7 tryggir ekki röðun ef tvö auðkenni myndast á sama millisekúndu. Ef nákvæm röðun er krafa, notaðu ULID eða bættu við raðnúmeri.
-
Blanda hástafir og lágstafir í gagnagrunni: SQL gagnagrunnar bera saman strengi eftir stillingum. Ef sum auðkenni eru hástöfum og önnur lágstöfum getur samanburður orðið rangur. Ákveðið eitt snið og haltu því.
-
Vista sem v5 eða v4: UUID v7 er ekki samhæft við eldri útgáfur. Geymið alltaf útgáfunúmerið (7) til að forðast rugling.
-
Nota ekki vísitölu: Þrátt fyrir tímaröðun er samt ráðlegt að búa til vísitölu í gagnagrunni. UUID v7 bætir frammistöðu en gerir vísitölu óþarfa.
-
Treysta á að UUID sé einkvæmt án aðlögunar: V7 notar 80 tilviljunarkennda bita. Líkurnar á árekstri í 1 milljarði auðkenna eru hverfandi, en engu að síður ætti gagnagrunnur að höndla árekstra (nota INSERT... ON CONFLICT).
Hentar fyrir hvaða forrit?
UUID v7 er sérstaklega hentugt fyrir:
- Gagnagrunna með B-tré vísitölum: Tímaröðun dregur úr endurjafnvægi og bætir innsetningarhraða.
- Dreifð kerfi: Þar sem tímaröðun skiptir máli en nákvæm röðun innan ms er ekki nauðsynleg.
- Atburðaskráningu: Auðkenni sem raðast eftir tíma gera það auðveldara að fletta í gegnum atburði.
- API auðkenni: þar sem bæði næði og tímaröðun er krafa.
Síðan á BroBroGo gerir þér kleift að prófa UUID v7 beint. Veldu fjölda, stilltu snið og færðu tilbúin auðkenni strax.
Algengar spurningar
Get ég treyst á að UUID v7 sé einkvæmt?
Já, með 80 tilviljunarkenndum bitum og 48 bita tímastimpli eru líkurnar á árekstri nánast núll. Í reynd er öruggt að nota sem aðallykil í gagnagrunni.
Er UUID v7 hraðvirkara en UUID v4 fyrir gagnagrunna?
Já, vegna tímaröðunar. Nýjar færslur bætast við í lok vísitölunnar, sem dregur úr skiptingu og bætir innsetningarhraða.
Þarf ég að nota vísitölu?
UUID v7 dregur úr vandamálum v4 en vísitala er samt ráðlögð. Vísitala flýtir fyrir leit, en með v7 minnkar ókosturinn við reglubundna endurjöfnun.
Hvers vegna er ekki hægt að mynda meira en 100 auðkenni í einu?
Síðan takmarkar við 100 til að halda notendaviðmóti einföldu. Hægt er að mynda aftur og aftur ef þörf krefur.
Hvað gerist ef ég slekk á bandstrikum?
Bandstrik eru valfrjáls. Sum forrit (t.d. skráarkerfi) vilja sleppa þeim. Tölulegt gildi og einkvæmni breytist ekki.
Er öruggt að mynda UUID v7 í vafranum?
Já, myndunin notar Web Crypto API sem veitir sterka tilviljunarkennd. Engin gögn fara til miðlara og enginn utanaðkomandi aðili sér hvað var búið til.