सभी लेख

UUID: ऐसे आइडेंटिफ़ायर कैसे बनते हैं जो लगभग कभी नहीं दोहराते

भारत की आधार प्रणाली भी एक "यूनिक आइडेंटिफ़ायर" ही है — एक 12-अंकों का UID जो हर निवासी को दिया जाता है। लेकिन इसमें और UUID में एक बुनियादी फ़र्क़ है: आधार नंबर एक केंद्रीय प्राधिकरण (UIDAI) जारी करता है और उसकी विशिष्टता की गारंटी एक सेंट्रल डेटाबेस से मैच करके दी जाती है, जबकि UUID कोई भी मशीन बिना किसी केंद्रीय अथॉरिटी से संपर्क किए, पूरी तरह ऑफ़लाइन भी जनरेट कर सकती है — फिर भी दोनों का व्यावहारिक टकराव लगभग शून्य रहता है।

UUID के वर्शन

  • v1 — मौजूदा समय और नेटवर्क कार्ड के MAC एड्रेस पर आधारित। यूनीकनेस की गारंटी देता है, लेकिन आंशिक रूप से बताता है कि आइडेंटिफ़ायर कब और किस डिवाइस पर बना।
  • v4 — पूरी तरह रैंडम (वर्शन बताने वाले कुछ बिट्स को छोड़कर)। आज सबसे आम विकल्प है, ठीक इसलिए क्योंकि यह कोई साइड इन्फ़ॉर्मेशन लीक नहीं करता।
  • v5 — डिटरमिनिस्टिक, एक नेमस्पेस और स्ट्रिंग के हैश के रूप में कैलकुलेट होता है — एक जैसा इनपुट हमेशा एक जैसा UUID देता है।

कोलिज़न की संभावना लगभग शून्य क्यों है

UUID v4 में 122 बिट रैंडम होते हैं। सदियों तक हर सेकंड अरबों UUID जनरेट करने पर भी, कम से कम एक कोलिज़न की संभावना अत्यंत कम रहती है — यह इतने बड़े स्पेस के लिए बर्थडे पैराडॉक्स पर आधारित गणितीय तथ्य है।

यह किस काम आता है

  • बिना किसी सेंट्रल काउंटर या सर्वरों के बीच कोऑर्डिनेशन के डेटाबेस प्राइमरी की जनरेट करना।
  • डिस्ट्रिब्यूटेड सिस्टम में सेशन, रिक्वेस्ट, या ट्रांज़ैक्शन आइडेंटिफ़ायर बनाना, बिना आधार जैसी केंद्रीय रजिस्ट्री के।
  • अनुमान लगाए जा सकने वाले सीक्वेंशियल ID से बचना, जिन्हें गिनना आसान है (1, 2, 3... के उलट)।

UUID v7: रैंडमनेस और सॉर्टिंग के बीच समझौता

पूरी तरह रैंडम UUID v4 डेटाबेस इंडेक्स की परफ़ॉर्मेंस पर बुरा असर डालता है — नए रिकॉर्ड इंडेक्स ट्री में अंत की बजाय अस्त-व्यस्त पोज़िशन पर इंसर्ट होते हैं। नया UUID v7 आइडेंटिफ़ायर के शुरुआती बिट्स में टाइमस्टैम्प एम्बेड करके इसे हल करता है: वैल्यूज़ v4 जितनी ही लगभग यूनीक रहती हैं, लेकिन सीक्वेंशियल काउंटर की तरह क्रिएशन टाइम के अनुसार स्वाभाविक रूप से सॉर्ट होती हैं।

टूल आज़माएँ