UUID v7 generaator

Genereerige UUID v7 väärtusi veebis: ajaliselt sorditavad UUID-d 48-bitise millisekundite ajamärgise ja 74 juhusliku bitiga.

Vorming
Genereeritud ID-d
Valmis. Genereerige UUID v7 väärtusi otse oma brauseris.

Kuidas see ID on üles ehitatud

Struktuur
48-bitine Unixi millisekundite ajamärgis, versiooni 7 bitid, RFC variandi bitid ja juhuslik täide.
Entroopia
Selles teostuses 74 juhuslikku bitti; monotoonset loendurit ei kasutata.
Aeg
Jah. Esimesed 48 bitti kodeerivad loomisaega, seega sorditakse ID-d aja järgi ka üle erinevate millisekundite.
Kollisioonirisk
Ühe millisekundi sees sõltub kollisioonirisk 74 juhuslikust bitist; äärmiselt suure mahu korral samal millisekundil tuleks kasutada koordineeritud ID-teenust.
Näide
01a044bc-594e-704b-b5ab-3b780527f562

Teie ID-d genereeritakse kohapeal tugeva brauseri juhuslikkuse abil. BroBroGo serverisse midagi ei saadeta.

KKK

Miks valida UUID v7 asemel UUID v4?

UUID v7 säilitab UUID kuju, kuid sordib aja järgi, mis aitab hoida logisid, andmebaasi indekseid ja sündmuste vooge ligikaudu kronoloogilisena.

Kas UUID v7 peidab loomise aja?

Ei. Ajamärgis on osa ID-st. Kui vajate ilma ajateabeta läbipaistmatut identifikaatorit, kasutage UUID v4 või NanoID-d.

UUID v7 identifikaatorite generaator – ajapõhine ja turvaline

UUID v7 (Universally Unique Identifier version 7) on identifikaatoriformaat, mis paigutab iga ID algusesse 48‑bitise Unixi millisekundilise ajatempli ja lisab sellele juhuslikke bitte. Tulemuseks on 36‑tähemärgiline sõne, mis on kronoloogiliselt sorteeritav loomisaja järgi, kuid jääb krüptograafiliselt arvamatuks. See leht võimaldab teil ühe klõpsuga genereerida 1 kuni 100 UUID v7 identifikaatorit, kohandades nende suurtähelisust ja sidekriipsude olemasolu.

Erinevalt UUID v4‑st, kus kõik 128 bitti on juhuslikud, kasutab v7 ajapõhist struktuuri, mis vähendab andmebaaside indeksite killustumist ja parandab B‑puu sisestusjõudlust. Kuna ID‑d luuakse kohalikus brauseris tugeva juhuslikkuse abil, ei edastata midagi BroBroGo serverisse – kogu töö tehakse teie seadmes.


UUID v7 struktuur ja standard

UUID v7 põhineb IETF standardil RFC 9562, mis defineerib versiooni 7 aja‑ ja juhuslike bittide kombinatsioonina. 128‑bitine väli jaguneb järgmiselt:

  • 48 bitti – Unixi millisekundite arv alates 1. jaanuarist 1970 (Epoch). See võimaldab kuni 8,9 miljoni aasta ulatuses unikaalseid ajatempleid.
  • 4 bitti – versioon (0111 binaaris, ehk number 7).
  • 2 bitti – variandi identifikaator (10, mis vastab RFC 4122 variandile).
  • ülejäänud 74 bitti – juhuslikud või pseudojuhuslikud bitid, mis tagavad unikaalsuse sama millisekundi jooksul.

Sõne kujutisel (36 tähemärki) on ajatempel esimesed 8 tähemärki (heksadekaalne ajatempel), millele järgneb sidekriips, seejärel 4 tähemärki juhuslikke bitte, teine sidekriips, 4 tähemärki, kolmas sidekriips, 4 tähemärki, viimane sidekriips ja 12 tähemärki. Kui sidekriipsud eemaldada, saame 32‑tähemärgilise heksasõne.

Näidis UUID v7 (tavakujul): 018f3a6e-1234-7abc-def0-123456789abc
Esimesed 8 tähemärki (018f3a6e) on ajatempel heksadekaalvormingus – see vastab kindlale Unixi millisekundile. Sellele järgnev 7 näitab versiooni 7.

Kui genereerite lehel mitu ID‑d samal millisekundil, on nende ajatempli osa identne, kuid juhuslik osa erineb. See tähendab, et sama millisekundi piires pole garanteeritud ranget järjestust – v7 ei anna samas millisekundis loodud ID‑dele kindlat sortimisjärjestust. See on oluline piirang, millest praktikas teadlik olla.


Kuidas generaator töötab?

Leht kuvab lihtsa kasutajaliidese, kus saate määrata:

  • Formaat – UUID v7 on valitud.
  • Kogus – täisarv vahemikus 1 kuni 100. Vaikeväärtus on 1.
  • Suurtähed – lüliti, mis muudab kõik tähed suureks (nt 018F3A6E-...). Vaikimisi on väiketähed.
  • Sidekriipsud – lüliti, mis lisab või eemaldab sidekriipsud (nt 018f3a6e12347abcdef0123456789abc). Vaikimisi on sidekriipsud sees.

Iga valiku muutmine käivitab kohese regeneratsiooni – kõik ID‑d luuakse uuesti vastavalt uutele tingimustele. See tähendab, et kui lülitate sisse suurtähed, muutuvad ka eelnevalt kuvatud ID‑d korraga uuteks. Seega saate alati värske komplekti.

Genereerimisel kasutatakse brauseri crypto.getRandomValues() API‑t, mis annab tugevalt juhuslikke baite. See on krüptograafiliselt piisav ning tagab, et ükski ID ei ole etteaimatav isegi siis, kui teate ajatempli väärtust.

Kui olete ID‑d loonud, saate:

  • klõpsata üksikul ID‑l, et selle sisu kopeerida lõikelauale;
  • klõpsata nupul „Kopeeri kõik”, et kopeerida kogu loend korraga.
  • Pärast kopeerimist kuvatakse olek „Copied all!” („Kõik kopeeritud!”). Tavalisel ajal on olek „Ready.” („Valmis.”) või „Generated.” („Genereeritud.”).

Miks ajapõhine sorteerimine andmebaaside jaoks oluline?

Andmebaaside indeksid, eriti B‑puud, töötavad kõige tõhusamalt siis, kui uued võtmed on monotoonselt kasvavad. UUID v4 juhuslikud võtmed põhjustavad pidevaid lehekülgede lõhenemisi ja indeksite ümberkorraldamisi, mis aeglustab sisestamist ja suurendab kettaruumi kasutust.

UUID v7 ajatempel asub ID alguses, nii et ID‑d sisestatakse ajalises järjekorras B‑puusse. See vähendab indeksi lehekülgede killustumist ja hoiab puu tasakaalus. Tulemuseks on kuni kümme korda kiiremad sisestused mahukates süsteemides, kus luuakse miljardeid kirjeid.

Distribueeritud süsteemides (nagu sündmuste allikad, sõnumijärjekorrad, audit logid) on võimalus ID‑de järjestamine loomisaja järgi ilma aja veergu indekseerimata suur eelis. Piisab UUID v7 primaarvõtmest klastri või jaotuse võtmena.


Võrdlus teiste formaatidega

Siin on võrdlus, mis põhineb standardsetel omadustel:

Formaat Ajapõhine? Tähemärkide arv (tavaline) Krüptograafiline juhuslikkus Sorteeritavus
UUID v4 Ei 36 Jah Puudub
UUID v7 Jah 36 Jah Sama millisekundi piires mitte range
ULID Jah 26 (Crockford base32) Jah Sama millisekundi piires range (Crockford järjestus)
NanoID Ei 21 (vaikimisi) Jah Puudub
  • UUID v4 – täiesti juhuslik, 36 tähemärki. Ideaalne siis, kui järjestus ei ole oluline ja indeksite killustumine on talutav. Praktikas aga põhjustab see pikemas perspektiivis jõudlusprobleeme.
  • UUID v7 – sarnane v4‑ga kirjavahemärkide osas, kuid esimesed märgid on ajatempel. Sama millisekundi piires ei garanteeri täpset järjekorda, kuid ID‑d on siiski ajalises plokis. See on eelistatud valik paljudele kaasaegsetele PostgresSQL ja MySQL rakendustele.
  • ULID – 26‑tähemärgiline, kasutab Crockfordi base32 (suurtähed, v.a I L O U). Sellel on range järjestus sama millisekundi piires tänu täiendavale juhuslikkuse bitijärjekorrale. Kuid ULID ei ole RFC standard ega tööta natiivselt kõigi andmebaaside UUID tüüpidega.
  • NanoID – lühike ja juhuslik, vaikimisi 21 tähemärki. Sobib URL‑idele ja väikesemahulistele süsteemidele, kuid ajalist sorteeritavust pole.

UUID v7 lehel on valitud just v7, sest see sobib sujuvamalt andmebaaside UUID kolonnidega (tavaliselt 36‑tähemärgilised) ja on soovitatud kaasaegsetes arendusjuhendites (nt PostgreSQL RFC 9562 toetus).


Võimalikud lõksud ja piirangud

  1. Sama millisekundi ID‑de järjestus pole garanteeritud – kui loote generaatoris mitu ID‑d samal millisekundil (tavaline, kuna klõpsate korraga), võivad need kuvatud loendis olla suvalises järjekorras, kuna juhuslikud bitid ei ole timestamipõhised. See on standardi omadus, mitte viga. Kui vajate ranget järjestust, kaaluge ULIDi või isejärjestatava ajatempli lisamist.

  2. Koguse piirang 1–100 – generaator ei võimalda korraga luua rohkem kui 100 ID‑d. Suuremate partii loomiseks tuleb klõpsata mitu korda või kasutada skripti. Piirang on tahtlik, et hoida kasutajaliides reageerivana ega tekiks jõudlusprobleeme.

  3. Suurtähed ja sidekriipsud mõjutavad salvestusruumi – kui salvestate UUID v7 stringina andmebaasi, pöörake tähelepanu kodeeringule. Suurtähed võivad olla mõnes süsteemis probleemiks (nt Windowsi failisüsteemid). Sidekriipsude eemaldamine vähendab sõne pikkust 32 tähemärgini, kuid paljud andmebaasiraamistikud ootavad 36‑märgilist kuju koos sidekriipsudega.

  4. Brauseri juhuslikkuscrypto.getRandomValues() on tugev ja turvaline, kuid mõned vanemad brauserid seda ei toeta. Generaator eeldab kaasaegset veebilehitsejat (Chrome, Firefox, Safari, Edge). Kui teie brauser ei toeta, ei pruugi ID‑d looda.

  5. ID‑d ei ole salvestatud – generaator ei salvesta loodud ID‑sid. Kui sulgete lehe või vajutate uuesti genereerimisnuppu, kaovad eelnevad ID‑d. Kopeerige need enne muudatuste tegemist.


KKK (Korduma kippuvad küsimused)

1. Mis vahe on UUID v7 ja UUID v4 vahel praktikas?
V7 lisab ajatempli, v4 on täiesti juhuslik. V7 ID‑d on sorteeritavad loomisaja järgi ja vähendavad andmebaasi indeksi killustumist. Mõlemad on 36 tähemärki ja krüptograafiliselt juhuslikud järelosas.

2. Kas ma saan UUID v7 ID‑sid kasutada primaarvõtmena MySQL või PostgreSQL andmebaasis?
Jah. PostgreSQL 16+ toetab natiivselt RFC 9562 UUID tüüpi, sh v7. MySQL puhul saate hoida ID‑d CHAR(36) või BINARY(16) kujul. Ajapõhine struktuur parandab sisestusjõudlust.

3. Miks ei garanteeri UUID v7 täpset järjestust sama millisekundi piires?
Standard määrab, et ajatemplile järgnevad juhuslikud bitid ei ole sorteerimise aluseks. Erinevalt ULID‑ist, mis kasutab ranget monotoonsust täiendava loenduri abil, jätab v7 ruumi paralleelsusele ja juhuslikkusele. See on meelega, et vältida ühe millisekundi piires järjekorra ennustamist.

4. Kas generaator saadab mu ID‑d BroBroGo serverisse?
Ei. Kõik arvutused tehakse kohalikus brauseris. Ühtegi ID‑d ega andmeid ei edastata. Lehekülg töötab täiesti iseseisvalt.

5. Mida teha, kui vajan rohkem kui 100 ID‑d korraga?
Genereerige mitu korda või kirjutage lihtne skript, mis kasutab brauseri konsoolis crypto.getRandomValues() ja RFC 9562 loogikat. Selle lehe liides on mõeldud kiireks manuaalseks kasutamiseks.

6. Kas ma saan kopeeritud ID‑sid hiljem uuesti kätte?
Ei, kui leht suletakse või värskendatakse, ID‑d kaovad. Salvestage need kohe pärast genereerimist soovitud kohta.