आपको GUID/UUID की आवश्यकता क्यों है और यह आपकी सोच से कहीं अधिक सरल क्यों है?
\n\nक्या आपने कभी सोचा है कि वेबसाइटें और ऐप्लिकेशन डेटाबेस में एक रिकॉर्ड को दूसरे से कैसे अलग करते हैं? या आपका ब्राउज़र कैसे याद रखता है कि आपने अपनी कार्ट में क्या रखा है, न कि आपके पड़ोसी ने? यह रहस्य अक्सर एक छोटी लेकिन शक्तिशाली स्ट्रिंग में छिपा होता है — GUID (Globally Unique Identifier) या इसका अधिक सटीक भाई UUID (Universally Unique Identifier)।
\n\nStack Overflow पर "How do I create a GUID / UUID?" प्रश्न हजारों बार देखा जाता है। यह कोई संयोग नहीं है। हर डेवलपर को कभी न कभी इस कार्य का सामना करना पड़ता है: "मुझे एक अद्वितीय ID चाहिए, लेकिन मैं पूरी लाइब्रेरी नहीं लाना चाहता।" आज हम JavaScript में इस विषय को शुरू से अंत तक समझेंगे। आप न केवल UUID जनरेट करना सीखेंगे, बल्कि यह भी समझेंगे कि अपने कार्य के लिए कौन सी विधि चुननी है।
\n\nतैयार हैं? चलिए शुरू करते हैं!
\n\nUUID वास्तव में क्या है? (और यह जादू क्यों नहीं है)
\n\nकोड लिखने से पहले, आइए सिद्धांत को समझें। UUID एक 128-बिट संख्या है जिसे आमतौर पर डैश के साथ हेक्साडेसिमल प्रारूप में लिखा जाता है। यह इस तरह दिखता है:
\n\n123e4567-e89b-12d3-a456-426614174000\n\nमानक RFC 4122 UUID के कई संस्करणों का वर्णन करता है। सबसे लोकप्रिय:
\n- \n
- संस्करण 4: यादृच्छिक UUID। इंटरनेट पर आपको जो कुछ भी मिलेगा, वह लगभग यही है। \n
- संस्करण 1: समय और MAC पते पर आधारित। पुराना हो चुका है, लेकिन कभी-कभी मिल जाता है। \n
- संस्करण 5: SHA-1 हैश का उपयोग करके नाम (जैसे URL) से उत्पन्न होता है। \n
UUID की मुख्य विशेषता केंद्रीय सर्वर के बिना अद्वितीयता है। टकराव (दो ID के मिलने) की संभावना इतनी कम है कि इसे नजरअंदाज किया जा सकता है। कहा जाता है कि यदि प्रति सेकंड एक अरब UUID जनरेट किए जाएं, तो डुप्लिकेट बनने में लगभग 100 साल लगेंगे। काफी अच्छी गारंटी है, है ना?
\n\nसबसे सही तरीका: crypto.randomUUID()
\n\nयदि आप आधुनिक JavaScript (ES2020+) लिख रहे हैं, तो आपके पास एक अंतर्निहित समाधान है — crypto.randomUUID()। यह विधि ब्राउज़रों और Node.js (संस्करण 14.17.0 से) में उपलब्ध है।
\n\nयह इस प्रकार काम करता है:
\n\n// ब्राउज़र\nconst myUUID = crypto.randomUUID();\nconsole.log(myUUID); // आउटपुट: "f47ac10b-58cc-4372-a567-0e02b2c3d479"\n\n// Node.js (आधुनिक संस्करण)\nconst { randomUUID } = require('crypto');\nconst myUUID = randomUUID();\nconsole.log(myUUID);\n\nयह सबसे अच्छा विकल्प क्यों है?
\n- \n
- सुरक्षा: क्रिप्टोग्राफिक रूप से सुरक्षित यादृच्छिक संख्या जनरेटर का उपयोग करता है। कोई पूर्वानुमानित पैटर्न नहीं। \n
- मानक: RFC 4122 संस्करण 4 का सख्ती से पालन करता है। \n
- प्रदर्शन: अंदरूनी रूप से C++ में लिखा गया है, बिजली की गति से काम करता है। \n
- शून्य निर्भरता: तृतीय-पक्ष लाइब्रेरी स्थापित करने की आवश्यकता नहीं है। \n
महत्वपूर्ण: पुराने ब्राउज़रों (Internet Explorer, Safari 15.4 से पहले) में यह विधि उपलब्ध नहीं हो सकती है। यदि आप ऐसे "डायनासोर" का समर्थन करते हैं, तो आगे पढ़ें — हमारे पास वैकल्पिक विकल्प हैं।
\n\nक्लासिक हैक: Math.random() + RFC 4122 टेम्पलेट
\n\ncrypto.randomUUID() के आने से पहले, डेवलपर्स अपने तरीके खोजते थे। सबसे लोकप्रिय विकल्प UUID टेम्पलेट में अंक डालने के लिए Math.random() का उपयोग करना है। यह कोड 10 वर्षों से अधिक समय से इंटरनेट पर घूम रहा है:
\n\nfunction generateUUID() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n\nconsole.log(generateUUID()); // आउटपुट: "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"\n\nयह कैसे काम करता है?
\n- \n
- टेम्पलेट
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxxप्रारूप निर्धारित करता है।