क्या GUID और UUID में कोई अंतर है?


865

मैं देख रहा हूँ कि इन 2 योगों को चारों ओर फेंक दिया गया था, और मैं सोच रहा था कि क्या कोई GUID और UUID के बीच कोई अंतर है?


183
मैं "GUID" कह सकता हूं, मैं "UUID" नहीं कह सकता।
हार्डवेयरगुई

48
मैं UUID को "यू-वाइड" के रूप में उच्चारण करता हूं
मैट ग्रीर

106
मैं कहता हूँ "आप में आप मैं-डी", लेकिन मैं एक देशी वक्ता ... नहीं कर रहा हूँ
विल्ट

20
UUID विनिर्देशन ( RFC-4122 ) अमूर्त में कहता है: यह विनिर्देश UUIDs के लिए एक यूनिफ़ॉर्म रिसोर्स नाम नेमस्पेस को परिभाषित करता है (यूनिवर्सली यूनिक आइडेंटिफ़ायर), जिसे GUIDs (ग्लोबली यूनिक आइडेंटिफ़ायर) के रूप में भी जाना जाता है
टॉम

88
UUIDs अद्वितीय रूप से सार्वभौमिक (ब्रह्मांड-स्कोप) हैं जबकि GUID केवल विश्व स्तर पर अद्वितीय हैं (ग्लोब-स्कोप)। न तो अद्वितीय बहुविध हैं, न ही वे MUID हैं। इसका अर्थ है कि सिद्धांत में आपको GUIDs का उपयोग नहीं करना चाहिए। इसके अलावा, वे बहुत अधिक विनिमेय हैं।
आरपी

जवाबों:


815

इसका सरल उत्तर है: कोई अंतर नहीं है, वे एक ही बात कर रहे हैं। उन्हें एक 16 बाइट (128 बिट) मान के रूप में मानें जो एक अद्वितीय मान के रूप में उपयोग किया जाता है। Microsoft-Speak में उन्हें GUID कहा जाता है, लेकिन Microsoft-Speak का उपयोग नहीं करने पर उन्हें UUIDs कहते हैं।

यहां तक ​​कि यूयूआईडी विनिर्देश और माइक्रोसॉफ्ट के लेखकों का दावा है कि वे समानार्थक हैं:

  • IETF RFC 4122 के परिचय से " एक यूनिवर्सली यूनिक IDentifier (UUID) URN Namespace ": "UUIDs के लिए एक यूनिफ़ॉर्म रिसोर्स नाम नेमस्पेस (यूनिवर्सली यूनिक IDentifier), जिसे GUID (ग्लोबली यूनिक IDentifier) ​​भी कहा जाता है।"

  • से आईटीयू आयकर सिफारिश X.667, आईएसओ / आईईसी 9834-8: 2004 अंतर्राष्ट्रीय मानक : "UUIDs भी विश्व स्तर पर अद्वितीय पहचानकर्ता (GUIDs) के रूप में जाना जाता है, लेकिन इस शब्द का इस सिफारिश में नहीं किया जाता है।"

  • और Microsoft का यह भी दावा है कि एक GUID UUID RFC द्वारा निर्दिष्ट किया गया है: "Microsoft Windows प्रोग्रामिंग और विंडोज ऑपरेटिंग सिस्टम में, एक विश्व स्तर पर अद्वितीय पहचानकर्ता (GUID), जैसा कि [RFC4122] में निर्दिष्ट है, ... सार्वभौमिक रूप से अद्वितीय पहचानकर्ता (UUID) है। ) को कभी-कभी GUID के पर्याय के रूप में Windows प्रोटोकॉल विनिर्देशों में उपयोग किया जाता है। "

लेकिन सही उत्तर इस बात पर निर्भर करता है कि प्रश्न का अर्थ क्या है जब वह "यूयूआईडी" कहता है ...

पहला भाग इस बात पर निर्भर करता है कि पूछने वाला क्या सोच रहा है जब वे "यूयूआईडी" कह रहे हैं।

Microsoft का दावा है कि सभी UUIDs GUID हैं। लेकिन क्या सभी GUIDs वास्तविक UUID हैं? यही है, क्या सभी यूयूआईडी का सेट सभी GUID के सेट का एक उचित उपसमूह है, या यह सटीक सेट है?

आरएफसी 4122 के विवरण को देखते हुए, यूयूआईडी के चार अलग-अलग "वेरिएंट" हैं। यह ज्यादातर इसलिए है क्योंकि यूयूआईडी विनिर्देशन के निर्माण में उन विशिष्टताओं को एक साथ लाने से पहले ऐसे 16 बाइट पहचानकर्ता उपयोग में थे। RFC 4122 की धारा 4.1.1 से , UUID के चार संस्करण हैं:

  1. आरक्षित, नेटवर्क कम्प्यूटिंग सिस्टम पिछड़ी संगतता
  2. संस्करण आरएफसी 4122 में विनिर्दिष्ट (जिनमें से वहाँ पाँच उप वेरिएंट है, जो "संस्करण" कहा जाता है)
  3. आरक्षित, Microsoft Corporation पिछड़े संगतता
  4. भविष्य की परिभाषा के लिए आरक्षित।

RFC 4122 के अनुसार, सभी UUID वेरिएंट "वास्तविक UUID" हैं, फिर सभी GUID वास्तविक UUID हैं। शाब्दिक प्रश्न के लिए "GUID और UUID के बीच कोई अंतर है" जवाब निश्चित रूप से RFC 4122 UUIDs के लिए नहीं है : कोई अंतर नहीं (लेकिन नीचे दूसरे भाग के अधीन)।

लेकिन सभी GUIDs वैरिएंट 2 UUIDs नहीं हैं (जैसे Microsoft COM में GUID हैं जो वेरिएंट 3 UUIDs हैं)। यदि प्रश्न "GUID और संस्करण 2 UUIDs के बीच कोई अंतर है", तो उत्तर हां में होगा - वे भिन्न हो सकते हैं। प्रश्न पूछने वाला व्यक्ति शायद वेरिएंट के बारे में नहीं जानता है और हो सकता है कि वह केवल वेरिएंट 2 यूयूआईडी के बारे में सोच रहा हो जब वे "यूयूआईडी" शब्द कहते हैं (उदाहरण के लिए वे मैक पते + समय और यूयूआईडी के यादृच्छिक संख्या एल्गोरिदम रूपों के बारे में जानते हैं, जो दोनों संस्करणों की संस्करण 2)। किस मामले में, उत्तर हां अलग है

तो, उत्तर, भाग में, यह पूछने पर निर्भर करता है कि पूछने वाला व्यक्ति "यूयूआईडी" शब्द कहने पर क्या सोच रहा है। क्या उनका मतलब वेरिएंट 2 यूयूआईडी है (क्योंकि वह एकमात्र वेरिएंट है जिससे वे परिचित हैं) या सभी यूयूआईडी?

दूसरा भाग इस बात पर निर्भर करता है कि UUID की परिभाषा के रूप में किस विनिर्देशन का उपयोग किया जा रहा है।

यदि आपको लगता है कि भ्रमित था, तो ITU-T X.667 ISO / IEC 9834-8: 2004 पढ़ें जो कि RFC 4122 के साथ संरेखित और पूरी तरह से तकनीकी रूप से संगत माना जाता है । यह खंड 11.2 में एक अतिरिक्त वाक्य है, जो कहता है, "इस सिफारिश के अनुरूप सभी यूयूआईडीएस हैं। अंतर्राष्ट्रीय मानक में 7 बिट्स ऑक्टेट 7 सेट के 1 और बिट 6 ऑक्टेट 7 सेट से 0 के बिट वाले संस्करण होंगे"। जिसका मतलब है कि केवल वेरिएंट 2 यूयूआईडी उस स्टैंडर्ड के अनुरूप है (उन दो बिट वैल्यू का मतलब वेरिएंट 2 है)। यदि यह सच है, तो सभी GUIDs ITU-T / ISO / IEC UUIDs के अनुरूप नहीं हैं, क्योंकि अनुरूप ITU-T / ISO / IEC UUIDs केवल 2 संस्करण हो सकते हैं।

इसलिए, वास्तविक उत्तर इस बात पर भी निर्भर करता है कि यूयूआईडी के किस विनिर्देश के बारे में प्रश्न पूछ रहा है। हम स्पष्ट रूप से सभी UUIDs के बारे में बात कर रहे हैं और सिर्फ भिन्न नहीं 2 UUIDs मान लिया जाये कि: वहाँ है कोई फर्क नहीं GUID और IETF की UUIDs के बीच है, लेकिन हाँ अंतर GUID और के बीच अनुरूप आईटीयू-टी / आईएसओ / आईईसी के UUIDs!

बाइनरी एनकोडिंग भिन्न हो सकते हैं

जब बाइनरी में एन्कोड किया गया (मानव-पठनीय पाठ प्रारूप के विपरीत), GUID को चार अलग-अलग क्षेत्रों के साथ एक संरचना में संग्रहीत किया जा सकता है। यह प्रारूप केवल पहले 3 फ़ील्ड के बाइट क्रम में UUID मानक से अलग है ।

Bits  Bytes Name   Endianness  Endianness
                   (GUID)      RFC 4122

32    4     Data1  Native      Big
16    2     Data2  Native      Big
16    2     Data3  Native      Big
64    8     Data4  Big         Big

35
चुने हुए उत्तर की तुलना में अधिक जानकारीपूर्ण। मुझे लगता है कि चुना हुआ उत्तर प्रश्न का पूर्ण सरलतम उत्तर है, हालाँकि।
न्यू अलेक्जेंड्रिया

3
जवाब में एम्बेडेड बाइनरी एन्कोडिंग टेबल बहुत उपयोगी है। Tnx
लूसियानो

2
The एंडियननेस ’बहुत महत्वपूर्ण है। यदि आप आईडी को बाइट के रूप में संग्रहीत करते हैं तो आपको GUID और UUID से अलग-अलग परिणाम मिलेंगे।
कैलाबासिन

और कल्पना कीजिए, प्राणी मात्र ६६५ तक ही अटके हैं! मैं इसे कैसे नहीं बढ़ा सकता था?
हाकॉन लोट्टविट

655

GUID Microsoft का UUID मानक का कार्यान्वयन है।

प्रति विकिपीडिया :

GUID शब्द का अर्थ आमतौर पर Microsoft द्वारा यूनिकली आइडेंटिफ़ायर (UUID) मानक के कार्यान्वयन से है ।

उसी विकिपीडिया लेख से एक अद्यतन उद्धरण:

RFC 4122 में ही कहा गया है कि UUIDs को "GUIDs" के रूप में भी जाना जाता है। यह सब बताता है कि "GUID", मूल रूप से Microsoft द्वारा उपयोग किए जाने वाले UUID के एक प्रकार का उल्लेख करते हुए, UUID के लिए केवल एक वैकल्पिक नाम बन गया है ...


39
(जी विश्व स्तर पर है)
ted.strauss

487
जैसे Microsoft हर जगह (ब्रह्माण्ड) में काम करने वाली चीज़ को लेता है और इसे बहुत छोटे उप-भाग (ग्लोब) में काम करता है :)
Gus

33
ध्यान दें कि यदि आप Microsoft के GUID बाइनरी प्रतिनिधित्व से एक मानक UUID में परिवर्तित करना चाहते हैं, तो आपको यहां "बाइनरी एन्कोडिंग" अनुभाग में विस्तृत रूप में पहले तीन (चार) डेटा फ़ील्ड्स की एंडियननेस को फ्लिप करना होगा: en.wikipedia.org/ विकी / ग्लोबली_निक_न्यूनिफायर
फॉर्म

87
यही कारण है कि अंतरिक्ष यात्रियों को आईएसएस पर विंडोज स्थापित करने की अनुमति नहीं है।
intuited

10
@bdukes लगता है कि विकिपीडिया ने आपको उनके बयान के रूप में बदल दिया है। अब यह पढ़ता हैThe term "GUID" typically refers to various implementations of the universally unique identifier (UUID) standard.
खादिम अली

13

ज़रुरी नहीं। GUID अधिक Microsoft-केंद्रित है जबकि UUID का अधिक व्यापक रूप से उपयोग किया जाता है (जैसे, कलश में: uuid: URN योजना और CORBA में)।


1
Microsoft-केंद्रितता की परिभाषा और प्रभाव क्या है?
कार्ल रिक्टर

8

GUID का उन क्षेत्रों में लंबे समय तक उपयोग होता है जहां यह आवश्यक नहीं है कि UUID के समान ही 128-बिट मान हो। उदाहरण के लिए, RSS विनिर्देश GUIDs को आपके चयन के किसी भी स्ट्रिंग होने के लिए परिभाषित करता है , जब तक कि यह अद्वितीय है, एक ".Permalink" विशेषता के साथ यह निर्दिष्ट करने के लिए कि आप जिस मूल्य का उपयोग कर रहे हैं वह केवल आइटम के सिंडिकेटेड होने के लिए एक Permalink है।


0

माइक्रोसॉफ्ट का GUIDशाब्दिक प्रतिनिधित्व यूयूआईडी के रूप में हो सकता है जो दो घुंघराले ब्रेसिज़ से घिरा हो {}


6
यह केवल GUID के पाठीय प्रतिनिधित्व के लिए है। वास्तविक संरचना अलग है।
बेनामी

-2

SQL सर्वर में GUID और PostgreSQL में UUID के बीच एक अंतर पत्र मामला है; SQL सर्वर आउटपुट ऊपरी जबकि PostgreSQL आउटपुट कम है।

हेक्साडेसिमल मान "ए" के माध्यम से "एफ" निचले मामले के पात्रों के रूप में आउटपुट होते हैं और इनपुट पर असंवेदनशील होते हैं। - rfc4122 # अनुभाग -3

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.