UUID क्या है?
एक UUID (यूनिवर्सली यूनीक आइडेंटिफ़ायर) 128-बिट का मान है जो 36 अक्षरों की एक स्ट्रिंग के रूप में प्रस्तुत होता है, जैसे 550e8400-e29b-41d4-a716-446655440000। प्रारूप और संस्करण-सिमैंटिक्स v1 से v5 तक के लिए RFC 4122 द्वारा, और नए v6, v7 और v8 के लिए RFC 9562 द्वारा परिभाषित हैं। यह टूल v4 (पूरी तरह यादृच्छिक), v1 (टाइमस्टैम्प + यादृच्छिक नोड ID) और v7 (Unix-मिलीसेकंड टाइमस्टैम्प उपसर्ग + यादृच्छिक सफ़िक्स, जनरेशन समय के अनुसार क्रम में) उत्पन्न करता है — सब कुछ आपके ब्राउज़र में, प्लेटफ़ॉर्म की Web Crypto API का उपयोग करते हुए। कोई डेटा सर्वर पर नहीं भेजा जाता।
UUID जनरेशन कैसे काम करता है?
हर संस्करण नियतत्व, क्रमणीयता और एन्ट्रॉपी में अलग संतुलन रखता है। टूल आपकी पसंद के आधार पर सही एल्गोरिथ्म चुनता है:
- v4 (यादृच्छिक) ब्राउज़र के
crypto.randomUUID()को कॉल करता है, जो 122 बिट क्रिप्टोग्राफ़िक यादृच्छिकता लौटाता है, और 6 निश्चित बिट (संस्करण0100तथा वैरिएंट10) सही स्थानों पर सेट किए जाते हैं। टकराव की संभावना खगोलीय रूप से नगण्य है — एक भी डुप्लिकेट को 50% प्रायिकता पर पाने के लिए लगभग 2.71 क्विंटिलियन v4 UUID उत्पन्न करने पड़ेंगे। - v1 (टाइमस्टैम्प + नोड) 60-बिट का ग्रेगोरियन टाइमस्टैम्प (15-10-1582 से 100-नैनोसेकंड टिक)
time_low/time_mid/time_hi_and_versionमें पैक करता है, संस्करण निबल को0001पर सेट करता है, वैरिएंट बिट्स के साथ 14-बिट क्लॉक अनुक्रम चुनता है, और 48-बिट यादृच्छिक नोड ID का उपयोग करता है जिसमें मल्टीकास्ट बिट जबरन सेट होता है (RFC 4122 §4.5 स्पष्ट रूप से अनुमति देता है कि जब हार्डवेयर MAC उपलब्ध न हो तो यादृच्छिक नोड ID का उपयोग किया जाए — मल्टीकास्ट बिट इसे ग़ैर-MAC के रूप में चिह्नित करता है)। - v7 (क्रमबद्ध टाइमस्टैम्प), RFC 9562 §5.7 के अनुसार, 48-बिट big-endian Unix-मिलीसेकंड टाइमस्टैम्प रखता है, फिर 4-बिट संस्करण
0111, फिर 12 यादृच्छिक बिट्स, फिर 2-बिट वैरिएंट10, फिर 62 और यादृच्छिक बिट्स। चूँकि टाइमस्टैम्प सबसे महत्वपूर्ण बिट्स में है, v7 UUID जनरेशन क्रम में लेक्सिकोग्राफ़िक रूप से क्रमबद्ध हो जाते हैं — एक ऐसी विशेषता जो किसी अन्य UUID संस्करण में अतिरिक्त एन्कोडिंग के बिना नहीं मिलती। - सारी यादृच्छिकता
crypto.getRandomValues()से आती है, यानी ब्राउज़र का क्रिप्टोग्राफ़िक रूप से सुरक्षित RNG। v1 और v7 दोनों में एक intra-tick monotonic गार्ड शामिल है, ताकि एक ही क्लॉक टिक के भीतर दो लगातार कॉल में दूसरी पहले से ऊपर ही क्रमित रहे — मिलीसेकंड घड़ी से तेज़ चलने वाली बल्क जनरेशन के लिए यह महत्वपूर्ण है। - जनरेशन के बाद फ़ॉर्मेट पाइपलाइन चलती है। आप हाइफन हटा सकते हैं, बड़े अक्षरों में बदल सकते हैं, मान को ब्रेसेस में लपेट सकते हैं (
{…}— Microsoft GUID परंपरा), या कच्चे 16 बाइट्स को base64 के रूप में प्रस्तुत कर सकते हैं (22 अक्षर आउटपुट, बिना padding)। base64 मोड अन्य फ़ॉर्मेट विकल्पों को ओवरराइड कर देता है क्योंकि base64 अपने आप में एक अलग प्रतिनिधित्व है।
इस UUID जनरेटर का उपयोग क्यों करें?
- कुछ भी आपके ब्राउज़र से बाहर नहीं जाता। Web Crypto API स्थानीय रूप से चलती है; प्रारंभिक दस्तावेज़ लोड के बाद पेज शून्य नेटवर्क अनुरोध करता है। DevTools खोलें, जनरेट क्लिक करें, और Network पैनल खामोश रहेगा।
- RFC-अनुरूप आउटपुट। v4 RFC 4122 §4.4 का पालन करता है, v1 §4.2 और §4.5 का, और v7 RFC 9562 §5.7 का। संस्करण निबल और वैरिएंट बिट्स वहीं रखे जाते हैं जहाँ मानक कहते हैं — हर UUID संस्करण के मानक रेगेक्स पर खरा उतरता है।
- डेटाबेस कुंजियों के लिए क्रमबद्ध v7। Postgres, MySQL या SQL Server में क्लस्टर्ड प्राइमरी की के रूप में उपयोग किया गया v7 UUID इंडेक्स पर इन्सर्ट को append-only रखता है — कोई पेज स्प्लिट नहीं, कोई रैंडम I/O नहीं — और साथ ही वैश्विक रूप से अद्वितीय बना रहता है। v4 ऐसा नहीं कर सकता क्योंकि उसके बिट्स यादृच्छिक हैं।
- रेट-सीमा के बिना थोक जनरेशन। एक बार में 1, 10, 100 या 1,000 UUID उत्पन्न करें। कोई कोटा नहीं, कोई साइन-अप नहीं — टूल आपके टैब में चलता है, इसलिए सीमा आपकी CPU है, किसी विक्रेता का API प्लान नहीं।
UUID के सामान्य अनुप्रयोग क्या हैं?
UUID वहाँ काम आते हैं जहाँ किसी प्रणाली को बिना केंद्रीय प्राधिकरण से समन्वय किए वैश्विक रूप से अनूठे पहचानकर्ता की ज़रूरत होती है:
- डेटाबेस प्राइमरी की। ऑटो-इन्क्रीमेंट पूर्णांक पंक्ति-संख्या उजागर कर देते हैं और शार्डिंग को तोड़ देते हैं। UUID शार्ड्स के बीच स्थिर हैं, क्षेत्रों के बीच मर्ज करने के लिए सुरक्षित हैं, और (v7 के साथ) पेज स्प्लिट के बिना B-tree इन्सर्ट्स को गर्म बनाए रखते हैं। एक विशिष्ट एप्लिकेशन UUID को क्लाइंट-साइड पर बनाता है, उसे INSERT में भेजता है, और कुंजी के लिए कभी भी सर्वर का राउंड-ट्रिप नहीं करना पड़ता।
- रिक्वेस्ट correlation ID। HTTP मिडलवेयर प्रत्येक आने वाले अनुरोध से एक v4 UUID संलग्न करता है, प्रत्येक span में उसे लॉग करता है, और डाउनस्ट्रीम (अक्सर
X-Request-Idहेडर के रूप में) में प्रसारित करता है। जब ग्राहक बग रिपोर्ट करता है, सपोर्ट इंजीनियर ID पेस्ट करता है और पूरा रिक्वेस्ट ट्रेस — सेवाओं और टाइम ज़ोन के पार — बिना किसी अस्पष्टता के सामने आ जाता है। - इडेम्पोटेंसी कुंजियाँ। भुगतान API (Stripe, Adyen, Square)
Idempotency-Keyहेडर स्वीकार करते हैं ताकि पुनः प्रयास किया गया अनुरोध कभी भी ग्राहक से दो बार शुल्क न ले। क्लाइंट-जनरेटेड UUID सुनिश्चित करता है कि कुंजी प्रति तार्किक ऑपरेशन अद्वितीय है, जो ठीक वही अनुबंध है जिसकी ये API माँग करती हैं।
UUID का उदाहरण कैसा दिखता है?
Node.js या आधुनिक ब्राउज़र में, एक-पंक्ति crypto.randomUUID() एक नया v4 UUID लौटाती है — उदाहरण के लिए 3f50b5a8-2c54-4b9c-9c1f-3e5c7e2b8d12। इसे रिक्वेस्ट ID या इडेम्पोटेंसी कुंजी के लिए उपयोग करें। जब UUID एक डेटाबेस कॉलम में जा रहा है जो क्लस्टर्ड प्राइमरी की होगा, तो v7 उत्पन्न करें: एक मिलीसेकंड के अंतर पर बने दो v7 मान, जैसे 0190a3b0-7d4f-7c9e-8b21-a4d6f0bd9c11 और 0190a3b0-7d50-7f15-9c4e-72b3e0c1d8a4, जनरेशन क्रम में लेक्सिकोग्राफ़िक रूप से क्रमबद्ध होते हैं। Postgres का uuid टाइप दोनों संस्करणों को समान रूप से संग्रहीत करता है — अंतर इंडेक्स-राइट के समय दिखाई देता है, जहाँ v7 इन्सर्ट B-tree के दाहिनी ओर append होते हैं जबकि v4 इन्सर्ट बिखर जाते हैं और रैंडम I/O को मजबूर करते हैं।
यह UUID जनरेटर सिर्फ़ एक काम करता है: एक क्लिक को एक या अनेक RFC-अनुरूप पहचानकर्ताओं में बदल देना, उस प्रारूप में जैसा आप चाहते हैं, बिना आपके अनुरोध को किसी सर्वर पर भेजे। एक संस्करण चुनें, एक संख्या चुनें, एक प्रारूप चुनें — उत्पन्न करें, कॉपी करें, आगे बढ़ें।