ULID क्या है?
ULID (Universally Unique Lexicographically Sortable Identifier) एक 128-बिट आइडेंटिफायर फॉर्मेट है जिसे UUID की सीमाओं को दूर करने के लिए डिज़ाइन किया गया है। यह निम्नलिखित से बना है:
- Timestamp: 48 बिट्स मिलीसेकंड प्रिसिजन Unix टाइम
- Randomness: 80 बिट्स क्रिप्टोग्राफिकली-सिक्योर रैंडम डेटा
- Encoding: Base32 प्रतिनिधित्व (26 कैरेक्टर्स)
फॉर्मेट उदाहरण: 01ARZ3NDEKTSV4RRFFQ69G5FAV
ULID कैसे काम करता है
- टाइमस्टैम्प के लिए 48 बिट्स जनरेट करें (Unix टाइम मिलीसेकंड में)
- 80 बिट्स क्रिप्टोग्राफिकली-सिक्योर रैंडम डेटा जनरेट करें
- टाइमस्टैम्प (सबसे महत्वपूर्ण) को रैंडमनेस (कम से कम महत्वपूर्ण) के साथ मिलाएं
- पूरे 128-बिट वैल्यू को Crockford के Base32 वर्णमाला का उपयोग करके एन्कोड करें
- परिणाम एक 26-कैरेक्टर स्ट्रिंग है (पहले 10 कैरेक्टर्स टाइमस्टैम्प हैं, अंतिम 16 रैंडमनेस हैं)
फायदे और विचार
Advantages | Considerations |
---|---|
|
|
ULID संरचना
Component | Bits | Characters | Description |
---|---|---|---|
Timestamp | 48 बिट्स | 10 कैरेक्टर्स | Unix टाइमस्टैम्प (ms) Base32 में एन्कोड किया गया |
Randomness | 80 बिट्स | 16 कैरेक्टर्स | रैंडम बाइट्स Base32 में एन्कोड किए गए |
ULID बनाम UUID तुलना
Feature | ULID | UUID v1 | UUID v4 | UUID v7 |
---|---|---|---|---|
Size | 128 बिट्स | 128 बिट्स | 128 बिट्स | 128 बिट्स |
स्ट्रिंग लंबाई | 26 कैरेक्टर्स | 36 कैरेक्टर्स | 36 कैरेक्टर्स | 36 कैरेक्टर्स |
Time-based | ✅ | ✅ | ❌ | ✅ |
प्राकृतिक सॉर्टिंग | ✅ | ❌ | ❌ | ✅ |
URL सुरक्षित | ✅ | ❌ | ❌ | ❌ |
MAC एड्रेस एक्सपोजर | ❌ | ✅ | ❌ | ❌ |
रैंडम कंपोनेंट | ✅ | ❌ | ✅ | ✅ |
कैनोनिकल स्टैंडर्ड | ❌ | ✅ | ✅ | ⚠️ ड्राफ्ट |
सामान्य उपयोग के मामले
- डेटाबेस प्राइमरी कीज़: प्रदर्शन-अनुकूलित इंडेक्स
- वितरित सिस्टम: समन्वय-मुक्त जनरेशन
- APIs: साफ, URL-सुरक्षित आइडेंटिफायर्स
- टाइम-सीरीज डेटा: नेटिव कालानुक्रमिक क्रम
- लॉग सिस्टम: सॉर्टेबल इवेंट आइडेंटिफायर्स
- आधुनिक एप्लिकेशन: जहां UUID सीमाएं समस्या पैदा करती हैं
क्यों ULID चुनें?
- Sortability: निर्माण समय के अनुसार लेक्सिकोग्राफिकली सॉर्ट करता है
- URL सुरक्षा: कोई URL एन्कोडिंग आवश्यक नहीं (UUIDs के हाइफ़न के विपरीत)
- Compactness: 26 कैरेक्टर्स बनाम UUID के 36
- केस असंवेदनशीलता: उपयोगकर्ता इनपुट त्रुटियों को कम करता है
- Monotonicity: एक ही मिलीसेकंड के भीतर वैकल्पिक मोनोटोनिक सॉर्टिंग
- कोई विशेष कैरेक्टर्स नहीं: सरल, केवल अल्फ़ान्यूमेरिक फॉर्मेट
अक्सर पूछे जाने वाले प्रश्न
ULID की तुलना UUID v7 से कैसे होती है?
दोनों सॉर्टेबिलिटी के लिए Unix timestamps का उपयोग करते हैं और इनमें रैंडम कंपोनेंट्स होते हैं। मुख्य अंतर एन्कोडिंग (Base32 बनाम hex), फॉर्मेट (26 कैरेक्टर्स बनाम 36), और स्टैंडर्डाइजेशन (UUID v7 ड्राफ्ट RFC स्पेसिफिकेशन में है) हैं।
क्या मैं ULID से निर्माण समय निकाल सकता हूँ?
हाँ। पहले 10 कैरेक्टर्स एक मिलीसेकंड-प्रिसिजन Unix टाइमस्टैम्प का प्रतिनिधित्व करते हैं जिसे डिकोड करके मानक datetime में बदला जा सकता है।
क्या ULIDs UUID डेटाबेस फ़ील्ड के साथ संगत हैं?
नहीं। ULIDs एक अलग फॉर्मेट का उपयोग करते हैं और इन्हें स्ट्रिंग्स या बाइनरी डेटा के रूप में स्टोर करना होगा, न कि नेटिव UUID डेटाबेस प्रकारों में।
ULIDs में मोनोटोनिसिटी क्या है?
कुछ ULID इम्प्लीमेंटेशन एक मोनोटोनिक विकल्प प्रदान करते हैं जो एक ही मिलीसेकंड के भीतर भी क्रमिक सॉर्ट ऑर्डर सुनिश्चित करता है, ULIDs के लिए रैंडम कंपोनेंट को बढ़ाकर जो एक ही टाइमस्टैम्प में बनाए गए हैं।
ULID कौन सा कैरेक्टर सेट उपयोग करता है?
ULID Crockford के Base32 एन्कोडिंग (0-9, A-Z जिसमें I, L, O, U शामिल नहीं हैं) का उपयोग करता है जो IDs को मैन्युअली पढ़ते या दर्ज करते समय भ्रम और ट्रांसक्रिप्शन त्रुटियों को कम करने के लिए डिज़ाइन किया गया है।
Resources
Crockford का Base32 वर्णमाला
एन्कोडिंग वैल्यू | Character | Notes |
---|---|---|
0-9 | 0-9 | दशमलव अंक |
10-31 | A-Z | पढ़ने में आसानी के लिए I, L, O, U को बाहर रखा गया |
कैरेक्टर्स: 0123456789ABCDEFGHJKMNPQRSTVWXYZ
यह एन्कोडिंग डिकोडिंग के लिए केस-इंसेंसिटिव है (लेकिन ULIDs आमतौर पर अपरकेस में जनरेट होते हैं)।