ULID உருவாக்கி

ஆன்லைனில் ULIDகளை உருவாக்கவும்: 48-பிட் நேரம் மற்றும் 80 சீரற்ற பிட்களுடன் கூடிய 26-எழுத்து Crockford Base32 IDகள்.

வடிவம் (Format)
உருவாக்கப்பட்ட ஐடிகள்
தயார். உங்கள் உலாவியிலேயே ULIDகளை உருவாக்குங்கள்.

இந்த ID எவ்வாறு உருவாக்கப்படுகிறது

அமைப்பு (Layout)
26 Crockford Base32 எழுத்துகள்: 10 நேர எழுத்துகளைத் தொடர்ந்து 16 சீரற்ற எழுத்துகள்.
என்ட்ரோபி (Entropy)
48-பிட் மில்லிசெகண்ட் நேர முத்திரைக்குப் பிறகு 80 சீரற்ற பிட்கள்.
நேரம்
ஆம். முதல் 10 எழுத்துகள் மில்லிசெகண்ட் நேரத்தைக் குறிக்கின்றன, மேலும் அகராதி வரிசை நேரத்தைப் பின்பற்றுகிறது.
மோதல் ஆபத்து (Collision risk)
சீரற்ற வால் பகுதி 80 பிட்களைக் கொண்டுள்ளது; ஒரே மில்லிசெகண்டில் நீங்கள் எத்தனை IDகளை உருவாக்குகிறீர்கள் என்பதைப் பொறுத்தே ஆபத்து உள்ளது.
எடுத்துக்காட்டு
01M12BRQP1MDZ7NY796AD6WRKG

உங்கள் ஐடிகள் வலுவான உலாவி சீரற்ற தன்மையுடன் உள்ளூரிலேயே உருவாக்கப்படுகின்றன. BroBroGo-விற்கு எதுவும் அனுப்பப்படுவதில்லை.

அடிக்கடி கேட்கப்படும் கேள்விகள் (FAQ)

ULID எதற்குப் பயன்படுகிறது?

ULID சிறியது, URL-க்கு உகந்தது மற்றும் எளிய உரையாக நேர வரிசைப்படுத்தக்கூடியது, இது பதிவுகள் (logs), பொருள் விசைகள் மற்றும் உருவாக்க நேரத்தின்படி வரிசைப்படுத்தப்பட வேண்டிய பதிவுகளுக்கு பயனுள்ளதாக இருக்கும்.

ULID மற்றும் UUID v7 இரண்டும் ஒன்றுதானா?

இல்லை. இரண்டும் மில்லிசெகண்ட் நேரத்தைக் கொண்டிருந்தாலும், ULID ஆனது Crockford Base32 மற்றும் 26 எழுத்துகளைப் பயன்படுத்துகிறது, அதே நேரத்தில் UUID v7 நிலையான UUID பதினாறும எண் (hexadecimal) வடிவத்தை வைத்திருக்கிறது.

இந்தப் பக்கம் ஏன் வேறுபட்டது

இந்த யுஎல்ஐடி ஜெனரேட்டர் பக்கம் மற்ற அடையாளங்காட்டி வடிவங்களில் இருந்து பல அடிப்படை வேறுபாடுகளைக் கொண்டுள்ளது. முதலில், யுஎல்ஐடி 26 எழுத்துகள் மட்டுமே கொண்டது - யுயூஐடியின் 36 எழுத்துகளுடன் ஒப்பிடும்போது 10 எழுத்துகள் குறைவு. இது க்ராக்ஃபோர்டின் பேஸ்32 எழுத்துக் கோவையை மட்டுமே பயன்படுத்துகிறது (0-9 மற்றும் A-Z இல் I, L, O, U தவிர்த்து). இதன் விளைவாக, யுஎல்ஐடி வழக்கு உணர்வற்றது (case-insensitive) மற்றும் ஹைபன்கள் எதுவும் இல்லை. முதல் 10 எழுத்துகள் ஒரு மில்லி செகண்ட் துல்லிய நேர முத்திரையை (timestamp) குறியாக்கம் செய்கின்றன, எனவே இவை உருவாக்க நேரத்தின் அடிப்படையில் அகரவரிசையில் (lexicographically) வரிசைப்படுத்தக்கூடியவை. இந்த எழுத்துகள் அனைத்தும் RFC 3986 இன் படி URL-பாதுகாப்பானவை, எனவே எஸ்கேப்பிங் தேவையில்லை. இந்தப் பக்கத்தில் பெரிய எழுத்து/சிறிய எழுத்து மாற்றும் விருப்பமோ, ஹைபன் சேர்க்கும் விருப்பமோ இல்லை - ஏனெனில் யுஎல்ஐடி இயல்பாகவே இந்த பண்புகளை கொண்டுள்ளது. முதன்மை உள்ளீடுகள்: வடிவம் தேர்வாக ULID தேர்ந்தெடுக்கப்பட்டுள்ளது, மற்றும் 1 முதல் 100 வரையிலான எண்ணிக்கை. வெளியீடு கோரப்பட்ட எண்ணிக்கையிலான யுஎல்ஐடி சரங்களின் பட்டியல்.

ULID இன் உள் அமைப்பு

ஒவ்வொரு ULIDஉம் 128 பிட்களைக் கொண்டுள்ளது. இது 48-பிட் நேர முத்திரை மற்றும் 80-பிட் சீரற்ற கூறு என இரண்டு பகுதிகளாகப் பிரிக்கப்பட்டுள்ளது. நேர முத்திரை முதல் 10 எழுத்துகளில் குறியாக்கம் செய்யப்படுகிறது - இது மில்லி செகண்ட் துல்லியத்தில் (48 பிட்கள் 2^48 ≈ 2.8 × 10^14 மில்லி செகண்டுகளைக் குறிக்கும்; இது தோராயமாக 8,925 ஆண்டுகள் வரையிலான நேரத்தை உள்ளடக்கும்). மீதமுள்ள 16 எழுத்துகள் (80 பிட்கள்) சீரற்ற தன்மையைக் கொண்டுள்ளன. மொத்த சரம் 26 எழுத்துகள் நீளம் கொண்டது.

எடுத்துக்காட்டாக, 01ARZ3NDEKTSV4RRFFQ69G5FAV என்ற ULID ஐ எடுத்துக்கொள்வோம். முதல் 10 எழுத்துகள் 01ARZ3NDEK நேர முத்திரையை (2021-09-01 12:34:56.123 UTC) குறிக்கின்றன. அடுத்த 16 எழுத்துகள் TSV4RRFFQ69G5FAV சீரற்ற பகுதி. இந்த அமைப்பு ULID களை உருவாக்கும் நேரத்தின் அடிப்படையில் எளிதாக வரிசைப்படுத்த அனுமதிக்கிறது - எழுத்து வாரியாக ஒப்பீடு செய்தால், முந்தைய நேர முத்திரை கொண்ட ULID பிந்தையதை விட சிறியதாக இருக்கும். இருப்பினும், ஒரே மில்லி செகண்டில் உருவாக்கப்பட்ட ULID களுக்கு கண்டிப்பான வரிசை உத்தரவாதம் இல்லை - சீரற்ற பகுதி மட்டுமே அவற்றை வேறுபடுத்துகிறது, மேலும் உலாவியின் சீரற்ற தன்மை வரிசையைக் கட்டுப்படுத்தாது.

க்ராக்ஃபோர்டு பேஸ்32 குறியீட்டு முறை

ULID இல் பயன்படுத்தப்படும் எழுத்துகள் டக்ளஸ் க்ராக்ஃபோர்டால் வடிவமைக்கப்பட்ட பேஸ்32 கோவையைப் பின்பற்றுகின்றன. இந்த கோவை 32 குறியீடுகளைக் கொண்டுள்ளது:

  • எண்கள்: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
  • எழுத்துகள்: A, B, C, D, E, F, G, H, J, K, M, N, P, Q, R, S, T, V, W, X, Y, Z

I, L, O, U ஆகிய எழுத்துகள் தவிர்க்கப்படுகின்றன - ஏனெனில் இவை முறையே 1, 0, 0, V உடன் குழப்பமடைய வாய்ப்புள்ளது. இது மனிதர்கள் கைமுறையாக எழுதும்போது பிழைகளைக் குறைக்கிறது. மேலும், ULID வழக்கு உணர்வற்றது: a மற்றும் A இரண்டும் ஒரே மதிப்பாகவே கருதப்படுகின்றன. இது தட்டச்சு பிழைகளைக் குறைக்கிறது மற்றும் URL களில் பயன்படுத்த வசதியாக உள்ளது. இந்த குறியீட்டு முறை 5 பிட்களை ஒரு எழுத்தாக மாற்றுகிறது (2^5 = 32). 128 பிட்கள் / 5 = 25.6, எனவே 26 எழுத்துகள் தேவை (இறுதி எழுத்து சிறிது வீணாகிறது).

UUID v4 மற்றும் UUID v7 உடன் ஒப்பீடு

அம்சம் ULID UUID v4 UUID v7
நீளம் 26 எழுத்துகள் 36 எழுத்துகள் (32 எழுத்துகள் + 4 ஹைபன்கள்) 36 எழுத்துகள்
ஹைபன்கள் இல்லை 4 ஹைபன்கள் கட்டாயம் 4 ஹைபன்கள் கட்டாயம்
வழக்கு உணர்வு வழக்கு உணர்வற்றது வழக்கு உணர்வுள்ளது (பொதுவாக சிறிய எழுத்து) வழக்கு உணர்வுள்ளது
வரிசைப்படுத்துதல் நேர முத்திரை அடிப்படையில் சீரற்றது நேர முத்திரை அடிப்படையில்
சீரற்ற பிட்கள் 80 பிட்கள் 122 பிட்கள் 74 பிட்கள் (தோராயமாக)
URL-பாதுகாப்பு முழுமையாக (எஸ்கேப்பிங் தேவையில்லை) ஹைபன்கள் URL-பாதுகாப்பானவை, ஆனால் சிறப்பு எழுத்துகள் இல்லை ஹைபன்கள் URL-பாதுகாப்பானவை

யுஎல்ஐடி 36 எழுத்துகளுக்கு பதிலாக 26 எழுத்துகளை மட்டுமே பயன்படுத்துகிறது - இது 28% குறைவு. இது தரவுத்தள அட்டவணைகள், URL கள், மற்றும் பயனர் இடைமுகங்களில் குறிப்பிடத்தக்க சேமிப்பையும் வாசிப்புத் திறனையும் மேம்படுத்துகிறது. UUID v4 முற்றிலும் சீரற்றது; UUID v7 நேர முத்திரையை சேர்க்கிறது, ஆனால் இது RFC 4122 இன் புதிய மாறுபாடு மற்றும் பல அமைப்புகளில் இன்னும் ஆதரிக்கப்படவில்லை. ULID இந்த இடைவெளியை நிரப்புகிறது - இது குறுகிய, வரிசைப்படுத்தக்கூடிய, URL-பாதுகாப்பான அடையாளங்காட்டியாகும்.

மோதல் நிகழ்தகவு

ஒவ்வொரு மில்லி செகண்டிலும் 2^80 (தோராயமாக 1.21 × 10^24) சாத்தியமான சீரற்ற மதிப்புகள் உள்ளன. ஒரு நிமிடத்தில் 10000 ULID கள் உருவாக்கப்பட்டாலும், மோதல் நிகழ்தகவு மிகவும் குறைவு. பிறந்தநாள் தாக்குதல் கணக்கீடு படி, 50% மோதல் வாய்ப்பு ஏற்பட தோராயமாக 2^(80/2) ≈ 1.0995 × 10^12 ULID கள் தேவை. இருப்பினும், ஒரே மில்லி செகண்டில் பல ULID களை உருவாக்கும்போது (எ.கா., ஒரு லூப்பில் 100 ULID கள்), சீரற்ற கூறு 80 பிட்கள் உள்ளதால், மோதல் தவிர்க்கப்படுகிறது. ஆயினும், ஒரே மில்லி செகண்டில் உருவாக்கப்பட்ட ULID களின் வரிசை நேரத்தைப் பிரதிபலிக்காது. நடைமுறையில், 100 ULID கள் வரை உருவாக்கும்போது மோதல் எதுவும் ஏற்படாது.

URL பாதுகாப்பு மற்றும் எஸ்கேப்பிங்

ULID இல் பயன்படுத்தப்படும் எழுத்துகள் அனைத்தும் RFC 3986 இன் படி URL-பாதுகாப்பானவை (unreserved characters). இவை A-Z, a-z, 0-9, மற்றும் -, ., _, ~ போன்ற எழுத்துகளை உள்ளடக்குகின்றன. ULID இல் ஹைபன்கள் இல்லை, மாறாக பெரிய எழுத்துகள் மற்றும் எண்கள் மட்டுமே. எனவே, ULID ஐ URL இல் நேரடியாகப் பயன்படுத்தலாம் - சதவீத குறியாக்கம் (percent-encoding) தேவையில்லை. உதாரணமாக, https://example.com/item/01ARZ3NDEKTSV4RRFFQ69G5FAV என்பது முற்றிலும் செல்லுபடியாகும் URL. இது API வடிவமைப்பில் மிகவும் பயனுள்ளதாகும் - URL கள் சுத்தமாகவும், வாசிக்கக்கூடியதாகவும் இருக்கும்.

தரவுத்தள அட்டவணைப்படுத்தலில் பயன்பாடு

தரவுத்தள B-மர அட்டவணைகளில், புதிய வரிசைகள் தோராயமாக அதிகரிக்கும் முதன்மை விசைகளைப் பயன்படுத்தினால் செயல்திறன் மேம்படும். ஏனெனில், புதிய விசைகள் மரத்தில் ஒரே பக்கத்தில் (page) சேர்க்கப்படுவதால், பக்கப் பிளவுகள் குறைவாக நிகழ்கின்றன. UUID v4 சீரற்ற விசைகளைப் பயன்படுத்தும்போது, புதிய விசைகள் முழு மரத்திலும் சிதறலாம் - இது பல பக்கப் பிளவுகளை ஏற்படுத்தி, உள்ளீடு செயல்திறனை 50% வரை குறைக்கலாம். ULID இன் நேர முத்திரை காரணமாக, புதிய ULID கள் தொடர்ச்சியாக அதிகரிக்கும் (monotonically increasing). இவை மரத்தின் வலது பக்கத்தில் மட்டுமே செருகப்படும், பக்கப் பிளவுகளை குறைத்து, உயர் உள்ளீடு விகிதங்களை பராமரிக்கும். இருப்பினும், ஒரே மில்லி செகண்டில் உருவாக்கப்பட்ட ULID கள் தோராயமாக பரவும் - இது சிறிய பிளவுகளை ஏற்படுத்தினாலும், UUID v4 உடன் ஒப்பிடும்போது மிகவும் சிறந்தது.

உலாவியில் உருவாக்கம் மற்றும் தனியுரிமை

இந்த கருவி அனைத்து ULID களையும் உலாவியில் நேரடியாக உருவாக்குகிறது - எந்த தரவும் சேவையகத்திற்கு அனுப்பப்படுவதில்லை. சீரற்ற தன்மைக்கு crypto.getRandomValues() பயன்படுத்தப்படுகிறது, இது கணினி-நிலை சீரற்ற எண் ஜெனரேட்டரை அணுகுகிறது. இது மறுவடிவமைப்பு திறன், பாதுகாப்பு மற்றும் தனியுரிமை ஆகியவற்றில் முக்கியமானது. பக்கத்தைத் திறந்தவுடன், குறைந்தபட்ச ULID பட்டியல் "Ready." நிலையில் காண்பிக்கப்படும். எண்ணிக்கையை மாற்றியவுடன் "Generated." என்ற செய்தி தோன்றும். அனைத்து ULID களையும் நகலெடுக்கும்போது "Copied all!" என்று காண்பிக்கப்படும். ஒரு தனி ULID ஐ கிளிக் செய்தால் அது தனித்தனியாக நகலெடுக்கப்படும். எண்ணிக்கை 1 முதல் 100 வரை மட்டுமே; மற்ற மதிப்புகள் ஏற்கப்படாது. மற்ற எந்த விருப்ப மாற்றமும் (எ.கா., வடிவம் மாற்றம்) தானாகவே புதிய ULID களை உருவாக்கும்.

FAQ

ULID எப்போது UUID ஐ விட சிறந்தது?

ULID குறுகியதாகவும், வரிசைப்படுத்தக்கூடியதாகவும், URL-பாதுகாப்பானதாகவும் இருக்கும்போது UUID ஐ விட சிறந்தது. உதாரணமாக, பொது API விசைகள், பயனர் காணும் அடையாளங்காட்டிகள், அல்லது தரவுத்தள B-மர செயல்திறன் மேம்பாடு தேவைப்படும்போது. UUID v4 மிகவும் சீரற்ற தன்மையை வழங்கினாலும், ULID பெரும்பாலான பயன்பாடுகளுக்கு போதுமானது.

ULID இன் முதல் 10 எழுத்துகள் என்ன?

முதல் 10 எழுத்துகள் 48-பிட் மில்லி செகண்ட் நேர முத்திரையை குறியாக்கம் செய்கின்றன. இது Crockford's base32 க்கு மாற்றப்பட்ட நேர மதிப்பு. இதன் மூலம் ULID களை உருவாக்கும் நேரத்தின் அடிப்படையில் வரிசைப்படுத்தலாம்.

ULID கள் வழக்கு உணர்வுடையவையா?

இல்லை. ULID வழக்கு உணர்வற்றது. A மற்றும் a இரண்டும் ஒரே மதிப்பாக கருதப்படுகின்றன. இது பயனர் உள்ளீடு மற்றும் மேல்நேர செயலாக்கத்தில் பிழைகளை குறைக்கிறது.

ஒரே மில்லி செகண்டில் பல ULID கள் உருவாக்கப்பட்டால் என்ன நடக்கும்?

அவை சீரற்ற பகுதியால் (80 பிட்கள்) மட்டுமே வேறுபடுகின்றன. இவை நேரத்தின் அடிப்படையில் கண்டிப்பான வரிசையில் இருக்காது - ஏனெனில் சீரற்ற மதிப்புகள் எந்த வரிசையிலும் வரலாம். இருப்பினும், மோதல் நிகழ்தகவு மிகவும் குறைவு.

ULID கள் URL பாதுகாப்பானவையா?

ஆம். ULID இன் எழுத்துகள் அனைத்தும் RFC 3986 unreserved set ஐச் சேர்ந்தவை. எனவே எஸ்கேப்பிங் தேவையில்லை. URL இல் நேரடியாக பயன்படுத்தலாம்.

இந்தக் கருவி எத்தனை ULID களை ஒரே நேரத்தில் உருவாக்க முடியும்?

குறைந்தது 1, அதிகபட்சம் 100 ULID கள். இந்த வரம்பிற்கு வெளியே உள்ள மதிப்புகள் ஏற்கப்படாது.