UUID म्हणजे काय?
UUID (Universally Unique Identifier) एक 128-bit value आहे जी 550e8400-e29b-41d4-a716-446655440000 सारख्या 36-character string म्हणून render केली जाते. Format आणि version semantics v1 ते v5 साठी RFC 4122 द्वारे आणि नवीन v6, v7 आणि v8 versions साठी RFC 9562 द्वारे defined आहेत. हे साधन v4 (पूर्णपणे random), v1 (timestamp plus random node ID) आणि v7 (Unix-millisecond timestamp prefix plus random suffix, generation time नुसार sortable) तयार करते — सर्व तुमच्या ब्राउझरमध्ये, platform च्या Web Crypto API वापरून. कोणताही data server ला पाठवला जात नाही.
UUID generation कसे कार्य करते?
प्रत्येक version determinism, sortability आणि entropy वेगळ्या प्रकारे trade off करतो. साधन तुमच्या निवडीनुसार बरोबर algorithm निवडतो:
- v4 (random) browser च्या
crypto.randomUUID()ला call करतो, जे 122 bits cryptographic randomness सह 6 fixed bits (version0100आणि10variant) बरोबर positions वर set करून return करतो. Collisions astronomically unlikely आहेत — 50% probability ने एकच duplicate मिळवण्यासाठी तुम्हाला सुमारे 2.71 quintillion v4 UUIDs तयार करावे लागतील. - v1 (timestamp + node) 60-bit Gregorian timestamp (1582-10-15 पासून 100-nanosecond ticks)
time_low/time_mid/time_hi_and_versionमध्ये pack करतो, version nibble0001वर सेट करतो, variant bits सेट सह 14-bit clock sequence निवडतो, आणि multicast bit forced on सह random 48-bit node ID वापरतो. - v7 (sortable timestamp), RFC 9562 §5.7 नुसार, 48-bit big-endian Unix-millisecond timestamp, नंतर 4-bit version
0111, नंतर 12 random bits, नंतर 2-bit variant10, नंतर 62 more random bits मांडतो. Timestamp most-significant bits मध्ये असल्याने v7 UUIDs generation order मध्ये lexicographically sort होतात — इतर कोणत्याही UUID version ला extra encoding शिवाय हे property नाही. - सर्व randomness
crypto.getRandomValues()मधून येतो, browser चा cryptographically-secure RNG. v1 आणि v7 दोन्हीत intra-tick monotonic guard आहे त्यामुळे एकाच clock tick मध्ये दोन consecutive calls तरी दुसरे पहिल्यापेक्षा वरचे sort होते — millisecond clock ने race करणाऱ्या bulk generation runs साठी महत्त्वाचे. - Format pipeline generation नंतर चालतो. तुम्ही hyphens strip करू शकता, uppercase वर switch करू शकता, value braces मध्ये गुंडाळू शकता (
{…}— Microsoft GUID convention), किंवा raw 16 bytes base64 म्हणून render करू शकता (22-character output, padding नाही). Base64 mode इतर format options override करतो कारण base64 स्वतःचे representation आहे.
हा UUID generator का वापरावा?
- काहीही तुमचा browser सोडत नाही. Web Crypto API स्थानिक पातळीवर चालतो; initial document load नंतर page शून्य network requests करते. DevTools उघडा, Generate click करा आणि Network panel शांत राहतो.
- RFC-correct output. v4 RFC 4122 §4.4 follow करतो, v1 §4.2 आणि §4.5 follow करतो, आणि v7 RFC 9562 §5.7 follow करतो. Version nibble आणि variant bits standards जेथे सांगतात तेथे ठेवले आहेत — प्रत्येक UUID canonical version regex विरुद्ध validate होतो.
- Database keys साठी sortable v7. Postgres, MySQL किंवा SQL Server मध्ये clustered primary key म्हणून वापरलेला v7 UUID index वर inserts append-only ठेवतो — page splits नाही, random I/O नाही — तरीही globally unique राहतो. v4 हे करू शकत नाही कारण त्याचे bits random आहेत.
- Rate limits शिवाय bulk generation. एकाच वेळी 1, 10, 100 किंवा 1,000 UUIDs तयार करा. Quota नाही आणि signup नाही — साधन तुमच्या tab मध्ये चालते, त्यामुळे cap तुमचा CPU आहे, vendor चा API tier नाही.
UUIDs चे सामान्य उपयोग काय आहेत?
UUIDs सर्वत्र दिसतात जेथे system ला central authority शी coordinate न करता globally-unique identifier आवश्यक आहे:
- Database primary keys. Auto-incrementing integers row counts leak करतात आणि sharding तोडतात. UUIDs shards मध्ये stable आहेत, regions मध्ये merge करणे सुरक्षित आहे, आणि (v7 सह) page splits शिवाय B-tree inserts hot ठेवतात. Typical application UUID client-side तयार करतो, insert मध्ये पाठवतो आणि key साठी कधीच server round-trip करावा लागत नाही.
- Request correlation IDs. HTTP middleware प्रत्येक incoming request ला v4 UUID attach करतो, प्रत्येक span वर log करतो आणि downstream propagate करतो (often as
X-Request-Idheader म्हणून). Customer bug report करतो तेव्हा support engineer ID paste करतो आणि संपूर्ण request trace — services आणि time zones मध्ये — ambiguity शिवाय surface होतो. - Idempotency keys. Payment APIs (Stripe, Razorpay, PayU)
Idempotency-Keyheader स्वीकारतात त्यामुळे retried request customer ला दोनदा charge करत नाही. Client-generated UUID guarantee करतो की key logical operation प्रति unique आहे, जो त्या APIs ला required contract आहे.
UUID उदाहरण कसे दिसते?
Node.js किंवा modern browser मध्ये, one-liner crypto.randomUUID() fresh v4 UUID return करतो — उदाहरणार्थ 3f50b5a8-2c54-4b9c-9c1f-3e5c7e2b8d12. ते request ID किंवा idempotency key साठी वापरा. UUID clustered primary key असणाऱ्या database column मध्ये जात असेल तर त्याऐवजी v7 तयार करा: एक millisecond apart तयार केलेले दोन v7 values, जसे 0190a3b0-7d4f-7c9e-8b21-a4d6f0bd9c11 आणि 0190a3b0-7d50-7f15-9c4e-72b3e0c1d8a4, generation order मध्ये lexicographically sort होतात. Postgres चा uuid type दोन्ही versions एकसारखे store करतो — फरक index-write वेळी दिसतो, जेथे v7 inserts B-tree च्या उजव्या बाजूला append करतात तर v4 inserts scatter करतात आणि random I/O force करतात.
हा UUID Generator एक काम करतो: click ला एक किंवा अनेक RFC-compliant identifiers मध्ये convert करतो, तुम्हाला आवश्यक त्या format मध्ये, तुमची request server ला न पाठवता. Version निवडा, count निवडा, format निवडा — generate करा, copy करा, पुढे जा.