2011-10-11 11 views
38

UUID specification 4 पूर्वनिर्धारित नामस्थान जो इसे "संभावित दिलचस्प" का वर्णन करता है परिभाषित करता है - अन्य बातों के अलावा, जिसका अर्थ है, "अगर अन्य लोगों को इस नाम स्थान में UUIDs जेनरेट किया है तो आप उन्हें सत्यापित कर सकते हैं":यूयूआईडी नेमस्पेस कहां से आते हैं?

DNS के लिए
  • 6ba7b810-9dad-11d1-80b4-00c04fd430c8
  • यूआरएल
  • 6ba7b812-9dad-11d1-80b4-00c04fd430c8 के लिए 6ba7b811-9dad-11d1-80b4-00c04fd430c8 आईएसओ OID
  • 6ba7b814-9dad-11d1-80b4-00c04fd430c8 X.500 डीएन
0 के लिए के लिए

ये कहां से आए थे?

विशेष रूप से;

  • यदि मैं अपना नामस्थान यूयूआईडी उत्पन्न कर रहा हूं तो क्या मुझे विशेष रूप से कुछ भी टालना चाहिए?
  • मुझे पता है कि यूयूआईडी स्पेस कितना बड़ा है, लेकिन क्या इसका टकराव पर कोई प्रभाव पड़ता है?
  • उन्होंने यूयूआईडी 'संस्करण संख्या' के रूप में वृद्धि के लिए चौथा ऑक्टेट क्यों चुना है?
  • क्या मेरे प्रश्नों का अर्थ है कि मुझे यूयूआईडी के बारे में कुछ मौलिक याद आ रही है?
+1

rfc4122 कहते हैं: " तंत्र या सम्मेलनों के नाम आवंटन और उनके नाम रिक्त स्थान के भीतर उनकी विशिष्टता सुनिश्चित करने के लिए इस्तेमाल किया इस विनिर्देश के दायरे से बाहर हैं।" 4.3 ^^ में लेकिन मुझे नहीं पता कि यह कहां निर्दिष्ट है। –

उत्तर

41

सबसे पहले, स्पष्ट होने के लिए, यह पूरी चर्चा संस्करण 3 & 5 यूयूआईडी तक ही सीमित है। मेरे (अनावश्यक) अनुभव में, संस्करण 4 (यादृच्छिक) यूयूआईडी का सबसे अधिक उपयोग किया जाता है।

4122 के namespaced UUID पीढ़ी एल्गोरिथ्म अस्पष्ट शुरू होता है:

का आवंटन एक UUID एक "नाम अंतरिक्ष आईडी"

की "नाम अंतरिक्ष आईडी" कोई अन्य जिक्र नहीं है के रूप में उपयोग करने के लिए आवंटन , और न तो मैं और न ही python आरएफसी 4122 में सूचीबद्ध चार से परे किसी भी मानकीकृत रिक्त स्थान पाए गए हैं।

तो आपके पहले प्रश्न का उत्तर,

  • यदि मैं अपना नामस्थान यूयूआईडी उत्पन्न कर रहा हूं तो क्या मुझे विशेष रूप से कुछ भी टालना चाहिए?

आपको केवल चार मानक नामस्थानों से बचने की आवश्यकता है।


अगले प्रश्न,

  • मुझे पता है कितना बड़ा UUID जगह नहीं है हूँ, लेकिन इस टकराव के बारे में कोई निहितार्थ है?

    1. अपने नाम स्थान के अंदर UUIDs भिड़ना होगा:

के दो भाग हैं? 4122 से Verbatim:

[आपके] नामस्थान में दो अलग-अलग नामों से उत्पन्न यूयूआईडी अलग होना चाहिए (बहुत अधिक संभावना के साथ)।

  • क्या आपका नेमस्पेस यूयूआईडी अन्य नामस्थानों के साथ टकराएगा? मैं एक सीधा जवाब है, वहाँ "नाम अंतरिक्ष आईडी" आवंटन के लिए कोई मानक है के बाद से नहीं मिल सकता है, लेकिन section 4.1.1 में तर्क संगत लगता है:

    इंटरोऑपरेबिलिटी, एक यहां बताए गए के अलावा अन्य वेरिएंट के साथ किसी भी रूप में इसकी गारंटी नहीं है, और अभ्यास में कोई समस्या होने की संभावना नहीं है।


    • वे 4 UUID 'संस्करण संख्या' का एक प्रकार के रूप में वृद्धि करने के लिए ओकटेट क्यों चुना है?

    यह एक रहस्य का एक सा है। सौभाग्य से, हमारे पास यूयूआईडी के लिए एक कल्पना है, इसलिए हम उन्हें कुछ अंतर्दृष्टि के लिए कर सकते हैं।

    ध्यान दें कि (0 सूचकांक) 8 वीं ओकटेट सभी मामलों में 8 के साथ शुरू होता है, तो हम आरएफसी 4122 संस्करण UUIDs के साथ काम कर रहे हैं। ओह।

    अब संस्करण के लिए ऑक्टेट 6 देखें: 1, हम संस्करण 1 समय-आधारित यूयूआईडीएस से निपट रहे हैं।

    यह answer संस्करण 1 यूयूआईडी से पायथन डेटाटाइम निकालने के लिए एक आसान एल्गोरिदम है। एल्गोरिदम लागू करने से फरवरी 4, 1 99 8 में एक समय पैदा होता है। मुझे अभी तक इस तारीख में अर्थ नहीं मिला है। तीसरे ऑक्टेट में वृद्धि करने से तारीख को सबसे छोटा एन्कोडेबल टाइम अंतराल (100ns) जोड़ता है।


    • मेरे सवालों का मतलब है कि मैं कुछ UUIDs के बारे में बुनियादी याद कर रहा हूँ?

    नहीं। यूयूआईडी नेमस्पेस की बहुत कम चर्चा है, क्योंकि यादृच्छिक यूयूआईडी इतनी आसान हैं।

    +7

    यह बहुत अच्छा है, खासकर उन नामस्थानों का निर्णायक। ऐसा लगता है कि 4 फरवरी, 1 99 8 को यूयूआईडी ड्राफ्ट विनिर्देश की तारीख के अनुरूप है - http://tools.ietf.org/html/draft-leach-uuids-guids-01 – Gareth

    +1

    नामस्थान यूयूआईडी संस्करण 1 है। मेरा मानना ​​है कि आपने गणना की है तारीख सही ढंग से। अंतिम 12 हेक्स वर्ण होस्ट आईडी हैं, और आमतौर पर यूयूआईडी उत्पन्न करने वाली मशीन के मैक पते से गणना की जाती है। ऑनलाइन ओयूआई डेटाबेस का उपयोग करके, हम बता सकते हैं कि "00c04f" का मतलब है कि यह डेल बॉक्स पर उत्पन्न हुआ था। व्यक्तिगत रूप से, मैं जानना चाहता हूं कि "6ba7b813" क्या हुआ ... :) –

    +0

    @ChrisCogdon re: '6ba7b813 "के साथ क्या हुआ - शायद शायद spec लेखकों triskaidekaphobic थे, या हमें डर था। :) –

    2

    यदि मैं अपना नामस्थान यूयूआईडी उत्पन्न कर रहा हूं तो क्या मुझे विशेष रूप से कुछ भी टालना चाहिए?

    नहीं। आपका नामस्थान यूयूआईडी किसी भी सामान्य तरीके से उत्पन्न यूयूआईडी हो सकता है। तो, उदाहरण के लिए, आप शायद अपने नामस्थान यूयूआईडी के रूप में उपयोग करने के लिए संस्करण 1 या संस्करण 4 यूयूआईडी उत्पन्न करना चाहते हैं।यह लिनक्स या ओएस एक्स पर uuidgen प्रोग्राम के साथ किया जा सकता है या आप आसानी से version 1 या version 4 यूयूआईडी उत्पन्न कर सकते हैं।

    +1

    वैकल्पिक रूप से, मानक नेमस्पेस यूयूआईडी (आरएफसी 4122 का परिशिष्ट सी) और 'your' रूट नेमस्पेस यूयूआईडी उत्पन्न करने के लिए अपने नेमस्पेस की स्ट्रिंग का उपयोग करें। फिर प्रत्येक आवश्यक यूयूआईडी उत्पन्न करने के लिए उस नामस्थान के भीतर और नामों का उपयोग करें। उदा।, कुछ ऐसा: 'root = uuid (uuid.URL, "www.example.com"); पेज 1 = यूयूआईडी (रूट, "पेज 1.html"); पेज 2 = यूयूआईडी (रूट, "पेज 2.html"); '// हाँ, मुझे लगता है कि यूयूआईडी के सीटीओ को पता है कि क्या करना है। :) –

    संबंधित मुद्दे