सामग्री पर जाएं

वितरित सिस्टम के लिए कुशल CUID जनरेटर

वितरित सिस्टम, डेटाबेस और वेब एप्लिकेशन के लिए टकराव-प्रतिरोधी अद्वितीय पहचानकर्ता (CUIDs) उत्पन्न करें। तुरंत स्केलेबल, क्रमबद्ध आईडी बनाएं।

CUID जनरेटर

तुरंत और आसानी से टकराव-प्रतिरोधी आईडी उत्पन्न करें।

आईडी बनाने के लिए "नया CUID जनरेट करें" पर क्लिक करें।
लोडिंग कैलकुलेटर...
📚

दस्तावेज़ीकरण

CUID क्या है?

CUID (टकराव-प्रतिरोधी विशिष्ट पहचानकर्ता) अक्षरों और अंकों की एक छोटी स्ट्रिंग होती है, जिसका उपयोग किसी रिकॉर्ड, फ़ाइल या घटना को इस तरह नाम देने के लिए किया जाता है कि किन्हीं दो आइटम का नाम एक जैसा न हो। यह टूल फ़ॉर्मैट के वर्तमान संस्करण CUID2 को @paralleldrive/cuid2 लाइब्रेरी का उपयोग करके बनाता है। प्रत्येक आईडी की लंबाई 25 वर्ण होती है, इसमें केवल छोटे अक्षर और अंक होते हैं, और यह पूरी तरह ब्राउज़र में बनाई जाती है—सर्वर को कुछ भी नहीं भेजा जाता।

इस CUID जनरेटर का उपयोग कैसे करें

  1. आईडी बनाने के लिए नया CUID जनरेट करें पर क्लिक करें।
  2. इसे कॉपी करने के लिए क्लिपबोर्ड पर कॉपी करें पर क्लिक करें।
  3. आईडी को डेटाबेस, फ़ाइल नाम या एप्लिकेशन में पेस्ट करें।
  4. दूसरी आईडी के लिए फिर से जनरेट करें पर क्लिक करें। अलग-अलग CUID2 मानों के बीच टकराव की संभावना अत्यंत कम है, हालांकि गणितीय रूप से असंभव नहीं।
  5. परिणाम हटाने के लिए रीसेट पर क्लिक करें।

बनाई गई आईडी पृष्ठ के URL में भी संग्रहीत होती है, इसलिए परिणाम का लिंक साझा या बुकमार्क किया जा सकता है।

CUID2 की संरचना और सूत्र

एक CUID2 इस प्रकार बनाई जाती है:

1id = randomLetter + base36( SHA3-512( time + entropy + counter + fingerprint ) ).substring(1, length)
2

हैश फ़ंक्शन चार निजी इनपुट को मिलाता है: वर्तमान समय, प्रति-सत्र काउंटर, होस्ट मशीन का फ़िंगरप्रिंट और यादृच्छिक एंट्रॉपी। यह इन्हें SHA3-512 के माध्यम से संसाधित करता है, परिणाम को आधार 36 में बदलता है (अंक 0–9 और अक्षर a-z), फिर उन वर्णों में से 24 वर्ण रखता है। शुरुआत में जोड़ा गया यादृच्छिक अक्षर तैयार आईडी की लंबाई 25 वर्ण कर देता है, जो इस टूल में निर्धारित लंबाई है।

केवल पहला वर्ण स्वतंत्र होता है: शुरुआत में रखा गया एक यादृच्छिक अक्षर, ताकि हर आईडी अंक के बजाय अक्षर से शुरू हो। SQL तालिका और कॉलम नामों जैसी कई प्रणालियों में पहचानकर्ताओं का अक्षर से शुरू होना आवश्यक होता है, इसलिए इससे CUID2 लगभग कहीं भी नाम के रूप में सुरक्षित रहती है। उस पहले अक्षर के बाद का प्रत्येक वर्ण एक निरंतर, अपारदर्शी हैश-बॉडी का हिस्सा होता है—इसके अलग-अलग खंड नहीं होते।

चूँकि हैश केवल एक दिशा में काम करता है, इसलिए इसके किसी भी इनपुट को तैयार आईडी से वापस नहीं निकाला जा सकता। CUID2 में ऐसा कोई पुनर्प्राप्त करने योग्य टाइमस्टैम्प, काउंटर या फ़िंगरप्रिंट नहीं होता। यह गोपनीयता और सुरक्षा का जानबूझकर चुना गया उपाय है: केवल आईडी से यह पता नहीं चल सकता कि वह कब या कहाँ बनाई गई थी।

हल किया गया उदाहरण

इस टूल से आईडी बनाने पर यह प्राप्त हो सकती है:

1vcpuhcj51eomj1o31dnlqopu0
2

यहाँ v यादृच्छिक शुरुआती अक्षर है, और cpuhcj51eomj1o31dnlqopu0 (24 वर्ण) हैश-बॉडी है। दोनों हिस्से केवल इसलिए अलग दिखते हैं क्योंकि पहले वर्ण का अक्षर होना सुनिश्चित है—हैश-बॉडी में अक्षरों और अंकों का मिश्रण हो सकता है।

प्रणालियाँ CUID2 का उपयोग क्यों करती हैं

  • समन्वय की आवश्यकता नहीं। कोई भी मशीन केंद्रीय सर्वर या डेटाबेस से अगला मान माँगे बिना अपने-आप एक मान्य आईडी बना सकती है।
  • टकराव-प्रतिरोध। समय, काउंटर, होस्ट फ़िंगरप्रिंट और यादृच्छिक एंट्रॉपी का मिश्रण दो मशीनों द्वारा एक ही आईडी बनाने की संभावना को अत्यंत कम कर देता है, यहाँ तक कि प्रति सेकंड कई आईडी बनाते समय भी।
  • URL के अनुकूल। CUID2 में केवल छोटे अक्षर और अंक होते हैं, इसलिए वेब पते में उपयोग के लिए इसे एन्कोड करने की आवश्यकता नहीं पड़ती।
  • तेज़, निजी निर्माण। यह टूल जनरेटर को ब्राउज़र में चलाता है, इसलिए आईडी तुरंत बनती हैं और डिवाइस से बाहर नहीं जातीं।

CUID2 आईडी निर्माण समय के अनुसार क्रमबद्ध नहीं की जा सकतीं। डेटाबेस की ऑटो-इन्क्रीमेंट संख्या या पुराने CUID (संस्करण 1) फ़ॉर्मैट के विपरीत, CUID2 अपना टाइमस्टैम्प खुले रूप में संग्रहीत करने के बजाय हैश के भीतर छिपाती है। जिन एप्लिकेशन को रिकॉर्ड को निर्माण-क्रम के अनुसार क्रमबद्ध करना हो, उन्हें आईडी के साथ एक अलग टाइमस्टैम्प कॉलम रखना चाहिए।

CUID2 बनाम UUID बनाम ऑटो-इन्क्रीमेंट आईडी

विशेषताCUID2UUID v4ऑटो-इन्क्रीमेंट
लंबाई25 वर्ण36 अक्षर (हाइफ़न सहित)अलग-अलग (आमतौर पर छोटी संख्या)
वर्णों का समुच्चयछोटे अक्षर और अंकहेक्साडेसिमल अंक और हाइफ़नअंक
केंद्रीय समन्वय की आवश्यकतानहींनहींहाँ (डेटाबेस अनुक्रम)
निर्माण समय के अनुसार क्रमबद्धनहींनहींहाँ
एन्कोडिंग के बिना URL के अनुकूलहाँहाँहाँ

CUID2 और UUID v4 एक ही समस्या हल करते हैं: केंद्रीय समन्वय के बिना आईडी बनाना। CUID2 छोटी है और इसमें वर्णों का छोटा समुच्चय इस्तेमाल होता है, जिससे इसे पढ़ना और URL में पेस्ट करना आसान होता है। UUID भी वेब पते में सुरक्षित है, क्योंकि हाइफ़न URL में आरक्षित न किया गया वर्ण है, लेकिन यह 11 वर्ण लंबी है।

सामान्य उपयोग

  • वितरित डेटाबेस में प्राथमिक कुंजियाँ, जहाँ कई सर्वर स्वतंत्र रूप से पंक्तियाँ जोड़ते हैं
  • कई माइक्रोसर्विस में एक कार्रवाई का अनुसरण करने के लिए उपयोग की जाने वाली अनुरोध या ट्रेस आईडी
  • अपलोड की फ़ाइलों के नाम, ताकि कोई भी दो फ़ाइलें एक-दूसरे को अधिलेखित न करें
  • वेब एप्लिकेशन के लिए सत्र या टोकन आईडी
  • Kafka या RabbitMQ जैसी कतारों में संदेश आईडी

संक्षिप्त इतिहास

मूल CUID फ़ॉर्मैट को वितरित एप्लिकेशन के लिए UUID के विकल्प के रूप में Eric Elliott ने 2012 में जारी किया था। उसी Paralleldrive प्रोजेक्ट द्वारा प्रकाशित CUID2 ने क्रिप्टोग्राफ़िक हैश के आधार पर फ़ॉर्मैट को फिर से डिज़ाइन किया और मूल संस्करण में दिखाई देने वाले पुनर्प्राप्त करने योग्य टाइमस्टैम्प और काउंटर को हटा दिया। यह टूल केवल CUID2 आईडी बनाता है।

अक्सर पूछे जाने वाले प्रश्न

CUID (v1) और CUID2 में क्या अंतर है? CUID v1 आईडी के भीतर एक दृश्यमान टाइमस्टैम्प और काउंटर संग्रहीत करता था, जिससे आईडी क्रमबद्ध की जा सकती थीं, लेकिन यह भी पता चल जाता था कि वे कब बनाई गईं और कितनी आईडी बनाई गई थीं। CUID2 इन दृश्यमान फ़ील्ड को एक-तरफ़ा हैश से बदलती है, इसलिए आईडी से कोई जानकारी वापस नहीं पढ़ी जा सकती।

क्या इस टूल से बनाई गई CUID आईडी निर्माण समय के अनुसार क्रमबद्ध की जा सकती हैं? नहीं। CUID2 में कोई पुनर्प्राप्त करने योग्य टाइमस्टैम्प नहीं होता, इसलिए केवल स्ट्रिंग देखकर आईडी को उनके निर्माण समय के अनुसार क्रमबद्ध नहीं किया जा सकता।

बनाई गई आईडी कितनी लंबी होती है, और क्या लंबाई बदली जा सकती है? यह टूल हमेशा 25-वर्ण वाली आईडी बनाता है। इस टूल में अलग लंबाई का अनुरोध करने का कोई विकल्प नहीं है।

क्या दो अलग-अलग मशीनें एक ही समय पर एक जैसी CUID2 बना सकती हैं? सिद्धांततः यह संभव है, लेकिन व्यवहार में इसकी संभावना अत्यंत कम है। प्रत्येक आईडी होस्ट-विशिष्ट फ़िंगरप्रिंट को यादृच्छिक एंट्रॉपी के साथ मिलाती है, इसलिए स्वतंत्र मशीनों द्वारा कभी एक ही हैश बनाने की संभावना बहुत कम है।

क्या यह टूल कोई डेटा सर्वर को भेजता है? नहीं। आईडी ब्राउज़र में चल रहे JavaScript द्वारा स्थानीय सिस्टम घड़ी और ब्राउज़र से प्राप्त यादृच्छिकता का उपयोग करके बनाई जाती है। कुछ भी प्रेषित नहीं किया जाता।

क्या मैं CUID2 को डेटाबेस की प्राथमिक कुंजी के रूप में उपयोग कर सकता हूँ? हाँ। वितरित डेटाबेस में CUID2 आईडी प्राथमिक कुंजियों के रूप में अच्छी तरह काम करती हैं, क्योंकि कोई भी नोड केंद्रीय अनुक्रम से जाँच किए बिना एक आईडी बना सकता है। वे प्रविष्टि समय के अनुसार स्वाभाविक रूप से क्रमबद्ध नहीं होतीं, इसलिए जिस एप्लिकेशन को ऐसा क्रम चाहिए, उसे एक अलग created_at कॉलम रखना चाहिए।