UUID v4 जनरेटर: पूर्ण संदर्भ लेख
UUID v4 क्या है और यह पेज कैसे काम करता है
यह पृष्ठ UUID v4 आइडेंटिफ़ायर उत्पन्न करता है—36 वर्णों की यादृच्छिक स्ट्रिंग्स, जो मानक 8-4-4-4-12 हेक्स फ़ॉर्मेट में होती हैं। आप नियंत्रित कर सकते हैं कि कितने ID चाहिए (1 से 100 तक), और वे अपरकेस में दिखें या हाइफ़न के साथ। सारी पीढ़ी आपके ब्राउज़र में तुरंत होती है, मज़बूत ब्राउज़र रैंडमनेस का उपयोग करके। आप एकल ID या सभी ID को एक साथ कॉपी कर सकते हैं।
UUID v4 में 122 बिट रैंडमनेस होती है, जिसमें कोई एम्बेडेड टाइमस्टैम्प नहीं होता। इसका मतलब है कि प्रत्येक मान पूरी तरह से अप्रत्याशित है, और टकराव (collision) की संभावना नगण्य है। UUID v7 या ULID के विपरीत, v4 ID किसी भी क्रम में सॉर्ट होती हैं—वे कोई अस्थायी जानकारी नहीं रखतीं, जो डेटाबेस प्राइमरी की के रूप में उपयोग करने पर इंडेक्स को खंडित कर सकती हैं।
यह पेज आपको अपरकेस और हाइफ़न टॉगल करने देता है, लेकिन आंतरिक रैंडमनेस और फ़ॉर्मेट निश्चित है। डिफ़ॉल्ट आउटपुट लोअरकेस और हाइफ़न के साथ होता है। कोई भी विकल्प बदलने पर पूरा सेट पुनः उत्पन्न होता है।
UUID v4 की संरचना और तकनीकी विनिर्देश
UUID v4, RFC 4122 द्वारा परिभाषित एक मानक है। यह 128 बिट का होता है, जिसमें से 122 बिट पूरी तरह से यादृच्छिक होते हैं। शेष 6 बिट संस्करण (4) और वैरिएंट (10xx) को इंगित करने के लिए निश्चित होते हैं।
फ़ॉर्मेट इस प्रकार है: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
यहाँ:
xकोई भी हेक्स अंक (0-9, a-f) है4संस्करण बिट्स को दर्शाता हैyवैरिएंट बिट्स (8, 9, a, या b में से एक) को दर्शाता है
इस प्रकार, 32 हेक्स अंकों में से, 30 पूरी तरह से यादृच्छिक होते हैं, और 2 निश्चित होते हैं। हाइफ़न केवल पठनीयता के लिए होते हैं।
जब आप हाइफ़न शामिल नहीं करते, तो आउटपुट 32 हेक्स अंकों की एक सतत स्ट्रिंग होती है, जैसे 550e8400e29b41d4a716446655440000। अपरकेस टॉगल करने पर, सभी हेक्स अंक बड़े अक्षरों में बदल जाते हैं, जैसे 550E8400-E29B-41D4-A716-446655440000।
ब्राउज़र-आधारित रैंडमनेस: सुरक्षा और गोपनीयता
यह पृष्ठ crypto.getRandomValues() API का उपयोग करता है, जो ऑपरेटिंग सिस्टम के क्रिप्टोग्राफ़िक स्यूडोरैंडम नंबर जनरेटर (CSPRNG) पर निर्भर करता है। यह वही API है जो HTTPS कनेक्शन और वेब क्रिप्टोग्राफी में उपयोग होता है।
सारी गणना आपके स्थानीय ब्राउज़र में होती है। कोई भी डेटा सर्वर पर नहीं भेजा जाता। इसके तीन महत्वपूर्ण लाभ हैं:
- गोपनीयता: उत्पन्न ID कभी भी नेटवर्क पर नहीं जातीं
- सुरक्षा: कोई तीसरा पक्ष आपकी ID नहीं देख सकता
- ऑफ़लाइन उपयोग: इंटरनेट कनेक्शन के बिना भी काम करता है
CSPRNG की गुणवत्ता ऐसी है कि 122 बिट रैंडमनेस के साथ, टकराव की संभावना 2^122 में 1 से भी कम है। व्यावहारिक रूप से, एक वर्ष में 10 करोड़ UUID v4 उत्पन्न करने पर भी टकराव की संभावना 50% तक पहुँचने में अरबों वर्ष लगेंगे।
इनपुट और आउटपुट की पूरी जानकारी
इनपुट विकल्प
| विकल्प | विवरण | डिफ़ॉल्ट मान |
|---|---|---|
| फ़ॉर्मेट | UUID v4, UUID v7, ULID, या NanoID | UUID v4 |
| काउंट | 1 से 100 के बीच की संख्या | 1 |
| अपरकेस | UUID को बड़े अक्षरों में दिखाएं | बंद (false) |
| हाइफ़न शामिल करें | 8-4-4-4-12 फ़ॉर्मेट में हाइफ़न शामिल करें | चालू (true) |
आउटपुट तत्व
- उत्पन्न ID: UUID v4 स्ट्रिंग्स की सूची
- ID काउंट: सूची के पास दिखाई गई संख्या
- स्थिति संदेश: "Ready." (शुरू), "Generated." (पीढ़ी के बाद), "Copied all!" (सभी कॉपी करने के बाद)
महत्वपूर्ण नियम
- कोई भी विकल्प बदलने पर तुरंत सभी ID पुनः उत्पन्न हो जाती हैं
- काउंट 1 से 100 के बीच होना चाहिए; इस सीमा के बाहर के मान स्वीकार नहीं किए जाते
- एकल ID पर क्लिक करने से वह क्लिपबोर्ड पर कॉपी हो जाती है
- "Copy all" बटन सभी प्रदर्शित ID को कॉपी करता है
- यदि फ़ॉर्मेट UUID v4 से बदला जाता है, तो अपरकेस और हाइफ़न के विकल्प बदल सकते हैं
डेटाबेस इंडेक्सिंग पर UUID v4 का प्रभाव
UUID v4 की सबसे बड़ी चुनौती यह है कि यह डेटाबेस प्राइमरी की के रूप में अप्रभावी हो सकता है। कारण सीधा है: चूँकि ID यादृच्छिक होती हैं, वे किसी तार्किक क्रम में नहीं आतीं।
जब आप B-tree इंडेक्स में यादृच्छिक मान सम्मिलित करते हैं:
- नए मान कहीं भी आ सकते हैं, शुरू या अंत में नहीं
- इससे इंडेक्स पेज बार-बार विभाजित होते हैं
- डिस्क I/O बढ़ जाता है
- कैश क्षमता घट जाती है
तुलना के लिए, UUID v7 (जो समय-आधारित है) कालानुक्रमिक क्रम में ID उत्पन्न करता है, जिससे इंडेक्स फ्रेग्मेंटेशन कम होता है। ULID भी समय-आधारित है और लेक्सिकोग्राफ़िक क्रम में सॉर्ट होता है।
हालाँकि, UUID v4 का लाभ यह है कि यह पूरी तरह से अप्रत्याशित है। इसलिए:
- सुरक्षा टोकन: यदि ID का अनुमान लगाने से कोई सुरक्षा भंग हो सकती है, तो v4 बेहतर है
- सत्र ID: यादृच्छिकता सुनिश्चित करती है कि कोई दूसरे के सत्र का अनुमान न लगा सके
- बाहरी पहचानकर्ता: ग्राहकों को दिखाई देने वाली ID में क्रमबद्धता छिपाने के लिए
व्यावहारिक उपयोग के मामले और सामान्य गलतियाँ
कब उपयोग करें UUID v4
- सुरक्षा-संवेदनशील अनुप्रयोग: OAuth टोकन, API की, पासवर्ड रीसेट लिंक
- गुमनाम डेटा: उपयोगकर्ता पहचान को छिपाने के लिए यादृच्छिक ID
- वितरित सिस्टम: केंद्रीय जनरेटर के बिना अद्वितीय ID उत्पन्न करना
- टेस्ट डेटा: डेटाबेस लोड टेस्टिंग के लिए बड़ी मात्रा में अद्वितीय ID
सामान्य गलतियाँ
-
प्राइमरी की के रूप में सीधा उपयोग: बिना क्लस्टर्ड इंडेक्स के विचार किए UUID v4 का उपयोग करने से प्रदर्शन खराब हो सकता है। समाधान: UUID को BINARY(16) में बदलें या समय-आधारित विकल्पों पर विचार करें।
-
हाइफ़न हटाने पर भ्रम: बिना हाइफ़न के UUID अभी भी 32 हेक्स अंक ही होता है, लेकिन इसे पढ़ना और पार्स करना कठिन हो सकता है।
-
केस संवेदनशीलता: कुछ सिस्टम UUID को केस-इन्सेंसिटिव मानते हैं, कुछ नहीं। अपरकेस टॉगल का उपयोग करते समय सुनिश्चित करें कि आपका सिस्टम केस मैच करता है।
-
अनावश्यक बड़ी संख्या: 100 से अधिक ID की आवश्यकता होने पर, कई बैच बनाने होंगे। टकराव की संभावना अभी भी नगण्य है, लेकिन बैचों के बीच आपके सिस्टम में डुप्लिकेट की जाँच करना अच्छा अभ्यास है।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
प्रश्न: UUID v4 और UUID v7 में क्या अंतर है?
UUID v4 पूरी तरह से यादृच्छिक (122 बिट) होता है, जबकि UUID v7 में टाइमस्टैम्प एम्बेडेड होता है। v7 समय के साथ स्वाभाविक रूप से सॉर्ट होता है, जो डेटाबेस इंडेक्स के लिए बेहतर है। v4 अप्रत्याशितता के लिए बेहतर है।
प्रश्न: क्या उत्पन्न ID में टकराव हो सकता है?
सैद्धांतिक रूप से हाँ, लेकिन व्यावहारिक रूप से नहीं। 122 बिट रैंडमनेस के साथ, 10 करोड़ ID उत्पन्न करने पर भी टकराव की संभावना 50% होने में अरबों साल लगेंगे।
प्रश्न: क्या यह पेज इंटरनेट के बिना काम करता है?
हाँ, एक बार पेज लोड हो जाने के बाद, सारी प्रक्रिया ब्राउज़र में स्थानीय रूप से होती है। कोई सर्वर संचार आवश्यक नहीं।
प्रश्न: अपरकेस और लोअरकेस में क्या अंतर है?
दोनों एक ही UUID को दर्शाते हैं। कुछ सिस्टम (जैसे Windows) डिफ़ॉल्ट रूप से अपरकेस प्रदर्शित करते हैं, जबकि अन्य (जैसे Linux/macOS) लोअरकेस। आपके सिस्टम की आवश्यकता के अनुसार चुनें।
प्रश्न: मैं एक साथ कितनी ID उत्पन्न कर सकता हूँ?
आप एक बार में 1 से 100 तक ID उत्पन्न कर सकते हैं। यदि अधिक चाहिए, तो कई बैच बनाएँ।
प्रश्न: क्या मैं उत्पन्न ID को डेटाबेस में स्टोर कर सकता हूँ?
हाँ, लेकिन प्राइमरी की के रूप में BINARY(16) कॉलम में स्टोर करना बेहतर है, VARCHAR(36) में नहीं। इससे भंडारण कम होता है और क्वेरी प्रदर्शन बेहतर होता है।