Tagabuo ng UUID v7

Bumuo ng mga UUID v7 value online: mga UUID na maaaring i-sort ayon sa oras na may 48-bit millisecond timestamp at 74 random bits.

Format
Mga Na-generate na ID
Handa na po. Bumuo ng mga UUID v7 value sa inyong browser.

Paano binuo ang ID na ito

Layout
48-bit Unix millisecond timestamp, bersyon 7 bits, RFC variant bits, at random fill.
Entropy
74 random bits sa pagpapatupad na ito; walang monotonic counter.
Oras
Opo. Ang unang 48 bits ay nag-e-encode ng oras ng paglikha, kaya ang mga ID ay nai-sort ayon sa oras sa iba't ibang millisecond.
Panganib ng collision
Sa loob ng isang millisecond, ang mga collision ay nakadepende sa 74 random bits; para sa napakaraming ID sa parehong millisecond, mas mabuting gumamit ng coordinated ID service.
Halimbawa
01a044bc-5993-7260-b426-05e39c32f21a

Ang inyong mga ID ay ginagawa nang lokal gamit ang matibay na browser randomness. Walang ipinapadala sa BroBroGo.

Mga Madalas Itanong (FAQ)

Bakit po pipiliin ang UUID v7 sa halip na UUID v4?

Pinapanatili ng UUID v7 ang anyo ng UUID ngunit iniaayos ito ayon sa oras, na makatutulong sa mga log, database index, at event stream na manatiling sunod-sunod ayon sa panahon.

Itinatago po ba ng UUID v7 ang oras ng paglikha?

Hindi po. Ang timestamp ay bahagi ng ID. Gamitin ang UUID v4 o NanoID kung kailangan niyo ng opaque identifier na walang data ng oras.

Ano ang UUID v7?

Ang UUID v7 ay isang natatanging identifier na may 128 bits (36 na karakter sa tekstong representasyon) na idinisenyo upang pagsamahin ang kakayahang ma-time-sorted at ang cryptographic unpredictability. Ang pangunahing inobasyon nito kumpara sa mas lumang UUID v4 ay ang pagkakaroon ng naka-embed na 48-bit na Unix millisecond timestamp sa simula ng bawat ID. Ibig sabihin, ang unang anim na karakter (sa hex) ng UUID v7 ay direktang kumakatawan sa milliseconds mula noong epoch ng Unix (January 1, 1970 UTC). Ang natitirang 80 bits ay random, na ginagawang halos imposibleng hulaan ang susunod na ID kahit alam mo ang timestamp.

Mukha itong ganito: 018f3a6e-5c7b-7a00-b000-123456789abc. Pansinin na ang unang walong karakter (018f3a6e) ay naglalaman ng timestamp; ang susunod na apat (5c7b) ay may version bits (7 para sa v7) at variant bits; at ang huling 24 na character ay random. Sa bawat UUID v7, ang timestamp ay nakasalalay sa oras ng pagkakabuo ng ID, kaya kung gagawa ka ng dalawang ID na may agwat na isang millisecond, ang unang ID ay magkakaroon ng mas maliit na numeric value sa simula.

Ang format na ito ay inilabas bilang bahagi ng RFC 9562, na pinapalitan ang mas lumang RFC 4122. Hindi tulad ng ULID o NanoID, ang UUID v7 ay sumusunod sa pamantayang 36-character na pattern na may apat na hyphen (8-4-4-4-12). Ang tool na ito ay nagbibigay-daan sa iyo na i-toggle ang hyphen at i-uppercase ang mga letra, ngunit ang pangunahing istraktura ay laging pareho: 128 bits na naka-encode sa hex.

Paano gumagana ang UUID v7 generator na ito

Ang page ay humihingi lamang ng tatlong input: ang bilang ng IDs na gusto mo (1 hanggang 100), kung gusto mo ng uppercase, at kung gusto mo ng hyphen. Sa sandali na baguhin mo ang alinman sa mga opsyon, agad itong bumubuo ng bagong listahan ng IDs. Walang pindutang “Generate” — ang regeneration ay instant at lokal.

Ang bawat ID ay nilikha sa loob ng iyong browser gamit ang cryptographically strong random number generator (Crypto.getRandomValues). Walang kahit anong data na ipinadadala sa server ng BroBroGo. Kapag pinili mo ang count na 5, makakakita ka ng limang magkakaibang UUID v7 na naka-display bilang mga indibidwal na string. Ang bawat isa ay maaaring i-click upang kopyahin ito sa clipboard, o maaari mong pindutin ang “Kopyahin lahat” upang kopyahin ang buong listahan sa iisang pagkilos. Pagkatapos ng pagkopya, lalabas ang mensaheng “Copied all!”.

Ang status bar ay nagpapakita ng “Ready.” kapag idle, at “Generated.” pagkatapos ng bawat bagong pagbuo. Ang bilang ng IDs ay laging nakikita (hal. “5 IDs”). Mahalaga: ang anumang pagbabago sa mga setting ay nag-trigger ng bagong generation — kung babaguhin mo ang uppercase mula off to on, lahat ng IDs ay mapapalitan ng bagong random values. Hindi lang i-aapply ang uppercase sa lumang listahan. Ito ay dahil ang tool ay idinisenyo upang maging deterministic sa bawat pagbabago ng option, at hindi ito nagse-save ng nakaraang estado.

Bakit mahalaga ang time‑based sorting para sa mga database

Ang UUID v4 ay gumagamit ng 122 bits ng pure randomness (plus 6 bits para sa version/variant). Kapag ginamit bilang primary key sa isang B-tree index, ang random na pagkakasunod-sunod ng mga v4 ID ay nagiging sanhi ng malaking pagkasira ng performance: ang bawat bagong insert ay kailangang ilagay sa random na posisyon sa puno, na nagdudulot ng madalas na page splits at pagtaas ng paggamit ng disk I/O. Sa mga distributed system, ang problema ay lalo pang lumalala dahil sa mga distributed ID generators na walang sentral na orasan.

Ang UUID v7 ay nag-aayos ng index locality sa pamamagitan ng pag-embed ng timestamp. Kapag ang mga ID ay nilikha sa magkakasunod na oras (kahit sa iba't ibang makina na may naka-sync na orasan), ang mga ito ay magkakaroon ng malapit na pagkakasunod-sunod sa B-tree. Halimbawa, kung mag-insert ka ng 1,000 records sa loob ng isang segundo, ang kanilang UUID v7 prefix ay magkakaiba lamang ng kaunting bits, kaya ang B-tree ay maaaring magdagdag ng mga bagong entry malapit sa kanang dulo ng puno. Ibinababa nito ang bilang ng page splits at pinapabuti ang insert throughput nang malaki — sa ilang pag-aaral, hanggang 10 beses na mas mabilis kaysa sa UUID v4 para sa bulk inserts.

Gayunpaman, ang UUID v7 ay may isang caveat: hindi nito ginagarantiyahan ang strict ordering para sa mga ID na nabuo sa parehong millisecond. Dahil ang timestamp ay millisecond granularity, ang lahat ng ID na nilikha sa loob ng isang millisecond ay may parehong timestamp prefix. Ang pagkakasunod-sunod sa pagitan ng mga ito ay batay lamang sa random bits, kaya hindi mo maaasahan na ang unang ID na nilikha sa loob ng parehong millisecond ay may mas maliit na kabuuang halaga kaysa sa pangalawa. Kung kailangan ng fine-grained chronological order, dapat kang gumamit ng format na may mas mataas na temporal resolution (tulad ng ULID na may millisecond precision din, o Snowflake na may sequence number). Ngunit para sa karamihan ng mga application, ang millisecond-level grouping ay sapat na para sa index locality.

Mga limitasyon at edge cases na dapat malaman

Ang tool ay sumusuporta lamang sa count mula 1 hanggang 100. Ito ay isang praktikal na limitasyon upang maiwasan ang pag-overload sa interface at upang panatilihing mabilis ang pag-render. Kung kailangan mo ng libu-libong IDs, kailangan mong gumawa ng maraming batches o gumamit ng server-side library.

Kapag pinili mo ang “Include hyphens: off”, ang output ay magiging isang 32-character hex string na walang hyphen. Tandaan na ang UUID v7 ay technically defined na may hyphens ng RFC 9562. Ang pag-alis ng hyphens ay hindi nagbabago sa binary content, ngunit ginagawa nitong hindi na ito sumusunod sa karaniwang UUID format. Kung plano mong i-imbak ang ID sa isang database, mas mainam na panatilihin ang hyphens para sa interoperability o gumamit ng BINARY(16) na storage na hindi na nangangailangan ng textual representation.

Ang uppercase toggle ay nagpapalit lamang ng case ng hex digits. Ang UUID v7 ay case-insensitive sa paggamit, ngunit ang convention ay lowercase. Ang ilang sistema (tulad ng AWS) ay gumagamit ng uppercase sa kanilang mga UUID. Ang pagpili ay hindi nakakaapekto sa uniqueness o sa binary value.

Tungkol sa collision: Ang UUID v7 ay may 122 bits ng randomness pagkatapos ng timestamp (ang 48-bit timestamp ay hindi random). Ibig sabihin, kahit na libu-libong IDs ang gawin bawat millisecond, ang posibilidad ng collision ay napakababa. Sa mas tiyak na termino, ang panganib ay katumbas ng UUID v4 para sa mga ID na may parehong timestamp. Ang tool ay gumagamit ng crypto.getRandomValues na pinagkukunan ng tunay na random na bits mula sa operating system, kaya walang deterministikong pattern.

Paghahambing sa ULID at iba pang format

Ang ULID (Universally Unique Lexicographically Sortable Identifier) ay isang katulad na format na may 26-character Crockford Base32 encoding. Gumagamit din ito ng 48-bit millisecond timestamp, ngunit ang randomness ay 80 bits lamang (vs 74 random bits sa v7 dahil sa variant bits). Ang ULID ay nag-aalok ng mas magandang legibility sa pamamagitan ng pag-iwas sa mga ambiguous character (walang I, L, O, U). Gayunpaman, ang UUID v7 ay nakakakuha ng mas malawak na suporta sa mga pamantayan at library dahil ito ay isang open standard mula sa IETF.

Ang UUID v4 ay may 122 bits ng randomness at walang anumang temporal na kaayusan. Ang NanoID ay mas maikli (21 characters gamit ang 64-character alphabet) at mas flexible, ngunit hindi ito naka-standardize at hindi ito time-sortable.

Para sa mga developer na nangangailangan ng chronologically sortable IDs na may malawak na compatibility, ang UUID v7 ang pinakaligtas na pagpipilian. Ang tool na ito ay partikular na kapaki-pakinabang para sa pagsubok: halimbawa, maaari kang bumuo ng 50 UUID v7, i-copy ang mga ito, at i-paste sa isang SQL INSERT statement. Dahil ang mga ito ay magkakasunod ayon sa timestamp (maliban sa parehong millisecond), ang index performance ay mas maganda.

Seguridad at privacy

Isa sa mga pinakamahalagang tampok ng tool na ito ay ang lahat ng pagbuo ay ginagawa sa loob ng iyong browser. Walang HTTP request na ipinapadala sa server ng BroBroGo, kaya walang paraan na ma-record o ma-intercept ang iyong mga UUID. Ito ay kritikal para sa mga application na gumagamit ng UUIDs bilang secret tokens (bagaman hindi inirerekomenda ang UUIDs para sa tunay na secret keys dahil sa predictable timestamp). Ginagamit ng tool ang Web Cryptography API upang makakuha ng mga random na bytes. Ang crypto.getRandomValues ay itinuturing na cryptographically strong at pinapagana ng operating system's entropy source (tulad ng /dev/urandom sa Linux o ang CryptoAPI sa Windows).

Walang storage ng cookies, walang local storage ng generated IDs, at walang analytics tracking. Ang tanging "state" na iniimbak ng page ay ang kasalukuyang mga setting (count, uppercase, hyphen) sa browser's memory — kapag nireload mo ang page, babalik ito sa default. Kung kailangan mong i-save ang isang listahan ng UUIDs, kailangan mong kopyahin ito nang manu-mano o i-export sa pamamagitan ng browser copy.

FAQ

1. Pwede bang gamitin ang UUID v7 bilang primary key sa anumang database? Oo, ngunit tandaan na ang timestamp ay naka-embed, kaya kung ang iyong database ay gumagamit ng B-tree index (tulad ng MySQL InnoDB o PostgreSQL), makakakuha ka ng mas magandang insert performance kumpara sa UUID v4. Kung ang database ay sumusuporta sa UUID type, mas mainam ito kaysa sa pag-imbak bilang string.

**2. Bakit 36 characters ang UUID v7? Dahil sa 128 bits na nahahati sa 16 bytes, kada byte ay dalawang hex digit. Ang apat na hyphen ay dagdag: 32 hex digits + 4 hyphens = 36. Kung aalisin ang hyphen, magiging 32 characters.

3. Pareho ba ang UUID v7 at ULID? Hindi. May magkaibang encoding (hex vs Base32) at magkaibang standard. Ang UUID v7 ay may 128 bits; ang ULID ay may 128 bits din pero gumagamit ng mas compact na representasyon. Ang UUID v7 ay mas malawak na sinusuportahan ng mga library.

4. Bakit hindi guarantee ang strict ordering sa parehong millisecond? Kasi ang timestamp ay may resolution na isang millisecond lamang. Lahat ng ID na nabuo sa loob ng iisang millisecond ay may parehong timestamp prefix. Ang pagkakasunod-sunod sa pagitan nila ay random. Kung kailangan mo ng fine-grained order, maaaring gumamit ng sequence number sa loob ng timestamp.

5. Gaano kaligtas ang random part ng UUID v7? Ang random bits ay 74 bits (dahil ang 6 bits ay ginagamit para sa version at variant). Sa 2^74 na posibilidad, ang collision probability ay napakaliit. Gamit ang birthday paradox, kailangan mo ng humigit-kumulang 2^37 (mga 137 bilyon) IDs para magkaroon ng 50% chance ng isang collision.

6. Pwede bang gamitin ang tool offline? Kung na-load mo na ang page, oo. Ang buong logic ay nasa client-side JavaScript. Walang kinakailangang koneksyon sa internet para sa generation. Ngunit kung magreload ka ng page, kailangan mo ng internet para makuha ang HTML/CSS/JS mula sa server.

7. Bakit may limitasyon na 100 IDs? Upang mapanatiling mabilis ang UI at maiwasan ang pag-freeze ng browser. Ang pagbuo ng 100 UUID v7 ay mabilis (dahil local lang), ngunit ang pag-render ng mahabang listahan sa DOM ay maaaring maging mabagal kung walang limit. Kung kailangan mo ng higit pa, mag-generate ka ng maraming batch.