डेवलपर टूल · UUID जनरेटर
UUID संस्करण 1 से 8 तक समझाया गया: आपको कौन सा उत्पन्न करना चाहिए?
· पेजभूमि
uuid क्रिप्टोग्राफी ब्राउज़र-एपिस
आठ संस्करण एक प्रारूप साझा करते हैं लेकिन विभिन्न समस्याओं का समाधान करते हैं: समय क्रम, प्रतिलिपि प्रस्तुत करने योग्यता, यादृच्छिकता या कस्टम लेआउट। यह पोस्ट प्रत्येक की व्याख्या करती है और निर्णय का मार्ग बताती है।
एक प्रारूप, आठ व्यंजन - जब आप लाइब्रेरी फ़ंक्शन चुनते हैं तो संस्करण का महत्व क्यों मायने रखता है
UUID मानक 128-बिट प्रारूप को हाइफ़न के साथ छत्तीस हेक्साडेसिमल वर्णों के रूप में परिभाषित करता है। RFC 9562 उन बिट्स को विभिन्न पैटर्न और अर्थों से भरने के लिए आठ अलग-अलग व्यंजनों को परिभाषित करता है - संस्करण एक से आठ तक। संस्करण निबल (तीसरे समूह का पहला अक्षर) पहचानता है कि किस विधि ने लेबल के रूप में कार्य करते हुए मूल्य उत्पन्न किया। गलत संस्करण चुनने का अर्थ है अनावश्यक अस्थायी जानकारी संग्रहीत करना, डेटाबेस प्रदर्शन के लिए ऑर्डरिंग गारंटी का गायब होना, या पहचानकर्ता सुरक्षा भूमिकाओं की गलतफहमी। यह पोस्ट प्रत्येक संस्करण के बारे में बताती है कि यह किस ठोस समस्या का समाधान करती है, जब डेवलपर्स इसे व्यवहार में लाते हैं, और आपकी विशिष्ट सिस्टम आवश्यकताओं के लिए सही संस्करण का चयन करने के लिए एक निर्णय रूपरेखा प्रदान करती है।
v1 और v6: समय प्लस नोड - मूल समय-आधारित लेआउट और पुन: व्यवस्थित संस्करण जो सही ढंग से क्रमबद्ध होता है
संस्करण 1 एक 60-बिट टाइमस्टैम्प को एक नोड पहचानकर्ता (मूल रूप से एक MAC पता) के साथ जोड़ता है, हालांकि आधुनिक कार्यान्वयन हार्डवेयर जानकारी लीक होने से बचने के लिए यादृच्छिक मानों का उपयोग करते हैं। टाइमस्टैम्प अक्टूबर 15, 1582 से 100-नैनोसेकंड अंतराल रिकॉर्ड करता है। नोड फ़ील्ड यह बता सकता है कि पहचानकर्ता कब उत्पन्न हुआ था और भौगोलिक रूप से इसकी उत्पत्ति कहां हुई थी, यही कारण है कि आधुनिक कार्यान्वयन MAC पते से बचते हैं। संस्करण 6 उच्च-क्रम समय बिट्स को सामने ले जाकर सॉर्टेबिलिटी में सुधार करने के लिए समान टाइमस्टैम्प और नोड जानकारी को पुनर्व्यवस्थित करता है, जिससे v6 UUID लेक्सिकोग्राफ़िक क्रम में सही ढंग से सॉर्ट होते हैं। यदि आपके एप्लिकेशन को UUID की आवश्यकता है जो स्वाभाविक रूप से बेहतर सूचकांक इलाके के साथ निर्माण समय के अनुसार क्रमबद्ध हो, तो v6 आधुनिक विकल्प है।
v2: DCE सुरक्षा - शायद ही कभी इस्तेमाल किया जाने वाला संस्करण जो POSIX पहचानकर्ताओं को एम्बेड करता है
संस्करण 2 का उपयोग नई प्रणालियों में शायद ही कभी किया जाता है। यह POSIX उपयोगकर्ता या समूह पहचानकर्ताओं को UUID लेआउट में एम्बेड करता है, जिससे यह केवल विरासती वातावरण में उपयोगी हो जाता है जहां उन पहचानकर्ताओं का संगठनात्मक अर्थ होता है। V2 डिज़ाइन एक विशिष्ट कंप्यूटिंग मॉडल (DCE सुरक्षा) मानता है जो आधुनिक वितरित सिस्टम में असामान्य है। अधिकांश संगठन UUID को डेटाबेस जॉइन या लुकअप टेबल के माध्यम से अपने एप्लिकेशन लेयर में उपयोगकर्ताओं या समूहों के साथ जोड़ते हैं, न कि उपयोगकर्ता ID को पहचानकर्ता में एन्कोड करके। चिंताओं के इस पृथक्करण से प्राधिकरण मॉडल को बदलना, उपयोगकर्ता डेटा को स्थानांतरित करना और ऑडिट ट्रेल्स को बनाए रखना आसान हो जाता है। क्रेडेंशियल्स को सीधे UUID में एन्कोड करने से मजबूत युग्मन बनता है और सिस्टम को विकसित करना कठिन हो जाता है।
v3 और v5: नाम-आधारित - नामस्थान से नियतात्मक ID और MD5 या SHA-1 वाला नाम
संस्करण 3 और 5 UUID नियतात्मक हैं: समान नेमस्पेस और नाम हमेशा एक ही पहचानकर्ता उत्पन्न करते हैं, जो बाहरी डेटा से स्थिर मैपिंग का प्रतिनिधित्व करने के लिए आदर्श है। संस्करण 3 MD5 का उपयोग करता है और संस्करण 5 हैश एल्गोरिदम के रूप में SHA-1 का उपयोग करता है, जो उनकी संबंधित उम्र और गोद लेने को दर्शाता है। जब कोई ग्राहक रिकॉर्ड आयात के लिए आता है, तो एक निश्चित नामस्थान से प्राप्त v5 UUID एकाधिक आयात रन में समान होगा, जिससे डुप्लिकेट रिकॉर्ड को रोका जा सकेगा। इस नियतिवाद का अर्थ है कि UUID नाम स्थान और इनपुट को जानने वाले किसी भी व्यक्ति के लिए प्रतिलिपि प्रस्तुत करने योग्य और पूर्वानुमान योग्य है। व्यावहारिक मूल्य डेटा एकीकरण परिदृश्यों में चमकता है: कई प्रणालियों से ग्राहक रिकॉर्ड को समेटना, आवर्ती आयात में डुप्लिकेट को रोकना और वस्तुओं को स्थिर ID निर्दिष्ट करना।
v4: यादृच्छिक - CSPRNG से 122 bits और ऑर्डर करते समय डिफ़ॉल्ट विकल्प कोई मायने नहीं रखता
जब ऑर्डर देने की आवश्यकता नहीं होती है और आप केंद्रीय समन्वय के बिना स्वतंत्र पीढ़ी चाहते हैं तो संस्करण 4 डिफ़ॉल्ट विकल्प है। एक v4 UUID एक क्रिप्टोग्राफ़िक रूप से सुरक्षित यादृच्छिक स्रोत से 122 bits से बना है, जिसमें छह बिट निश्चित मानों पर सेट हैं (संस्करण निबल 4 और RFC 9562 वैरिएंट बिट्स 10)। यादृच्छिकता संपूर्ण बिंदु है: प्रत्येक कॉल एक अलग मूल्य उत्पन्न करती है, टकराव गायब होने की संभावना नहीं रहती है, और किसी बाहरी स्थिति या समन्वय की आवश्यकता नहीं होती है। यह वह संस्करण है जिसे ToolAcre crypto.randomUUID() या crypto.getRandomValues() का उपयोग करके तैयार किया जाता है। यह संस्करण ऑब्जेक्ट संदर्भों, असंरचित डेटा और प्राथमिक कुंजी या सॉर्टिंग संदर्भों के बाहर अधिकांश भूमिकाओं के लिए उपयुक्त है।
v7 और v8: Unix समय और कस्टम - डेटाबेस कुंजियों के लिए आधुनिक समय-आदेशित संस्करण और बीस्पोक लेआउट के लिए एस्केप हैच
संस्करण 7, RFC 9562 में मानकीकृत, आधुनिक समय-क्रमबद्ध गुणों को UUID प्रारूप में लाता है। यह 48-बिट Unix मिलीसेकंड टाइमस्टैम्प, उप-मिलीसेकंड परिशुद्धता के 12 bits और 62 संयुक्त यादृच्छिक बिट्स का उपयोग करता है। Unix मिलीसेकंड टाइमस्टैम्प वर्ष 10889 तक अच्छा है, जो इसे सिस्टम के लिए उपयुक्त बनाता है। परिणाम शब्दकोषीय क्रम में सही ढंग से क्रमबद्ध होता है और विशेष हैंडलिंग या एन्कोडिंग रूपांतरण के बिना एक मानक 128-बिट UUID कॉलम में फिट बैठता है। यदि आपके एप्लिकेशन को ऐसे पहचानकर्ताओं की आवश्यकता है जो मानक UUID प्रारूप के भीतर निर्माण समय के अनुसार क्रमबद्ध हों, तो v7 वर्तमान सर्वोत्तम अभ्यास है। संस्करण 8 कार्यान्वयन-परिभाषित प्रारूपों के लिए एक मानकीकृत कैच-ऑल है, जो केवल तभी उपयोगी है जब आपको विशिष्ट बिट लेआउट की आवश्यकता होती है जो v1-v7 द्वारा कवर नहीं किए जाते हैं।
कार्यान्वित उदाहरण - तीन परिदृश्यों पर लागू निर्णय पथ: एक सार्वजनिक API संदर्भ, एक प्राथमिक कुंजी, और आयातित रिकॉर्ड के लिए एक स्थिर ID
वास्तविक दुनिया के तीन परिदृश्य संस्करण चयन को दर्शाते हैं: पहला, एक सार्वजनिक API संदर्भ API उदाहरणों में स्थिर होना चाहिए, निर्माण समय लीक नहीं होना चाहिए, और सर्वर पुनरारंभ के दौरान समान होना चाहिए ताकि विभिन्न उदाहरण एक ही दस्तावेज़ के लिए समान संदर्भ उत्पन्न करें। स्थिर नामस्थान और दस्तावेज़ नाम के साथ v5 का उपयोग करें। दूसरा, लगातार बढ़ती तालिका के लिए प्राथमिक कुंजी अद्वितीय होनी चाहिए, सूचकांक विखंडन का कारण नहीं बनना चाहिए, और केंद्रीय समन्वय के बिना किसी भी एप्लिकेशन इंस्टेंस द्वारा उत्पन्न किया जाना चाहिए। मानक UUID पारिस्थितिकी तंत्र समर्थन के साथ क्रमबद्ध पहचानकर्ताओं के लिए v7 का उपयोग करें। तीसरा, स्थिर लुकअप की आवश्यकता वाले संग्रहीत रिकॉर्ड को अपरिवर्तनीय पहचानकर्ताओं की आवश्यकता होती है।
टेकअवे: संपत्ति के आधार पर चुनें, आदत के आधार पर नहीं - ToolAcre जनरेटर उन मामलों के लिए ब्राउज़र के CSPRNG से यादृच्छिक UUID उत्पन्न करता है जो v4 के लिए कॉल करते हैं
संस्करण का चयन आपके स्कीमा डिज़ाइन और सिस्टम आवश्यकताओं के आधार पर होता है, परंपरा या परिचितता के आधार पर नहीं। रैंडम UUID (v4) डिफ़ॉल्ट हैं क्योंकि उन्हें किसी स्थिति या समन्वय की आवश्यकता नहीं होती है और वे अधिकांश भूमिकाओं के लिए उपयुक्त स्वतंत्र पहचानकर्ता उत्पन्न करते हैं। समय-आदेशित संस्करण (v6, v7) अस्थायी सूचना रिसाव या घड़ी सिंक्रनाइज़ेशन आवश्यकताओं की कीमत पर सूचकांक-स्थानीयता समस्याओं को हल करते हैं। नियतात्मक संस्करण (v3, v5) डुप्लिकेट आयात को रोकते हैं और पूर्वानुमेयता की कीमत पर स्थिर बाहरी मैपिंग को सक्षम करते हैं - जो कोई भी आपके नामस्थान को जानता है वह उनकी पुन: गणना कर सकता है। ToolAcre ब्राउज़र के क्रिप्टोग्राफ़िक रूप से सुरक्षित जनरेटर से यादृच्छिक v4 UUID उत्पन्न करता है। जब आपको एक अलग संस्करण की आवश्यकता होती है, तो अच्छी तरह से गठित चेक पहचानकर्ता पार्स को वैध के रूप में पुष्टि करता है।