यूयूआईडी क्या है? सार्वभौमिक रूप से अद्वितीय पहचानकर्ताओं की संपूर्ण व्याख्या
त्वरित जवाब
UUID 128-bit identifier है जो 36 अक्षरों में दर्शाया जाता है (32 hex अंक और 4 hyphen)। UUID बिना समन्वय के व्यावहारिक रूप से अद्वितीय —collision probability नगण्य। UUID v4 (random) सबसे आम है। हमारे मुफ्त UUID Generator से बनाएँ।
परिचय
UUID (Universally Unique Identifier), Microsoft terminology में GUID (Globally Unique Identifier) भी, 128-bit identifier है जो बिना केंद्रीय समन्वय के व्यावहारिक रूप से अद्वितीय होता है। UUID RFC 4122 द्वारा परिभाषित है और डेटाबेस primary key, request ID, session token और वितरित सिस्टम identifier के रूप में व्यापक उपयोग होता है। सबसे आम संस्करण UUID v4 है जो random bits उपयोग करता है।
क्रमशः
-
UUID संरचना को समझें
एक UUID 128 बिट्स है, जो 5 समूहों में 32 हेक्साडेसिमल अंकों के रूप में प्रदर्शित होता है: 8-4-4-4-12, हाइफ़न द्वारा अलग किया जाता है (उदाहरण के लिए, 550e8400-e29b-41d4-a716-446655440000)। 13वां अंक संस्करण को इंगित करता है (v4 के लिए 4), और 17वां अंक संस्करण को इंगित करता है।
-
UUID संस्करण सीखें
v1: समय-आधारित (टाइमस्टैम्प + मैक पता) - समय-आदेशित लेकिन पहचान लीक। v3: MD5 हैशिंग के साथ नाम-आधारित। v4: यादृच्छिक - सबसे आम, कोई गोपनीयता चिंता नहीं। v5: SHA-1 हैशिंग के साथ नाम-आधारित। v6 और v7: v1 की तुलना में बेहतर गोपनीयता के साथ समय-क्रमबद्ध।
-
टकराव की संभावना को समझें
UUID v4 में 2^122 संभावित मान हैं। 103 ट्रिलियन यूयूआईडी के बीच टकराव की संभावना 50% है। व्यावहारिक उपयोग (लाखों आईडी) के लिए, टकराव की संभावना प्रभावी रूप से शून्य है - आप समन्वय के बिना स्वतंत्र रूप से यूयूआईडी उत्पन्न कर सकते हैं।
-
यूयूआईडी का उचित उपयोग करें
लगभग सभी उपयोग मामलों (डेटाबेस आईडी, अनुरोध आईडी, सत्र टोकन) के लिए v4 का उपयोग करें। यदि आपको डेटाबेस इलाके के लिए समय-क्रमित आईडी की आवश्यकता है तो v7 का उपयोग करें। सुरक्षा-संवेदनशील संदर्भों में v1 से बचें - यह एक टाइमस्टैम्प और MAC पता एम्बेड करता है।
उदाहरण
UUID v4 (यादृच्छिक)
इनपुट: क्रिप्टो.getRandomValues के साथ उत्पन्न
उत्पादन: 550e8400-e29b-41d4-a716-446655440000
UUID v1 (समय-आधारित)
इनपुट: टाइमस्टैम्प + मैक पता
उत्पादन: a3bbf0ee-d6e4-11ed-a5b3-3c9703e8b4a1
कुछ नहीं __रखें_15__
इनपुट: All zeros
उत्पादन: 00000000-0000-0000-0000-000000000000
सामान्य समस्या
- UUIDs के लिए Math.random() का उपयोग करना—यह क्रिप्टोग्राफ़िक रूप से सुरक्षित नहीं है। ब्राउज़र में क्रिप्टो.getRandomValues() या क्रिप्टो.randomUUID() का उपयोग करें।
- यूयूआईडी को स्ट्रिंग्स के रूप में संग्रहीत करना - एक UUID स्ट्रिंग 36 बाइट्स है; UUID प्रकार (16 बाइट्स) के रूप में संग्रहीत यह अधिक कुशल है। उपलब्ध होने पर डेटाबेस में मूल UUID प्रकार का उपयोग करें।
- सुरक्षा-संवेदनशील संदर्भों में v1 का उपयोग करना -v1 एक टाइमस्टैम्प और MAC पता एम्बेड करता है, जो कब और कहाँ उत्पन्न हुआ था, इसके बारे में जानकारी लीक कर सकता है। गुमनाम रहने के लिए v4 का उपयोग करें.
- यह मानते हुए कि यूयूआईडी वास्तव में अद्वितीय हैं - वे व्यावहारिक रूप से अद्वितीय हैं (टक्कर की संभावना नगण्य है), लेकिन गणितीय रूप से अद्वितीय होने की गारंटी नहीं है।
सुझावों
- लगभग सभी उपयोग मामलों के लिए UUID v4 का उपयोग करें—यह यादृच्छिक है, इसमें कोई गोपनीयता संबंधी चिंता नहीं है, और यह सभी आधुनिक डेटाबेस द्वारा समर्थित है।
- लाइब्रेरी के बिना अंतर्निहित v4 जनरेटर के लिए आधुनिक ब्राउज़र में क्रिप्टो.randomUUID() का उपयोग करें।
- बेहतर भंडारण और सूचकांक प्रदर्शन के लिए यूयूआईडी को स्ट्रिंग्स (36 बाइट्स) के बजाय डेटाबेस (16 बाइट्स) में UUID/GUID प्रकार के रूप में संग्रहीत करें।
- अपने ब्राउज़र में तुरंत यूयूआईडी बनाने के लिए हमारे UUID जेनरेटर का उपयोग करें - कोई साइनअप नहीं, पूरी तरह से निजी।