UUID v4 ஜெனரேட்டர்: ஒரு முழுமையான வழிகாட்டி
UUID v4 என்றால் என்ன? அதன் உள் கட்டமைப்பு
UUID v4 என்பது RFC 4122 தரநிலையின் ஒரு பகுதியாகும். இது 122 பிட்கள் சீரற்ற தன்மையைப் பயன்படுத்தி உருவாக்கப்படும் 36 எழுத்துக்கள் கொண்ட ஒரு சரம். இந்த 36 எழுத்துக்களில் 32 எழுத்துக்கள் ஹெக்ஸாடெசிமல் (hexadecimal) எண்களாகும். மீதமுள்ள 4 எழுத்துக்கள் ஹைபன்கள் (hyphens) ஆகும், அவை 8-4-4-4-12 என்ற வடிவத்தில் அமைக்கப்பட்டுள்ளன. உதாரணமாக, f47ac10b-58cc-4372-a567-0e02b2c3d479 என்பது ஒரு பொதுவான UUID v4 ஆகும். இதில், ஒவ்வொரு பகுதியும் குறிப்பிட்ட எண்ணிக்கையிலான ஹெக்ஸாடெசிமல் இலக்கங்களைக் கொண்டுள்ளது: முதல் பகுதி 8 இலக்கங்கள், இரண்டாவது 4 இலக்கங்கள், மூன்றாவது 4 இலக்கங்கள், நான்காவது 4 இலக்கங்கள், மற்றும் ஐந்தாவது 12 இலக்கங்கள்.
UUID v4 இன் மிக முக்கியமான அம்சம் அதன் சீரற்ற தன்மையாகும். இது 122 பிட்கள் சீரற்ற தன்மையைப் பயன்படுத்துகிறது, எனவே ஒவ்வொரு முறை உருவாக்கப்படும் ஐடியும் தனித்துவமானதாக இருக்கும். மீதமுள்ள 6 பிட்கள் (128 – 122 = 6) பதிப்பு மற்றும் மாறுபாட்டைக் (version and variant) குறிக்கப் பயன்படுகின்றன. இந்த அமைப்பே UUID v4 ஐ முற்றிலும் கணிக்க முடியாததாக ஆக்குகிறது. இதில் நேர முத்திரை (timestamp) எதுவும் சேர்க்கப்படவில்லை, எனவே இது நேர வரிசைப்படி அமைக்கப்படாது.
UUID v4 இன் மொத்த நீளம் 36 எழுத்துக்கள் ஆகும், ஆனால் இது ஹைபன்கள் இல்லாமல் 32 எழுத்துக்களாகவும் காட்டப்படலாம். நமது கருவியில், "Include hyphens" என்ற விருப்பத்தை மாற்றுவதன் மூலம் இதைக் கட்டுப்படுத்தலாம். மேலும், "Uppercase" விருப்பம் மூலம் ஐடிகளை பெரிய எழுத்துக்களில் (uppercase) காட்டலாம். இருப்பினும், இவை அனைத்தும் வடிவ மாற்றங்கள் மட்டுமே; உள் சீரற்ற தன்மை மாறாது.
UUID v4 இன் மிக முக்கியமான பண்பு என்னவென்றால், இது முற்றிலும் சீரற்றதாகும். இது UUID v7 அல்லது ULID போன்ற வடிவங்களில் இருந்து முற்றிலும் மாறுபட்டது. UUID v7 நேர முத்திரையை உள்ளடக்கியது, எனவே அது கால வரிசையில் ஒழுங்குபடுத்தப்படும். ஆனால் UUID v4 இல் இந்த அம்சம் இல்லை. இதனால், UUID v4 ஐ தரவுத்தளத்தில் முதன்மை விசை (primary key) ஆக பயன்படுத்தும் போது, இன்டெக்ஸ் (index) துண்டாக்கம் (fragmentation) ஏற்படலாம். ஏனெனில், புதிய ஐடிகள் தற்போதைய இன்டெக்ஸின் எந்தப் பகுதியிலும் சேர்க்கப்படலாம், இது செயல்திறனை பாதிக்கும்.
உலாவியில் UUID v4 உருவாக்கம்: பாதுகாப்பான சீரற்ற தன்மை
நமது UUID v4 ஜெனரேட்டர் முற்றிலும் உங்கள் உலாவியிலேயே செயல்படுகிறது. இதற்காக, உலாவியின் கிரிப்டோகிராஃபிக் சூடோரேண்டம் எண் ஜெனரேட்டர் (CSPRNG) பயன்படுத்தப்படுகிறது. உதாரணமாக, crypto.getRandomValues() முறை நவீன உலாவிகளில் இதற்குப் பயன்படுகிறது. இந்த முறை மிக உயர்ந்த பாதுகாப்பு மட்டத்தில் சீரற்ற எண்களை உருவாக்குகிறது. இதன் மூலம், உருவாக்கப்படும் UUID v4 ஐடிகள் முற்றிலும் கணிக்க முடியாதவையாக உள்ளன.
இந்த உள்ளூர் செயலாக்கத்தின் முக்கிய நன்மை என்னவென்றால், எந்தத் தகவலும் சேவையகத்துக்கு அனுப்பப்படுவதில்லை. இது உங்கள் தனியுரிமையைப் பாதுகாக்கிறது. மேலும், இணைய இணைப்பு இல்லாமலும் இந்தக் கருவியைப் பயன்படுத்த முடியும். உங்கள் உலாவியில் பக்கம் ஏற்றப்பட்டவுடன், அனைத்து கணக்கீடுகளும் உங்கள் கணினியிலேயே நடைபெறும்.
UUID v4 உருவாக்கத்தின் போது, 16 பைட்டுகள் (128 பிட்கள்) சீரற்ற தரவு உருவாக்கப்படுகிறது. இதில், 4 பிட்கள் பதிப்பை (version) குறிக்கப் பயன்படுகின்றன (UUID v4க்கு, இது 0100 ஆகும்). மேலும், 2 பிட்கள் மாறுபாட்டை (variant) குறிக்கப் பயன்படுகின்றன. மீதமுள்ள 122 பிட்கள் முற்றிலும் சீரற்றவை. இந்த 122 பிட்களின் சீரற்ற தன்மையே UUID v4 இன் தனித்துவத்தை உறுதி செய்கிறது.
உலாவியில் சீரற்ற எண்கள் உருவாக்கப்படும் போது, சில பழைய உலாவிகள் பலவீனமான சீரற்ற எண் ஜெனரேட்டர்களைப் பயன்படுத்தலாம். ஆனால், நவீன உலாவிகள் அனைத்தும் CSPRNG ஐ ஆதரிக்கின்றன. இதனால், உங்கள் UUID v4 ஐடிகள் பாதுகாப்பானவையாக உள்ளன.
மோதல் நிகழ்தகவு: 122 பிட்களின் வலிமை
UUID v4 இன் மிக முக்கியமான பண்பு அதன் மிகக் குறைந்த மோதல் நிகழ்தகவு (collision probability) ஆகும். 122 பிட்கள் சீரற்ற தன்மை இருப்பதால், ஒரே ஐடி மீண்டும் உருவாக்கப்படுவதற்கான வாய்ப்பு மிகவும் குறைவு. இதைப் புரிந்துகொள்ள, 2^122 என்ற எண்ணைக் கவனியுங்கள். இது 5.3 × 10^36 ஆகும். அதாவது, 5.3 பில்லியன் பில்லியன் பில்லியன் சாத்தியமான ஐடிகள் உள்ளன.
இந்த எண்ணிக்கை எவ்வளவு பெரியது என்பதைப் புரிந்துகொள்ள, ஒரு உதாரணத்தைக் கவனியுங்கள். நீங்கள் ஒரு நொடியில் 1 பில்லியன் UUID v4 ஐடிகளை உருவாக்கினால், ஒரு மோதல் ஏற்பட சுமார் 100 பில்லியன் ஆண்டுகள் ஆகும். இது ஒரு நடைமுறைச் சாத்தியத்திற்கு அப்பாற்பட்டது.
இருப்பினும், மோதல் நிகழ்தகவு பூஜ்ஜியம் அல்ல. இது ஒரு சிறிய, ஆனால் மிகச் சிறிய நிகழ்தகவு ஆகும். இந்தக் காரணத்தால்தான் UUID v4 பாதுகாப்பு டோக்கன்கள் மற்றும் அமர்வு அடையாளங்காட்டிகளுக்கு ஏற்றதாகும். ஆனால், நீங்கள் ஒரு சிறிய எண்ணிக்கையிலான ஐடிகளை மட்டும் உருவாக்கினால், மோதல் ஏற்படுவது கிட்டத்தட்ட சாத்தியமற்றது.
UUID v4 இன் மோதல் நிகழ்தகவு, UUID v7 மற்றும் ULID போன்ற வடிவங்களுடன் ஒப்பிடும் போது, இது மிகவும் குறைவு. ஆனால், இவை நேர வரிசையில் ஒழுங்குபடுத்தப்படுகின்றன. எனவே, உங்கள் தேவைக்கேற்ப நீங்கள் வடிவத்தைத் தேர்ந்தெடுக்க வேண்டும்.
பயனர் விருப்பங்கள்: எண்ணிக்கை, பெரிய எழுத்து மற்றும் ஹைபன்
நமது UUID v4 ஜெனரேட்டரில், பல பயனர் விருப்பங்கள் உள்ளன. முதல் விருப்பம், "Count" ஆகும். இது 1 முதல் 100 வரையிலான எண்ணிக்கையில் UUID v4 ஐடிகளை உருவாக்க உதவுகிறது. நீங்கள் ஒரு சில ஐடிகளை மட்டும் விரும்பினால், குறைந்த எண்ணிக்கையைத் தேர்ந்தெடுக்கலாம். அதேபோல், நிறைய ஐடிகள் தேவைப்பட்டால், 100 வரை உருவாக்கலாம்.
இரண்டாவது விருப்பம், "Uppercase" ஆகும். இது இயல்பாக (default) முடக்கத்தில் (false) உள்ளது. நீங்கள் இதை இயக்கினால், அனைத்து ஐடிகளும் பெரிய எழுத்துக்களில் (uppercase) காட்டப்படும். உதாரணமாக, F47AC10B-58CC-4372-A567-0E02B2C3D479 போன்று. இது சில நேரங்களில் வாசிப்புத்திறனை மேம்படுத்தலாம், குறிப்பாக நீங்கள் ஹெக்ஸாடெசிமல் எண்களை அடிக்கடி பயன்படுத்தினால்.
மூன்றாவது விருப்பம், "Include hyphens" ஆகும். இது இயல்பாக இயக்கத்தில் (true) உள்ளது. நீங்கள் இதை முடக்கினால், ஐடிகளில் ஹைபன்கள் இருக்காது. உதாரணமாக, f47ac10b58cc4372a5670e02b2c3d479 போன்று. இது மொத்த நீளத்தை 32 எழுத்துக்களாக குறைக்கிறது.
இந்த விருப்பங்களை மாற்றும் போது, முழுத் தொகுப்பும் மீண்டும் உருவாக்கப்படும். ஏனெனில், ஒவ்வொரு முறையும் புதிய சீரற்ற எண்கள் பயன்படுத்தப்படுகின்றன. இதனால், நீங்கள் ஒரே விருப்பங்களை மாற்றாமல் வைத்திருந்தால் மட்டுமே ஒரே ஐடிகளைப் பெற முடியும்.
UUID v4 பயன்பாட்டு வழக்குகள்: பாதுகாப்பு மற்றும் தனித்துவம்
UUID v4 இன் மிக முக்கியமான பயன்பாடு பாதுகாப்பு தொடர்பான இடங்களில் உள்ளது. அதன் கணிக்க முடியாத தன்மை காரணமாக, இது பாதுகாப்பு டோக்கன்கள், அமர்வு அடையாளங்காட்டிகள் மற்றும் CSRF டோக்கன்களுக்கு ஏற்றதாகும். இது முற்றிலும் சீரற்றதாக இருப்பதால், தாக்குபவர்கள் எளிதில் யூகிக்க முடியாது.
மற்றொரு பயன்பாடு, வெளிப்புற அடையாளங்காட்டிகள் (external identifiers) ஆகும். நீங்கள் உங்கள் பயனர்களுக்கு பொதுவான ஐடியை வழங்க விரும்பினால், UUID v4 ஒரு நல்ல தேர்வாகும். இது தனித்துவமானதாகவும், பாதுகாப்பானதாகவும் உள்ளது.
சோதனை தரவுகளை உருவாக்கவும் UUID v4 பயன்படுகிறது. நீங்கள் ஒரு தரவுத்தளத்தில் பல பதிவுகளைச் சேர்க்க விரும்பினால், UUID v4 ஐடிகளை உருவாக்கி பயன்படுத்தலாம்.
இருப்பினும், UUID v4 ஐ தரவுத்தள முதன்மை விசையாகப் பயன்படுத்தும் போது, கவனமாக இருக்க வேண்டும். அதன் சீரற்ற வரிசை காரணமாக, இது B-மரம் (B-tree) இன்டெக்ஸ்களில் துண்டாக்கம் ஏற்படுத்தும். இது எழுதும் செயல்திறனை பாதிக்கும். இந்தச் சூழ்நிலையில், UUID v7 அல்லது ULID போன்ற நேர வரிசை வடிவங்கள் சிறந்ததாக இருக்கலாம்.
UUID v4 vs UUID v7 vs ULID: ஒப்பீடு
UUID v4, UUID v7 மற்றும் ULID ஆகியவை வெவ்வேறு நோக்கங்களுக்காக வடிவமைக்கப்பட்டுள்ளன. UUID v4 முற்றிலும் சீரற்றதாகும், எனவே இது பாதுகாப்பு மற்றும் தனித்துவத்திற்கு ஏற்றது. UUID v7 நேர முத்திரையை உள்ளடக்கியது, எனவே இது கால வரிசையில் ஒழுங்குபடுத்தப்படும். ULID என்பது UUID v7 போன்றது, ஆனால் இது 26 எழுத்துக்கள் கொண்டது மற்றும் அதிக எழுத்து சுருக்கத்தை அனுமதிக்கிறது.
| வடிவம் | நேர முத்திரை | சீரற்ற தன்மை | எழுத்து நீளம் | பயன்பாடு |
|---|---|---|---|---|
| UUID v4 | இல்லை | 122 பிட்கள் | 36 எழுத்துக்கள் | பாதுகாப்பு, தனித்துவம் |
| UUID v7 | உள்ளது | 74 பிட்கள் | 36 எழுத்துக்கள் | தரவுத்தள முதன்மை விசை |
| ULID | உள்ளது | 80 பிட்கள் | 26 எழுத்துக்கள் | தரவுத்தள முதன்மை விசை |
UUID v4 இன் முக்கிய நன்மை அதன் மிகக் குறைந்த மோதல் நிகழ்தகவு மற்றும் பாதுகாப்பு. ஆனால், நீங்கள் தரவுத்தள இன்டெக்ஸ் செயல்திறனை மேம்படுத்த விரும்பினால், UUID v7 அல்லது ULID சிறந்த தேர்வாகும். எனவே, உங்கள் தேவைக்கேற்ப வடிவத்தைத் தேர்ந்தெடுக்கவும்.
FAQ (அடிக்கடி கேட்கப்படும் கேள்விகள்)
Q1: UUID v4 இன் வடிவம் என்ன?
UUID v4 என்பது 36 எழுத்துக்கள் கொண்ட ஒரு சரமாகும், இது 8-4-4-4-12 என்ற வடிவத்தில் ஹைபன்களுடன் அமைக்கப்பட்டுள்ளது. உதாரணம்: f47ac10b-58cc-4372-a567-0e02b2c3d479.
Q2: UUID v4 இன் மோதல் நிகழ்தகவு எவ்வளவு? 122 பிட்கள் சீரற்ற தன்மை இருப்பதால், மோதல் நிகழ்தகவு மிகவும் குறைவு. ஒரு நொடியில் 1 பில்லியன் ஐடிகளை உருவாக்கினால், ஒரு மோதல் ஏற்பட சுமார் 100 பில்லியன் ஆண்டுகள் ஆகும்.
Q3: UUID v4 ஐ தரவுத்தளத்தில் முதன்மை விசையாகப் பயன்படுத்தலாமா? ஆம், ஆனால் கவனமாக இருக்க வேண்டும். UUID v4 இன் சீரற்ற வரிசை தரவுத்தள இன்டெக்ஸ் துண்டாக்கத்தை ஏற்படுத்தலாம், இது எழுதும் செயல்திறனை பாதிக்கும். இந்தச் சூழ்நிலையில், UUID v7 அல்லது ULID சிறந்த தேர்வாகும்.
Q4: நமது கருவியில் UUID v4 எவ்வாறு உருவாக்கப்படுகிறது?
உங்கள் உலாவியில் crypto.getRandomValues() முறை பயன்படுத்தப்படுகிறது. இது மிக உயர்ந்த பாதுகாப்பு மட்டத்தில் சீரற்ற எண்களை உருவாக்குகிறது. எந்தத் தகவலும் சேவையகத்துக்கு அனுப்பப்படுவதில்லை.
Q5: UUID v4 இன் விருப்பங்களை மாற்றினால் என்ன நடக்கும்? எந்த விருப்பத்தையும் மாற்றினால் (எண்ணிக்கை, பெரிய எழுத்து, ஹைபன்), முழுத் தொகுப்பும் மீண்டும் உருவாக்கப்படும். ஏனெனில், ஒவ்வொரு முறையும் புதிய சீரற்ற எண்கள் பயன்படுத்தப்படுகின்றன.
Q6: UUID v4 மற்றும் UUID v7 இடையே உள்ள வேறுபாடு என்ன? UUID v4 முற்றிலும் சீரற்றதாகும், எனவே இது கால வரிசையில் ஒழுங்குபடுத்தப்படாது. UUID v7 நேர முத்திரையை உள்ளடக்கியது, எனவே இது கால வரிசையில் ஒழுங்குபடுத்தப்படும். UUID v4 பாதுகாப்பு டோக்கன்களுக்கு ஏற்றது, அதே நேரத்தில் UUID v7 தரவுத்தள முதன்மை விசைக்கு ஏற்றது.
Q7: UUID v4 ஐ எத்தனை ஐடிகள் வரை உருவாக்க முடியும்? நமது கருவியில், நீங்கள் 1 முதல் 100 வரையிலான எண்ணிக்கையில் UUID v4 ஐடிகளை உருவாக்கலாம்.
Q8: UUID v4 இன் சீரற்ற தன்மை பாதுகாப்பானதா? ஆம். உலாவியின் CSPRNG பயன்படுத்தப்படுவதால், UUID v4 ஐடிகள் முற்றிலும் கணிக்க முடியாதவையாக உள்ளன. இது பாதுகாப்பு டோக்கன்கள் மற்றும் அமர்வு அடையாளங்காட்டிகளுக்கு ஏற்றதாகும்.