इस लेख में
UUID क्या है?
UUID (Universally Unique Identifier) एक 128-बिट मान है जिसका उपयोग कंप्यूटर सिस्टम में किसी जानकारी की विशिष्ट पहचान के लिए किया जाता है। हाइफ़न से अलग किए गए पाँच समूहों में प्रदर्शित 32 हेक्साडेसिमल अंकों के रूप में लिखा जाने वाला एक UUID कुछ इस तरह दिखता है: 550e8400-e29b-41d4-a716-446655440000।
UUID को किसी केंद्रीय पंजीकरण प्राधिकरण की आवश्यकता के बिना वैश्विक रूप से विशिष्ट बनाने के लिए डिज़ाइन किया गया है। यह उन्हें ऐसे वितरित सिस्टम के लिए आदर्श बनाता है जहाँ कई नोड्स को स्वतंत्र रूप से ऐसे पहचानकर्ता बनाने होते हैं जो कभी टकराएँ नहीं।
UUID संस्करणों की व्याख्या
UUID मानक कई संस्करण परिभाषित करता है, जिनमें से प्रत्येक की एक अलग निर्माण विधि है। संस्करण संख्या 13वें वर्ण के रूप में दिखाई देती है (तीसरे समूह का पहला अंक)।
- संस्करण 1 (v1) — समय-आधारित: वर्तमान टाइमस्टैम्प को उत्पन्न करने वाली मशीन के MAC पते के साथ जोड़ता है। विशिष्टता की गारंटी देता है पर हार्डवेयर की जानकारी उजागर करता है
- संस्करण 3 (v3) — MD5 के साथ नाम-आधारित: किसी नेमस्पेस और नाम को MD5 से हैश करके एक निश्चित UUID उत्पन्न करता है। एक ही इनपुट हमेशा एक ही UUID देता है
- संस्करण 4 (v4) — यादृच्छिक: सबसे व्यापक रूप से उपयोग किया जाने वाला संस्करण। संस्करण और वेरिएंट फ़ील्ड को छोड़कर सभी बिट यादृच्छिक रूप से उत्पन्न होते हैं, जो लगभग 5.3 x 10 की घात 36 संभावित मान प्रदान करते हैं
- संस्करण 5 (v5) — SHA-1 के साथ नाम-आधारित: v3 की तरह पर हैशिंग के लिए SHA-1 का उपयोग करता है। नई कार्यान्वयनों के लिए v3 की तुलना में बेहतर माना जाता है
- संस्करण 7 (v7) — टाइमस्टैम्प-क्रमबद्ध यादृच्छिक: एक नया प्रारूप जो Unix टाइमस्टैम्प को यादृच्छिक बिट के साथ जोड़ता है, जिससे UUID निर्माण समय के अनुसार क्रमबद्ध किए जा सकते हैं
निःशुल्क आज़माएँ — कोई साइनअप आवश्यक नहीं
किसी UUID को सत्यापित करें →UUID सत्यापन कैसे काम करता है
किसी UUID के सत्यापन में उसके प्रारूप और संरचनात्मक नियमों, दोनों की जाँच शामिल होती है। एक वैध UUID को विहित 8-4-4-4-12 हेक्साडेसिमल पैटर्न से मेल खाना चाहिए और संस्करण-विशिष्ट बाधाओं को पूरा करना चाहिए।
- प्रारूप जाँच — स्ट्रिंग में ठीक 32 हेक्साडेसिमल वर्ण होने चाहिए, जो चार हाइफ़न से अलग किए गए पाँच समूहों में व्यवस्थित हों
- संस्करण जाँच — 13वाँ वर्ण एक वैध संस्करण संख्या (1, 2, 3, 4, 5, 6, 7 या 8) होना चाहिए
- वेरिएंट जाँच — 17वाँ वर्ण (चौथे समूह का पहला हेक्स अंक) RFC 4122 वेरिएंट (8, 9, a या b) को दर्शाना चाहिए
आम उपयोग के मामले
आधुनिक सॉफ़्टवेयर विकास में कई क्षेत्रों में UUID पहचानकर्ताओं के लिए डिफ़ॉल्ट विकल्प के रूप में काम करते हैं।
- डेटाबेस प्राइमरी की — UUID आपको डेटाबेस के साथ बार-बार आदान-प्रदान किए बिना क्लाइंट पक्ष पर की उत्पन्न करने देते हैं, जिससे वितरित इंसर्ट सहज हो जाते हैं
- API संसाधन पहचानकर्ता — क्रमिक पूर्णांकों के बजाय UUID उजागर करने से एन्युमरेशन हमले रुकते हैं और व्यावसायिक मीट्रिक छिपे रहते हैं
- सत्र और सहसंबंध ID — UUID माइक्रोसर्विसेज़ में अनुरोधों को ट्रेस करते हैं, जिससे वितरित डिबगिंग संभव हो जाती है
- फ़ाइल और ऑब्जेक्ट नामकरण — क्लाउड स्टोरेज सिस्टम कई उपयोगकर्ताओं द्वारा एक साथ फ़ाइलें अपलोड करते समय नामकरण टकराव से बचने के लिए UUID का उपयोग करते हैं
सर्वोत्तम अभ्यास
सही UUID संस्करण चुनना और उन्हें सही ढंग से संभालना आपके एप्लिकेशन में सूक्ष्म बग तथा प्रदर्शन समस्याओं को रोक सकता है।
- सामान्य-उद्देश्य वाले यादृच्छिक पहचानकर्ताओं के लिए v4 का उपयोग करें — यह सबसे आम विकल्प है और इसकी कोई बाहरी निर्भरता नहीं है
- जब आपको समय के अनुसार क्रमबद्ध किए जा सकने वाले पहचानकर्ता चाहिए, तब v7 का उपयोग करें — v7 UUID कालानुक्रमिक रूप से क्रमबद्ध होते हैं, जो डेटाबेस इंडेक्स प्रदर्शन को बेहतर बनाता है
- UUID को डेटाबेस में 36-वर्ण की स्ट्रिंग के बजाय 16-बाइट बाइनरी के रूप में संग्रहीत करें — इससे स्टोरेज बचता है और तुलना तेज़ होती है
- बाहरी इनपुट से प्राप्त UUID को हमेशा सत्यापित करें — कभी यह न मानें कि उपयोगकर्ता द्वारा दी गई स्ट्रिंग सही ढंग से बनी हुई है
अक्सर पूछे जाने वाले प्रश्न
क्या दो UUID कभी एक जैसे हो सकते हैं?
हालाँकि सैद्धांतिक रूप से यह संभव है, v4 UUID के टकराने की संभावना बेहद कम है। एक ही टकराव की 50 प्रतिशत संभावना के लिए आपको लगभग 2.7 क्विंटिलियन UUID उत्पन्न करने होंगे।
क्या UUID केस-संवेदनशील होता है?
नहीं। RFC 4122 मानक निर्दिष्ट करता है कि UUID को लोअरकेस में आउटपुट किया जाना चाहिए, पर कार्यान्वयनों को अपरकेस और लोअरकेस, दोनों हेक्साडेसिमल वर्णों को समतुल्य मानकर स्वीकार करना चाहिए।
मुझे UUID का उपयोग करना चाहिए या ULID का?
ULID 128-बिट पहचानकर्ता हैं जो शब्दकोशीय रूप से क्रमबद्ध किए जा सकते हैं और Crockford Base32 एन्कोडेड होते हैं। यदि आपको UUID v7 की जटिलता के बिना क्रमबद्धता चाहिए, तो ULID एक अच्छा विकल्प हैं। यदि मौजूदा सिस्टम के साथ अनुकूलता मायने रखती है, तो UUID के साथ बने रहें।