வேறொருவர் உருவாக்கிய ஒன்றோடு எக்காலத்திலும் முரண்படாத, நீங்கள் கேள்விப்பட்டிராத ஒரு கணினியில் உருவாக்கப்பட்ட, யாரிடமும் அனுமதி கேட்கத் தேவையில்லாத ஒரு அடையாளங்காட்டி (identifier) உங்களுக்குத் தேவையா? அதைத்தான் ஒரு UUID செய்கிறது. இது 128-பிட் (128-bit) கொண்ட ஒரு எண், வழக்கமான 8-4-4-4-12 என்ற வடிவமைப்பில் 36 எழுத்துருக்களாக எழுதப்படுகிறது. யாருக்கு எந்த எண் கிடைக்கும் என்பதை எதுவும் ஒருங்கிணைக்கவில்லை என்றாலும், அவற்றில் எந்த இரண்டும் ஒரே மாதிரியாக இருக்கப் போவதில்லை என்பதே இதன் முழு வடிவமைப்பாகும். இந்த இலவச உருவாக்கி அவற்றை உங்கள் உலாவியிலேயே உருவாக்குகிறது: 'பதிப்பு' என்பதில் ஒரு பதிப்பைத் தேர்வு செய்யவும், 'தேர்வுகளின் எண்ணிக்கை' என்பதில் உங்களுக்கு எத்தனை வேண்டும் என்று சொல்லவும், பின்பு 'உருவாக்கு' என்பதை அழுத்தவும். பெரும்பாலான திட்டங்கள் (projects) விரும்பும் பதிப்பான v4-இன் ஒற்றை அடையாளங்காட்டியுடன் இந்தப் பக்கம் திறக்கும், எனவே முதல் அடையாளங்காட்டி ஒரே கிளிக்கில் கிடைத்துவிடும்.
ஒவ்வொரு அடையாளங்காட்டியும் உங்கள் உலாவியால் Web Crypto API மூலம் உருவாக்கப்படுகிறது. உலாவி ஆதரிக்கும் இடங்களில் பதிப்பு 4 (v4) crypto.randomUUID() என்பதையும், மற்ற இடங்களில் crypto.getRandomValues() என்பதையும் பயன்படுத்துகிறது — இது Math.random() போன்ற போலி சமவாய்ப்பு (pseudo-random) JavaScript செயல்பாட்டிற்குப் பதிலாக, குறியாக்கவியல் ரீதியாக (cryptographically) பாதுகாப்பான சமவாய்ப்பின் (randomness) வலுவான ஆதாரமாகும். பதிப்பு 7 (v7) 48-பிட் மில்லிசெகண்ட் நேர முத்திரையை (timestamp) முன்னால் வைக்கிறது, பின்பு அதே மில்லிசெகண்டிற்குள் அதிகரிக்கும் 12-பிட் கவுண்டரையும் (counter), அதன் பிறகு 62 சமவாய்ப்பு பிட்களையும் கொண்டுள்ளது; இது RFC 9562-இல் விவரிக்கப்பட்டுள்ள வரிசைப்படுத்தும் முறையாகும்; ஆயிரம் UUID-கள் அடங்கிய ஒரு தொகுதி (batch) குலைக்கப்படாமல் வரிசையாக வெளிவர அந்த கவுண்டர் தான் காரணம். பதிப்பு 1 (v1) மல்டிகாஸ்ட் பிட் (multicast bit) அமைக்கப்பட்ட ஒரு சமவாய்ப்பு நோட் (node) அடையாளங்காட்டியுடன் நேர முத்திரையை இணைக்கிறது, எனவே 1990-களின் அசல் பயன்பாடுகள் செய்ததைப் போல இது ஒருபோதும் உங்கள் நெட்வொர்க் கார்டின் முகவரியைச் சுமப்பதில்லை. பதிப்புகள் 3 மற்றும் 5 ஆகியவை சமவாய்ப்பானவை அல்ல: அவை MD5 மற்றும் SHA-1 ஆகியவற்றைப் பயன்படுத்தி ஒரு பெயரிடைவெளியையும் (namespace) ஒரு பெயரையும் ஒன்றாக ஹாஷ் (hash) செய்கின்றன, மேலும் அந்த ஹாஷிங் உங்கள் சாதனத்திலேயே நடக்கிறது. சேவையகத்திற்கு (server) எதுவும் அனுப்பப்படுவதில்லை, எதுவும் பதிவேட்டில் (log) சேமிக்கப்படுவதில்லை, மேலும் பக்கம் ஏற்றப்பட்டவுடன் இணைய இணைப்பு துண்டிக்கப்பட்டாலும் இது தொடர்ந்து இயங்கும்.
'பதிப்பு' என்பது மற்ற அனைத்தையும் தீர்மானிக்கும் புலமாகும். பதிப்பு 4 என்பது 122 சமவாய்ப்பு பிட்களைக் கொண்டது மற்றும் எந்தவொரு அமைப்பும் அற்றது — இதுவே இயல்புநிலைத் தேர்வாகும் (default), மேலும் ஒரு அடையாளங்காட்டி தனித்துவமாக (unique) மட்டுமே இருக்க வேண்டியிருக்கும் போது இதுவே சரியான தேர்வாகும். பதிப்பு 7-ம் 62 சமவாய்ப்பு பிட்களைக் கொண்டுள்ளது, ஆனால் அது உருவாக்கப்பட்ட நேரத்துடன் தொடங்குகிறது, எனவே அவற்றின் ஒரு தொகுப்பு அவை உருவாக்கப்பட்ட நேரத்தின் வரிசைப்படி வகைப்படுத்தப்படும்; அடையாளங்காட்டி ஒரு தரவுத்தளத்தின் திறவுகோலாக (database key) மாறவிருக்கும் போது தேர்வு செய்ய வேண்டிய பதிப்பாக இது அமைவதற்கு அதுவே காரணம். பதிப்பு 1 என்பது நேரத்தை அடிப்படையாகக் கொண்ட அசல் திட்டமாகும், அது இன்னும் அதைக் கோரும் கணினிகளுக்காக இங்கே வைக்கப்பட்டுள்ளது. பதிப்புகள் 3 மற்றும் 5 ஒரு வித்தியாசமான ஜோடியாகும்: அவை உறுதியானவை (deterministic), அதாவது ஒரே உள்ளீடுகள் எப்போதும் ஒரே அடையாளங்காட்டியையே உருவாக்கும், மேலும் அவற்றுக்கு இரண்டு கூடுதல் புலங்கள் தேவைப்படுகின்றன — DNS, URL, OID மற்றும் X.500 ஆகிய நிலையான வெளிகளில் ஒன்றான அல்லது உங்களுடைய 'தனிப்பயன்' (Custom) ஒன்றான 'பெயரிடைவெளி', மற்றும் அடையாளம் காணப்படவிருக்கும் சரமான (string) 'பெயர்'. v5-க்கு URL பெயரிடைவெளியையும் https://example.com/a என்பதையும் உள்ளீடாகக் கொடுங்கள், இன்றும் நாளையும் வேறொருவரின் கணினியிலும் அதே UUID-ஐ நீங்கள் பெறுவீர்கள். இதன் காரணமாக, v3 அல்லது v5 தேர்ந்தெடுக்கப்படும் போது 'தேர்வுகளின் எண்ணிக்கை' மறைகிறது: ஒரு உறுதியான மதிப்பின் ஆயிரம் பிரதிகள் என்பது ஒரு உறுதியான மதிப்பின் ஆயிரம் பிரதிகளாக மட்டுமே இருக்கும். மற்ற ஒவ்வொரு பதிப்பிற்கும் 'தேர்வுகளின் எண்ணிக்கை' 1 முதல் 1000 வரை இருக்கலாம்.
நான்கு நிலைமாற்றிகள் (switches) அடியில் உள்ள 128 பிட்களை மாற்றாமல் வெளியீட்டின் வடிவத்தை மாற்றுகின்றன. 'பெரிய எழுத்துகள்' ஹெக்ஸாடெசிமல் (hexadecimal) இலக்கங்களை பெரிய எழுத்துகளில் அச்சிடுகிறது, 'நடுக்கோடுகள் இன்றி' என்பது சில நெடுவரிசைகளும் (columns) கோப்புப் பெயர்களும் விரும்பும் சுருக்கமான 32-எழுத்துரு வடிவத்தை அளிக்கிறது, மேலும் 'சுருள் அடைப்புக்குறிகள்' மதிப்பை { }-க்குள் சுற்றுகிறது — இந்த வடிவத்தையே Windows மற்றும் .NET உலகங்கள் GUID என்று அழைக்கின்றன. 'மேம்பட்ட விருப்பங்கள்' என்பதன் கீழ், urn:uuid: என்பது இதை ஒரு முறையான URN ஆக மாற்றும் முன்னொட்டைச் (prefix) சேர்க்கிறது; இது இயக்கத்தில் இருக்கும் போது 'சுருள் அடைப்புக்குறிகள்' மற்றும் 'நடுக்கோடுகள் இன்றி' ஆகியவற்றை அணைத்து விடுகிறது, ஏனெனில் தரநிலையானது (standard) சரியாக ஒரே ஒரு URN வடிவத்தை மட்டுமே அனுமதிக்கிறது மற்றும் அது நடுக்கோடுகளுடன் கூடிய நியமன (canonical) வடிவமாகும். நீங்கள் ஒரு தொகுதியை எடுக்கும்போது அது எவ்வாறு இணைக்கப்படுகிறது என்பதை 'நகலெடுக்கும் வடிவம்' தீர்மானிக்கிறது: ஒரு வரிக்கு ஒன்றாக, காற்புள்ளிகளால் பிரிக்கப்பட்டு, அல்லது குறியீட்டில் (code) உள்ள ஒரு வரிசையில் (array) நேரடியாக ஒட்டுவதற்காக (paste) ஒவ்வொரு மதிப்பும் மேற்கோள் குறிகளுடன் இறுதியில் ஒரு காற்புள்ளியுடன். முடிவிற்கு கீழே பிட்களில் சமவாய்ப்பைத் தெரிவிக்கும் ஒரு வரி உள்ளது — v4-க்கு 122, v7-க்கு 62 — மேலும், v7-ஐப் பொறுத்தவரை, தொகுதியின் முதல் அடையாளங்காட்டியினுள் குறியாக்கம் (encode) செய்யப்பட்ட நேர முத்திரை, அதனால் மதிப்பிற்குள் உள்ள நேரம் மறைமுகமாக இல்லாமல் வெளிப்படையாகத் தெரியும். 'அனைத்தையும் நகலெடு' மற்றும் 'கோப்பில் சேமி' ஆகிய இரண்டும் 'நகலெடுக்கும் வடிவம்' என்பதைப் பின்பற்றுகின்றன. 'வரலாறு' உங்கள் உலாவியிலேயே உங்களின் முந்தைய 10 தொகுதிகளை வைத்திருக்கிறது: மீண்டும் கொண்டுவர ஒன்றைக் கிளிக் செய்யவும், ஒற்றை உள்ளீட்டை நகலெடுக்கவும் அல்லது நீக்கவும், அல்லது அனைத்தையும் அழிக்கவும். 'அழி' பொத்தான் முடிவை மட்டும் காலி செய்து உங்கள் அமைப்புகளை அப்படியே விட்டுவிடுகிறது, மேலும் 50 அடையாளங்காட்டிகளுக்குப் பிறகு, பட்டியல் ஐம்பது வரிசைகளுக்குப் பதிலாக ஒற்றை உருட்டக்கூடிய (scrollable) தொகுதியாக மாறுகிறது.
இந்தப் பக்கத்தில் மிகவும் விளைவுகளை ஏற்படுத்தக்கூடிய விஷயம் v4 மற்றும் v7-க்கு இடையிலான முதன்மைத் திறவுகோல் (primary key) என்ற வகையிலான வேறுபாடாகும், இது வெறும் விருப்பம் சார்ந்த விஷயம் அல்ல. தரவுத்தளத்தின் குறியீடுகள் (indexes) வரிசைப்படுத்தப்பட்ட (sorted) முறையில் வைக்கப்பட்டிருக்கும் மரங்கள் (B-trees) ஆகும், மேலும் அந்த வரிசையில் ஒரு புதிய திறவுகோல் எங்கு இறங்குகிறது என்பது செருகும் (insert) பணிக்கு எவ்வளவு உழைப்பு தேவை என்பதைத் தீர்மானிக்கிறது. ஒரு v4 திறவுகோல் சமவாய்ப்பானது (random), எனவே தொடர்ச்சியான செருகல்கள் குறியீட்டின் தொடர்பில்லாத மூலைகளில் இறங்குகின்றன: நிரம்பிய பக்கங்கள் பிரிக்கப்படுகின்றன (page split), தரவுத்தளத்தால் நினைவகத்தில் வைக்கப்பட்டிருக்கும் மரத்தின் பகுதிகள் அடுத்த செருகலுக்குத் தேவையான பகுதிகளாக இருப்பது அரிது, மேலும் அந்த குறியீடு அது சுட்டிக்காட்டும் வரிசைகள் (rows) நியாயப்படுத்துவதை விட மிகப் பெரியதாகவும் மிகவும் துண்டு துண்டாகவும் (fragmented) முடிவடைகிறது. ஒரு v7 திறவுகோல் தற்போதைய மில்லிசெகண்டுடன் தொடங்குகிறது, எனவே தொடர்ச்சியான செருகல்கள் மரத்தின் வலதுபுற விளிம்பில் ஒன்றன்பின் ஒன்றாக இறங்குகின்றன, இது தானாக-அதிகரிக்கும் ஒரு முழு எண் (auto-incrementing integer) உருவாக்கும் அமைப்பாகும், மேலும் குறியீட்டு கட்டமைப்புகள் (index structures) இதைச் சுற்றியே உருவாக்கப்பட்டன. இதுதான் அந்த முழுப் பரிமாற்றம்: ஒரு சேவையகத்தைக் கேட்காமலேயே யார் வேண்டுமானாலும் ஒன்றை உருவாக்கலாம் என்ற UUID-களை நீங்கள் முதலாவதாகத் தேர்ந்தெடுக்கச் செய்த பண்பினைத் தக்கவைத்துக் கொண்டே, ஒரு தொடர் திறவுகோலின் (sequential key) செருகும் நடத்தையை v7 உங்களுக்கு அளிக்கிறது. இதற்குப் பதிலாக உருவாக்கப்பட்ட நேரம் இப்போது அடையாளங்காட்டிக்குள் படிக்கக்கூடியதாக இருக்கும், அது ஒரு பொருட்டா என்பது உங்கள் தரவைப் பற்றிய கேள்வியே தவிர, வடிவத்தைப் பற்றியது அல்ல.
எதுவும் ஒருபோதும் ஒரு UUID-இன் தனித்துவத்தை (uniqueness) சரிபார்ப்பதில்லை; அதன் அளவுதான் அதற்கான உத்தரவாதம். பதிவேடு (registry) இல்லை, சேவையகத்திற்குச் சென்று வரும் பயணம் (round-trip) இல்லை, தேடல் (lookup) இல்லை — ஒரு உருவாக்கி ஒரு எண்ணை உருவாக்கி அதைக் கொடுக்கிறது, மேலும் அவற்றில் இரண்டு முரண்படாமல் (collide) இருப்பதற்குக் காரணம், v4-இல் சாத்தியமான 2^122 மதிப்புகள் உள்ளன என்பதே, இது சுமார் 5.3 அன்டெசிலியன் (5.3 × 10^36) ஆகும். பிறந்தநாள் பிரச்சனை (birthday problem) என்பது இதை அளவிடுவதற்கான நேர்மையான வழியாகும்: அவற்றில் ஏதேனும் இரண்டு பொருந்துவதற்கான 50% வாய்ப்பு ஏற்படுவதற்கு முன்பாக உங்களுக்குத் தோராயமாக 2.7 குயின்டிலியன் (2.7 × 10^18) அடையாளங்காட்டிகள் தேவைப்படும், இது 86 ஆண்டுகளுக்கு ஒவ்வொரு வினாடியும் ஒரு பில்லியன் புதிய UUID-களுக்குச் சமம். இது என்ன உறுதியளிக்கிறது, எதை உறுதியளிக்கவில்லை என்பதைப் பற்றி துல்லியமாக இருப்பது மதிப்புக்குரியது. இது ஒரு புள்ளிவிவர (statistical) உத்தரவாதமே தவிர, எண்கணித (arithmetic) உத்தரவாதம் அல்ல, மேலும் அடியில் உள்ள சமவாய்ப்பு (randomness) உண்மையானதாக இருக்கும் வரை மட்டுமே இது பொருந்தும் — மோசமாக விதைக்கப்பட்ட (seeded) ஒரு உருவாக்கி, அல்லது அதனுடைய என்ட்ரோபி பூலுடன் (entropy pool) சேர்த்து நகலெடுக்கப்பட்ட (cloned) ஒரு மெய்நிகர் இயந்திரம் (virtual machine), வடிவமைப்பால் கண்டறிய முடியாத ஒரு வழியில் இதை உடைக்கிறது. பதிப்பு 7 இந்தக் கேள்வியை மேலும் சுருக்குகிறது: ஒரு ஒற்றை மில்லிசெகண்டிற்குள் ஒரு உருவாக்கி தன்னையே மீண்டும் உருவாக்கிக் கொள்ளவே முடியாது, ஏனெனில் கவுண்டர் பகடையை உருட்டுவதற்குப் பதிலாக அதிகரிக்கிறது, மேலும் தனித்தனி உருவாக்கிகளுக்கு குறுக்கே 62 சமவாய்ப்பு பிட்கள் அந்த வேலையைச் செய்கின்றன.
ஒரு UUID ஒரு அடையாளங்காட்டியே தவிர, கடவுச்சொல் அல்ல. பதிப்பு 4 கணிக்க முடியாதது, இது மக்கள் அதை ஒரு ரகசியமாக (secret) நடத்தத் தூண்டுகிறது — கடவுச்சொல்-மீட்டமைப்பு இணைப்பு (password-reset link), யூகிக்க முடியாத URL, அமர்வு டோக்கன் (session token), API திறவுகோல் என. கணிக்க முடியாத தன்மை (unpredictability) உண்மையானது, ஆனால் ரகசியம் என்பது ஒரு மதிப்பு எவ்வாறு கையாளப்படுகிறது என்பதன் பண்பாகும், மற்றும் அடையாளங்காட்டிகள் திட்டமிட்டே கவனக்குறைவாகக் கையாளப்படுகின்றன: அவை URL-களில் உள்ளன, அவை உலாவி வரலாறு, சேவையகப் பதிவேடுகள் (server logs), பரிந்துரையாளர் தலைப்புகள் (referrer headers) மற்றும் பகுப்பாய்வுகளில் (analytics) வந்தடைகின்றன, மேலும் அரட்டைச் செய்திகளில் ஒட்டப்படுகின்றன. மற்ற பதிப்புகள் இன்னும் மோசமான தேர்வுகளாகும். பதிப்பு 1 மற்றும் பதிப்பு 7 ஆகிய இரண்டும் உருவாக்கப்பட்ட தருணத்தைக் குறியாக்கம் செய்கின்றன, எனவே இதை வைத்திருக்கும் எவருக்கும் அது எப்போது உருவாக்கப்பட்டது என்று தோராயமாகத் தெரியும், மேலும் அதனுடன் சேர்த்து உருவாக்கப்பட்ட எல்லாவற்றின் அக்கம் பக்கத்தையும் சுருக்க முடியும். பதிப்புகள் 3 மற்றும் 5 வேண்டுமென்றே உறுதியானவையாக (deterministic) உருவாக்கப்பட்டவை: ஒரு மின்னஞ்சல் முகவரியின் v5 UUID என்பது ஹாஷ் செய்யப்பட்ட ரகசியமல்ல, அது அதே முகவரியைக் கொண்ட எவரும் ஒரு வினாடியில் கணக்கிடக்கூடிய ஒரு மதிப்பாகும். ஒரு பொருளுக்குப் பெயரிட UUID-ஐப் பயன்படுத்தவும். மதிப்பு தெரியாமல் இருக்க வேண்டியிருக்கும் போது கடவுச்சொல் உருவாக்கி அல்லது ரகசியங்களுக்காக உருவாக்கப்பட்ட நூலகத்தின் (library) டோக்கனைப் பயன்படுத்தவும்.
இந்த UUID உருவாக்கியை ஏன் தேர்ந்தெடுக்க வேண்டும்?
- உலாவியிலேயே உருவாக்கம்: அடையாளங்காட்டிகள் உங்கள் சாதனத்தில் உருவாக்கப்படுகின்றன, எங்கும் அனுப்பப்படுவதில்லை
- Web Crypto API சமவாய்ப்பு: குறியாக்கவியல் ரீதியாகப் பாதுகாப்பானது, Math.random() அல்ல
- ஐந்து பதிப்புகள் ஒரே இடத்தில்: கருவிகளை மாற்றாமல் v1, v3, v4, v5 மற்றும் v7
- உண்மையாகவே வரிசைப்படுத்தப்பட்ட v7: RFC 9562 விவரிப்பது போல், மில்லிசெகண்டிற்குள் ஒரு கவுண்டர்
- நான்கு நிலையான பெயரிடைவெளிகள் அல்லது உங்களுடைய சொந்தப் பெயரிடைவெளியுடன் கூடிய உறுதியான v3 மற்றும் v5
- ஒரே நேரத்தில் 1000 வரை, ஐம்பதைத் தாண்டியதும் ஒரு சுருக்கமான உருட்டக்கூடிய பட்டியலுடன்
- ஒவ்வொரு பொதுவான வடிவமும்: நடுக்கோடு உள்ள, வெற்று, பெரிய எழுத்து, அடைப்புக்குறி அல்லது urn:uuid: URN
- குறியீட்டில் (code) நேரடியாக ஒட்டக்கூடிய வரிகளாக, காற்புள்ளிகளாக அல்லது மேற்கோள் குறிகளுடனான மதிப்புகளாக நகலெடுக்கலாம்
- வரம்பற்றது மற்றும் இலவசம்: பதிவு தேவையில்லை, பயன்பாட்டு வரம்புகள் இல்லை, எங்கள் சேவையகங்களில் எதுவும் இல்லை
பெயர் காலியாக உள்ளதா என்பதை எதையும் வைத்து உறுதிப்படுத்துவதற்கு முன்பாகவே, ஏதேனும் ஒன்றிற்குப் பெயரிட வேண்டியிருக்கும் இடங்களில் எல்லாம் UUID-கள் தோன்றும். பயன்பாட்டுக் குறியீடு (application code) தான் செருகவிருக்கும் (insert) வரிசைகளுக்காக (rows) இவற்றை உருவாக்குகிறது, எனவே தரவுத்தளத்தை அடையும் முன்பே அந்தப் பொருளுக்கு (object) ஒரு அடையாளம் இருக்கிறது, மற்றும் எழுதும் பணி இன்னும் நடந்து கொண்டிருக்கும் போதே கிளையன்ட் (client) அதைக் குறிப்பிட முடியும். பகிரப்பட்ட அமைப்புகள் (distributed systems) இவற்றின் மீது இன்னும் அதிகமாகச் சாய்ந்துள்ளன: ஒரே அட்டவணையில் (table) எழுதும் பல சேவைகள், விமானத்தில் ஆஃப்லைனில் பதிவுகளை உருவாக்கும் மொபைல் கிளையன்ட், ஏற்கனவே செயலாக்கப்பட்ட செய்தியை அடையாளம் காண வேண்டிய ஒரு வரிசை (queue) — இவற்றில் எதுவும் ஒரு பகிரப்பட்ட கவுண்டருக்காகத் (shared counter) தங்கள் முறை வரும் வரை காத்திருக்க முடியாது. பதிப்பு 5 வேறுபட்ட ஒரு தேவையை பூர்த்தி செய்கிறது, அதாவது உங்களிடம் ஏற்கனவே உள்ள ஒன்றிலிருந்து பெறப்பட்ட நிலையான அடையாளங்காட்டியாகும்: அதே ஆவணம், அதே URL அல்லது அதே கணக்கு எப்போதும் அதே UUID-உடன் தான் இணையும், எனவே எதையும் நகலெடுக்காமல் (duplicating) ஒரு இறக்குமதியை (import) இரண்டு முறை இயக்கலாம். மற்ற இடங்களில் அவை வெறுமனே ஒரு கணினி கோரும் வடிவமைப்பாகும் — பதிவேடுகள் (logs) மற்றும் தடங்கள் (traces) வழியாகச் செல்லும் ஒரு தொடர்பு அடையாளங்காட்டி, ஆயிரம் பயனர்களின் பதிவேற்றங்கள் ஒரே பக்கெட்டில் (bucket) வந்து சேரும் போது முரண்படாத ஒரு கோப்புப் பெயர், ஒரு Windows பதிவேட்டுத் திறவுகோல் (registry key), உண்மையான தரவைப் போலத் தோன்ற வேண்டிய ஒரு சோதனைப் பொருத்துதல் (test fixture).
சில நேர்மையான வரம்புகளைத் தெரிந்து கொள்வது மதிப்புக்குரியது. ஒரு தொகுதி என்பது ஒரு பதிப்பாகும்: 'பதிப்பு' என்பதில் உள்ள மதிப்பு அதிலுள்ள அனைத்திற்கும் பொருந்தும், எனவே v4-களின் ஒரு சுற்றும் v7-களின் ஒரு சுற்றும் இரண்டு தொகுதிகளாகும். இது ஒரு உருவாக்கி, ஆய்வாளர் அல்ல — ஒரு UUID-இன் பதிப்பையோ அல்லது அதன் நேர முத்திரையையோ திரும்பப் படிக்க அதை இங்கே ஒட்டுவது இந்தப் பக்கம் செய்யும் காரியம் அல்ல. 'கோப்பில் சேமி' என்பது CSV அல்லது JSON-க்கு பதிலாக ஒரு வெற்று உரை கோப்பை (plain text file) எழுதுகிறது. பதிப்பு 7 அது எப்போது உருவாக்கப்பட்டது என்பதை வெளிப்படையாக மில்லிசெகண்ட் வரை வெளிப்படுத்துகிறது, இது ஒரு குறைபாடு அல்ல மாறாக உண்மையான பரிமாற்றமாகும், மற்றும் பதிப்பு 1 நேரத்தை அதே வழியிலேயே கசியவிடுகிறது; இது உங்கள் தரவுகளுக்கு ஒரு பிரச்சனையாக இருந்தால், யாரிடமும் எதையும் சொல்லாத பதிப்பாக பதிப்பு 4 உள்ளது. தரநிலையிலிருந்து வரும் இரண்டு சிறப்பு மதிப்புகள் பதிப்புகள் அல்ல, எனவே அவை 'பதிப்பு' தேர்வில் விருப்பங்களாக இல்லை, ஆனால் நீங்கள் அவற்றை இங்கிருந்து நகலெடுக்கலாம்: nil UUID, 00000000-0000-0000-0000-000000000000, மற்றும் max UUID, ffffffff-ffff-ffff-ffff-ffffffffffff. இந்தப் பக்கத்தில் உள்ள அனைத்தும் RFC 9562-ஐப் பின்பற்றுகின்றன, இது 2024-இல் RFC 4122-க்கு பதிலாக வந்த குறிப்பீடாகும் (specification), எனவே இங்கிருந்து வரும் வெளியீடானது UUID-களைக் கையாளும் எந்தவொரு நூலகம் (library), தரவுத்தளம் அல்லது API-யாலும் ஏற்றுக்கொள்ளப்படுகிறது. அந்த வரம்புகளுக்குள் உத்தரவாதம் வலுவானது: ஒவ்வொரு அடையாளங்காட்டியும் தரநிலைக்கு ஏற்ப, குறியாக்கவியல் ரீதியாக பாதுகாப்பான சமவாய்ப்பிலிருந்து, உங்கள் சொந்த இயந்திரத்திலேயே உருவாக்கப்படுகிறது, வேறு யாரும் அதை ஒருபோதும் பார்ப்பதில்லை.