ULID जनरेटर: वेळ-क्रमाने लावता येणारे, कॉम्पॅक्ट आयडेंटिफायर
हे पृष्ठ ULID हा आयडेंटिफायर फॉरमॅट निवडून, तुम्हाला हव्या तितक्या आयडी (१ ते १०० दरम्यान) त्वरित निर्माण करते. प्रत्येक ULID ही २६ वर्णांची, केस-इन्सेन्सिटिव्ह स्ट्रिंग असते. ही साधने तुम्हाला वैयक्तिक आयडी क्लिपबोर्डवर कॉपी करू देतात किंवा सर्व एकाच वेळी "सर्व कॉपी करा" बटणाद्वारे कॉपी करू शकतात. साधनाची स्थिती "Ready.", "Generated." आणि "Copied all!" अशा संदेशांद्वारे दर्शविली जाते.
हे पृष्ठ इतरांपेक्षा कसे वेगळे आहे?
या साधनावरील इतर फॉरमॅट्सच्या विपरीत, ULID हे यूयूआयडीपेक्षा लहान (२६ वर्ण विरुद्ध ३६ वर्ण) आयडेंटिफायर तयार करते. ते फक्त Crockford's base32 वर्णमाला वापरते — यामुळे ते केस-इन्सेन्सिटिव्ह ठरते आणि त्यात हायफन नसतात. ULID हे निर्मितीच्या वेळेनुसार शब्दकोषीयदृष्ट्या क्रमवारी लावता येते, कारण पहिले १० वर्ण मिलिसेकंद-प्रिसिजन टाइमस्टॅम्प एन्कोड करतात. ते URL-सेफ देखील आहेत, म्हणजे त्यांना कोणत्याही एस्केपिंगची आवश्यकता नाही. या पृष्ठावर अप्परकेस किंवा हायफन टॉगल उपलब्ध नाहीत, कारण ULID स्वाभाविकपणे केस-इन्सेन्सिटिव्ह आणि हायफन-मुक्त आहे. यादृच्छिक भाग उर्वरित १६ वर्ण (८० बिट्स) व्यापतो आणि एकूण अंतर्निहित मूल्य १२८ बिट्स आहे.
ULID ची अंतर्गत रचना
ULID मध्ये एकूण १२८ बिट्स असतात, जे दोन भागात विभागले जातात:
- ४८-बिट टाइमस्टॅम्प: पहिले १० वर्ण मिलिसेकंद-प्रिसिजन टाइमस्टॅम्प एन्कोड करतात. हा टाइमस्टॅम्प युनिक्स एपोक (१ जानेवारी १९७०) पासूनच्या मिलिसेकंदांची संख्या दर्शवितो.
- ८०-बिट यादृच्छिक भाग: उर्वरित १६ वर्ण ८० बिट्सच्या यादृच्छिक डेटापासून तयार केले जातात. हा भाग ULID ला अद्वितीयता प्रदान करतो.
या रचनेमुळे ULID ची पहिली १० वर्ण कोणत्याही कालानुक्रमानुसार क्रमवारी लावता येतात. उदाहरणार्थ, जर दोन ULID एकाच मिलिसेकंदात तयार केले गेले, तर त्यांची टाइमस्टॅम्प समान असेल, परंतु यादृच्छिक भाग भिन्न असेल. तथापि, एकाच मिलिसेकंदात तयार केलेल्या ULID चा क्रम हमी दिला जात नाही — ही एक मर्यादा आहे.
Crockford base32 एन्कोडिंग
ULID मध्ये Crockford base32 एन्कोडिंग वापरले जाते. हे एन्कोडिंग खालील वर्णमालेवर आधारित आहे: ०-९, A-Z (I, L, O, U वगळता). या वर्णमालेत I आणि L, तसेच O आणि 0 यांच्यातील गोंधळ टाळण्यासाठी ही वर्ण वगळण्यात आली आहेत. यामुळे ULID केस-इन्सेन्सिटिव्ह ठरते — "a" आणि "A" समान मानले जातात.
हे एन्कोडिंग कार्यक्षम देखील आहे, कारण ३२ वर्णांच्या वर्णमालेसाठी प्रत्येक वर्ण ५ बिट्स दर्शवितो. २६ वर्ण * ५ बिट्स = १३० बिट्स, परंतु प्रत्यक्षात अंतर्निहित मूल्य १२८ बिट्स आहे. काही अतिरिक्त बिट्स पॅडिंगसाठी वापरल्या जातात.
ULID ची तुलना UUID v4 आणि UUID v7 शी
| वैशिष्ट्य | ULID | UUID v4 | UUID v7 |
|---|---|---|---|
| लांबी | २६ वर्ण | ३६ वर्ण (३२ अंक + ४ हायफन) | ३६ वर्ण (३२ अंक + ४ हायफन) |
| केस-इन्सेन्सिटिव्ह | होय | नाही | नाही |
| हायफन | नाही | होय (४) | होय (४) |
| टाइम-सॉर्टेबल | होय (मिलिसेकंद-प्रिसिजन) | नाही | होय (मिलिसेकंद-प्रिसिजन) |
| रँडमनेस | ८० बिट्स | १२२ बिट्स | ७४ बिट्स |
| URL-सेफ | होय | होय (परंतु हायफन एस्केपिंग आवश्यक असू शकते) | होय (परंतु हायफन एस्केपिंग आवश्यक असू शकते) |
UUID v4 पूर्णपणे यादृच्छिक आहे, तर UUID v7 मध्ये ULID प्रमाणेच टाइमस्टॅम्प समाविष्ट आहे. तथापि, UUID v7 ची रचना आणि एन्कोडिंग भिन्न आहे. ULID चा मुख्य फायदा म्हणजे त्याची कॉम्पॅक्टनेस आणि केस-इन्सेन्सिटिव्हिटी.
सॉर्टिंग वर्तन आणि क्लॉक-आधारित क्रमवारी
ULID ची पहिली १० वर्ण टाइमस्टॅम्प एन्कोड करतात, यामुळे ते शब्दकोषीयदृष्ट्या क्रमवारी लावता येतात. याचा अर्थ, जर दोन ULID वेगवेगळ्या वेळी तयार केले गेले, तर जुने ULID लेक्सिकोग्राफिकली लहान असेल.
तथापि, एकाच मिलिसेकंदात तयार केलेल्या ULID साठी हा क्रम हमी दिला जात नाही. कारण त्यांचे टाइमस्टॅम्प समान असतात, आणि यादृच्छिक भाग कोणत्याही क्रमाने तयार होऊ शकतो. याला "मिलिसेकंद-ग्रॅन्युलॅरिटी" असे म्हणतात. उच्च-वेग प्रणालींमध्ये, जिथे प्रति मिलिसेकंदात अनेक आयडी तयार होतात, ही मर्यादा लक्षात घेणे आवश्यक आहे.
टक्कर शक्यता
ULID ची टक्कर शक्यता ८०-बिट यादृच्छिक भागावर आधारित आहे. सिद्धांतानुसार, ८० बिट्ससाठी २^८० संभाव्य मूल्ये आहेत. जर तुम्ही दर मिलिसेकंदात १०,००० ULID तयार केले, तर टक्कर होण्याची शक्यता अत्यंत कमी आहे — व्यवहारात, ती दुर्लक्षित करता येईल.
तथापि, टाइमस्टॅम्प एकसारखे असल्यास, फक्त यादृच्छिक भाग भिन्न असतो. यामुळे टक्कर शक्यता थोडीशी वाढते, पण तरीही ती अतिशय कमी आहे. मोठ्या प्रणालींमध्ये, हजारो कोर किंवा नोड्सवर ULID तयार करताना, टक्कर टाळण्यासाठी योग्य यादृच्छिकता निर्माण करणे आवश्यक आहे.
URL सुरक्षा आणि एस्केपिंग
ULID ची सर्व वर्ण URL-सेफ आहेत. Crockford base32 वर्णमाला (०-९, A-Z) मध्ये कोणतेही विशेष वर्ण नाहीत ज्यांना URL मध्ये एस्केप करणे आवश्यक आहे. RFC 3986 नुसार, ही सर्व वर्ण "अनरिझर्व्हड" आहेत, म्हणजे त्यांना प्रतिशत-एन्कोडिंगची आवश्यकता नाही.
हे वैशिष्ट्य API डिझायनर्ससाठी उपयुक्त आहे, कारण ULID थेट URL मध्ये वापरता येतो.
डेटाबेस इंडेक्सिंगमध्ये वापर
ULID ची टाइम-सॉर्टेबल रचना डेटाबेस इंडेक्सिंगसाठी फायदेशीर आहे. जेव्हा नवीन आयडी जवळजवळ नेहमीच मोठ्या असतात, तेव्हा B-ट्री इंडेक्समध्ये घालणे अधिक कार्यक्षम होते. कारण नवीन आयडी सहसा शेवटच्या पानावर जोडले जातात, त्यामुळे पानांचे विभाजन कमी होते.
यूयूआयडी v4 सारख्या यादृच्छिक आयडीमध्ये, प्रत्येक नवीन आयडी इंडेक्सच्या कोणत्याही स्थानावर घातला जाऊ शकतो, ज्यामुळे अधिक पान विभाजन आणि डिस्क I/O वाढतो. ULID या समस्येचे निराकरण करते, विशेषतः उच्च-वेग लेखन प्रणालींमध्ये.
स्थानिक निर्मिती आणि गोपनीयता
हे साधन सर्व ULID ब्राउझरमध्येच तयार करते. crypto.getRandomValues() वापरून मजबूत यादृच्छिकता निर्माण केली जाते. कोणताही डेटा सर्व्हरवर पाठविला जात नाही. याचा अर्थ, तुम्ही संवेदनशील प्रकल्पांसाठी देखील ULID तयार करू शकता ज्यामध्ये डेटा गोपनीयता महत्त्वाची आहे.
हे थर्ड-पार्टी सेवांपेक्षा वेगळे आहे, जिथे आयडी सर्व्हरवर तयार केले जातात.
FAQ
ULID केस-इन्सेन्सिटिव्ह का आहे?
Crockford base32 एन्कोडिंगमुळे. हे एन्कोडिंग ३२ वर्ण (०-९, A-Z, I, L, O, U वगळता) वापरते. "a" आणि "A" समान मानले जातात, त्यामुळे केस-इन्सेन्सिटिव्हिटी मिळते.
ULID मध्ये हायफन का नाहीत?
डिझाइन बाय डिझाइन. ULID हे हायफन-मुक्त आहे, ज्यामुळे ते URL-सेफ आणि कॉम्पॅक्ट राहते. यूयूआयडीमध्ये हायफन वाचनीयता वाढवण्यासाठी असतात, पण ULID मध्ये ते आवश्यक नाहीत.
एकाच मिलिसेकंदात तयार केलेले ULID क्रमवारी लावता येतील का?
नाही. जर दोन ULID एकाच मिलिसेकंदात तयार केले गेले, तर त्यांचे टाइमस्टॅम्प समान असतात. यादृच्छिक भाग कोणत्याही क्रमाने तयार होऊ शकतो, त्यामुळे क्रम हमी दिला जात नाही.
ULID ची टक्कर शक्यता किती आहे?
८०-बिट यादृच्छिक भागामुळे, टक्कर शक्यता अतिशय कमी आहे. दर मिलिसेकंदात १०,००० ULID तयार केल्यास, टक्कर होण्याची शक्यता दुर्लक्षित करता येईल.
ULID चा वापर करताना कोणते नियम लक्षात ठेवावेत?
- फॉरमॅट बदलल्यास सर्व आयडी पुन्हा तयार होतात.
- काउंट फक्त १ ते १०० दरम्यान स्वीकारला जातो.
- वैयक्तिक ULID क्लिक करून कॉपी करता येतो.
- सर्व कॉपी करण्यासाठी "सर्व कॉपी करा" बटण वापरावे.