UUID क्या है? आसान भाषा में समझाया गया
प्रकाशित 2026-07-15
UUID सॉफ़्टवेयर, डेटाबेस कीज़, API टोकन, फ़ाइल नामों में लगातार दिखते हैं, लेकिन एक्सप्लेनेशन अक्सर कॉन्सेप्ट से भी ज़्यादा कन्फ़्यूज़ करने वाले होते हैं। यहां छोटा वर्शन है।
आसान भाषा में परिभाषा
एक UUID (यूनिवर्सली यूनीक आइडेंटिफ़ायर) एक 128-बिट नंबर है, जो आमतौर पर पांच ग्रुप में बंटे 32 हेक्साडेसिमल कैरेक्टर्स के रूप में लिखा जाता है, जैसे f47ac10b-58cc-4372-a567-0e02b2c3d479. इसका पूरा मक़सद एक ऐसा आइडेंटिफ़ायर होना है जिसके किसी भी और UUID से टकराने की संभावना खगोलीय रूप से बहुत कम है, चाहे वह कहीं भी, किसी के भी द्वारा जनरेट किया गया हो, बिना किसी सेंट्रल अथॉरिटी के जो यूनीक नंबर बांटे।
सिर्फ़ एक इनक्रीमेंटिंग नंबर क्यों नहीं इस्तेमाल करें?
डेटाबेस की ऑटो-इनक्रीमेंटिंग ID (1, 2, 3...) एक सिंगल डेटाबेस के अंदर बहुत अच्छे से काम करती है, लेकिन जिस पल आपको कई सिस्टम में यूनीकनेस चाहिए होती है, यह टूट जाती है। अगर दो अलग-अलग डेटाबेस स्वतंत्र रूप से "ऑर्डर #4521" जनरेट करते हैं, और बाद में आपको उस डेटा को मर्ज करना पड़े, तो आपके पास एक टक्कर है। UUID इसे बिना किसी कोऑर्डिनेशन के स्वतंत्र रूप से जनरेट होकर हल करते हैं, फिर भी प्रैक्टिस में यूनीक रहते हुए। यही वजह है कि UUID डिस्ट्रिब्यूटेड सिस्टम में हर जगह हैं: डेटाबेस प्राइमरी कीज़, API रिक्वेस्ट IDs, सेशन टोकन, फ़ाइल नाम, एनालिटिक्स इवेंट्स के लिए ट्रैकिंग IDs, वग़ैरह।
यूनीकनेस असल में कैसे गारंटीड है?
यह किसी एब्सोल्यूट मैथमेटिकल सेंस में गारंटीड नहीं है, यह एक प्रैक्टिकल, "कभी नहीं होगा" वाले सेंस में गारंटीड है। सबसे कॉमन वर्शन, UUID v4, लगभग पूरी तरह रैंडम बिट्स से जनरेट होता है: इसके 128 बिट्स में से 122 रैंडम हैं, बाक़ी 6 बिट्स इसे v4 UUID के रूप में पहचानने के लिए फ़िक्स्ड हैं। इतनी रैंडमनेस के साथ, एक सिंगल टक्कर की 50% संभावना से पहले आपको जितने UUID जनरेट करने होंगे वह लगभग 2.71 क्विंटिलियन हैं। एक बिलियन UUID प्रति सेकंड जनरेट करने पर भी, एक-अरब-में-एक टक्कर की संभावना तक पहुंचने में लगभग 85 साल लगेंगे। लगभग हर प्रैक्टिकल मक़सद के लिए, यह असंभव जितना अच्छा है।
UUID वर्शन, संक्षेप में
UUID अलग-अलग जनरेशन तरीक़ों के साथ कई वर्शन में आते हैं। वर्शन 1 एक टाइमस्टैम्प प्लस जनरेट करने वाले कंप्यूटर के नेटवर्क हार्डवेयर एड्रेस पर आधारित है (आजकल शायद ही इस्तेमाल होता है, क्योंकि यह इस बारे में जानकारी लीक कर सकता है कि यह कब और कहां जनरेट हुआ था)। वर्शन 4, लगभग पूरी तरह रैंडम, आधुनिक सॉफ़्टवेयर में अब तक सबसे कॉमन है क्योंकि इसे किसी ख़ास इनपुट की ज़रूरत नहीं होती और यह अपने मूल के बारे में कोई मेटाडेटा नहीं ले जाता। वर्शन 5 एक हैश फ़ंक्शन का इस्तेमाल करते हुए एक नेमस्पेस और एक नाम से डिटर्मिनिस्टिक रूप से जनरेट होता है, इसलिए वही इनपुट हमेशा वही UUID देता है, तब उपयोगी जब आपको एक फ़्रेश रैंडम के बजाय मौजूदा डेटा से डेराइव्ड एक स्टेबल आइडेंटिफ़ायर चाहिए।
आपको असल में एक जनरेट करने की ज़रूरत कब पड़ती है
कॉमन केस: डेटाबेस के एक बांटने का इंतज़ार किए बिना एक नए डेटाबेस रिकॉर्ड को यूनीक ID असाइन करना, किसी मौजूदा फ़ाइल को ओवरराइट होने से बचाने के लिए एक यूनीक फ़ाइलनाम जनरेट करना, एक वन-ऑफ़ API की या सेशन टोकन बनाना, या टेस्ट डेटा के एक बैच को ऐसी ID से टैग करना जो असली प्रोडक्शन डेटा से टकराने की गारंटी न रखे। जहां भी आपको "अभी, बिना किसी कोऑर्डिनेशन के, एक यूनीक आइडेंटिफ़ायर" चाहिए, एक UUID आमतौर पर सबसे आसान जवाब है।