UUID v4 አመንጪ ገጽ - የማጣቀሻ መጣጥፍ
ይህ ገጽ የUUID (Universally Unique Identifier) ስሪት 4 መለያዎችን ያመነጫል። እያንዳንዱ መለያ 122 ቢት ንጹህ የዘፈቀደ እሴት ይይዛል፤ የተረፉት 6 ቢቶች ደግሞ ስሪቱን (version) እና ንዑስ-አይነቱን (variant) ለማመልከት ተወስነዋል። እንደ UUID v1 ወይም v7 ሳይሆን፣ v4 ምንም አይነት የጊዜ መረጃ አይይዝም። ይህ ማለት የሚፈጠሩት መለያዎች በምንም ቅደም ተከተል አይመደቡም፤ እሴታቸው ሙሉ በሙሉ እኩል ነው።
UUID v4 ምን ይመስላል?
መደበኛው ቅርጽ 36 ቁምፊዎች ነው፣ በ 8-4-4-4-12 ቡድን የተከፈለ። ለምሳሌ:
f47ac10b-58cc-4a2a-8c1a-4f3c9a1b2c3d
እዚህ ላይ ሃያ ስድስተኛው ቁምፊ (ከግራ ቀኝ በሁለተኛው ቡድን የመጨረሻው) "4" ነው። ይህ ስሪቱን ያሳያል (UUID v4)። በሦስተኛው ቡድን የመጀመሪያ ቁምፊ "8" ፣ "9" ፣ "a" ወይም "b" መሆን አለበት፤ ይህ ደግሞ ንዑስ-አይነቱን ይገልጻል። የተቀሩት 122 ቢቶች በሙሉ በዘፈቀደ ይፈጠራሉ።
ይህ ገጽ ልዩ የሚያደርገው ምንድነው?
በዚህ የመስመር ላይ መሳሪያ ውስጥ፣ የUUID v4 ትውልድ ሶስት ልዩ ገፅታዎች አሉት፡-
- 122 ቢት ንጹህ የዘፈቀደ - እያንዳንዱ UUID 122 ቢት የዘፈቀደ ይይዛል። ይህ ከRFC 4122 ደረጃ ጋር ይጣጣማል። በሌሎች አይነት መለያዎች ለምሳሌ ULID (128 ቢት ግን ጊዜም ይይዛል) ወይም NanoID (ተለዋዋጭ ርዝመት) ላይ ይህ ባህሪ የተለየ ነው።
- የዘፈቀደ ደረጃ አሰጣጥ - UUID v4 መለያዎች በተፈጠሩበት ጊዜ መሰረት አይመደቡም። ስለዚህ በውሂብ ጎታ (database) ውስጥ እንደ ዋና ቁልፍ (primary key) ጥቅም ላይ ሲውሉ B-tree ኢንዴክሶችን (B-tree indexes) ያፈርሳሉ። ይህ ከUUID v7 ወይም ከተከታታይ ቁጥሮች ጋር ሲወዳደር ትልቅ ልዩነት ነው።
- የማጋጨት እድል ቸልተኛ - 122 ቢት የዘፈቀደ ማለት 2^122 የተለያዩ ውጤቶች ማለት ነው። ሁለት ተመሳሳይ UUID v4 የማግኘት እድል እጅግ በጣም አነስተኛ ነው። ለምሳሌ በዓመት 1 ትሪሊዮን UUIDs (10^12) ቢፈጥሩም እንኳ፣ የማጋጨት እድሉ ከ10^-18 በታች ነው።
ይህ ገጽ ደግሞ ልዩ የሆኑ የቅርጽ መቆጣጠሪያዎችን ያቀርባል፡- Uppercase (ትላልቅ ፊደሎች) እና Include hyphens (ሰረዝ ማስቀመጥ)። እነዚህ ተለዋዋጮች ለUUID v4 እና v7 ብቻ የሚመለከቱ ናቸው። ሌሎች የመለያ አይነቶች (እንደ ULID ወይም NanoID) የተለያዩ የቅርጽ መለኪያዎች አሏቸው።
እንዴት መጠቀም ይቻላል?
በገጹ ላይ አራት ዋና ዋና የመግቢያ ነጥቦች አሉ።
የመለያ አይነት ምርጫ (Format)
በተቆልቋይ ዝርዝር ውስጥ "UUID v4" መምረጥ አለብዎት። ሌሎች አማራጮች UUID v7፣ ULID እና NanoID ናቸው። እያንዳንዱ አይነት የራሱ የሆነ የቅርጽ መመሪያ አለው።
የቁጥር ምርጫ (Count)
ከ 1 እስከ 100 የሚያካትት ቁጥር ማስገባት ይችላሉ። ከዚህ ውጪ ያለ ማንኛውም ቁጥር ተቀባይነት የለውም።
Uppercase (ትላልቅ ፊደሎች)
በማብራት የሄክሳዴሲማል ፊደሎች (a–f) ወደ ትላልቅ ፊደሎች (A–F) ይቀየራሉ። ይህ በአንዳንድ ሲስተሞች ውስጥ ተመራጭ ሊሆን ይችላል።
Include hyphens (ሰረዝ)
መለያዎቹን በመደበኛ 8-4-4-4-12 ቅርጽ ማሳየት ወይም ሰረዞቹን አስወግዶ 32 ቁምፊዎች ብቻ ማሳየት ይችላሉ። ሰረዞቹ ሲወገዱ መለያው ለዩአርኤል (URL) ወይም ለፋይል ስም ተስማሚ ይሆናል።
ሁሉም አማራጮች ሲቀየሩ ወዲያውኑ አዲስ መለያዎች ይፈጠራሉ። ዝርዝሩ በማያ ገጽ ላይ ይታያል። አንድ መለያ ላይ ጠቅ ማድረግ ወደ ክሊፕቦርድ (clipboard) ይገለበጣል። በተጨማሪም "Copy all" የሚል አዝራር አለ። መልእክቶቹም "Ready"፣ "Generated" ወይም "Copied all!" ይሆናሉ።
በውሂብ ጎታ ኢንዴክስ ላይ ያለው ተጽእኖ
UUID v4 እንደ ዋና ቁልፍ ከተጠቀሙበት ከባድ የአፈጻጸም ችግር ሊፈጠር ይችላል። ምክንያቱም B-tree ኢንዴክሶች ቅደም ተከተል ባላቸው ወይም በቅርብ ጊዜ የተፈጠሩ እሴቶች ላይ በብቃት ይሰራሉ። የUUID v4 የዘፈቀደ መሆን አዳዲስ ረድፎች በየትኛውም የኢንዴክሱ ክፍል ውስጥ ሊገቡ ይችላሉ። ይህ ደግሞ በተደጋጋሚ የገጽ መከፋፈል (page splits) እና የኢንዴክስ ክፍተቶች (fragmentation) ያስከትላል።
ለምሳሌ፡- PostgreSQL ውስጥ UUID v4 ለዋና ቁልፍ ቢጠቀሙ፣ ሰንጠረዡ በሚሊዮን የሚቆጠሩ ረድፎች ሲኖሩት የማስገቢያ አፈጻጸሙ ከ 10 እስከ 100 ጊዜ ሊቀንስ ይችላል። ይህ ከUUID v7 ጋር ይቃረናል፣ እሱም የሚፈጠረው በጊዜ ቅደም ተከተል ሲሆን የB-tree ኢንዴክስን ቀልጣፋ ያደርገዋል።
ግን የUUID v4 ጠቀሜታ የተከፋፈሉ ሲስተሞች (distributed systems) ውስጥ ነው። ማንኛውም አንጓ (node) ወይም መሣሪያ ከማንኛውም ሰዓት ወይም ቦታ ራሱን የቻለ መለያ መፍጠር ይችላል፤ ምንም ማዕከላዊ አስተባባሪ አያስፈልግም።
የደህንነት አንድምታ
UUID v4 ለአይዲ ስርቆት (ID enumeration) በሚጨነቁበት ሁኔታ ጥሩ ነው። ምክንያቱም መለያዎቹ በዘፈቀደ ስለሚፈጠሩ ተከታታይ ቁጥሮች ወይም የጊዜ መለያዎች እንደሚሰጡ ሁሉ የሚቀጥለውን ወይም ያለፈውን መለያ መገመት አይቻልም። የደህንነት ኢንጂነሮች ለኤፒአይ (API) ቶከኖች ወይም ለሂደት መለያዎች UUID v4 ይመርጣሉ።
122 ቢት የዘፈቀደ ማለት 2^122 ≈ 5.3 × 10^36 የተለያዩ እሴቶች ማለት ነው። የማጋጨት እድልን ለማስላት የቀላሉ ዘዴ የተወሰኑ መለያዎች ሲፈጠሩ የመድገም እድሉ ከn^2 / (2 * 2^122) በታች ነው። n = 10^18 ሲሆን እንኳ የማጋጨት እድሉ 10^-7 ያህል ነው። ለአብዛኛው አፕሊኬሽን ይህ በቂ ነው።
በአንፃር ማወዳደር
| መለያ አይነት | የዘፈቀደ ቢቶች | የጊዜ መረጃ | የኢንዴክስ ተስማሚነት | ርዝመት (ቁምፊዎች) |
|---|---|---|---|---|
| UUID v4 | 122 | የለም | ደካማ | 36 (32 ያለ ሰረዝ) |
| UUID v7 | 74 | አለ | ጥሩ | 36 (32 ያለ ሰረዝ) |
| ULID | 80 | አለ | ጥሩ | 26 |
| NanoID | ተለዋዋጭ (እስከ 122) | የለም | ይለያያል | 21 (ነባሪ) |
በማጠቃለያ
UUID v4 በታላላቅ የተከፋፈሉ ሲስተሞች ውስጥ የማይተካ መሳሪያ ነው። ይህ ገጽ በቀጥታ በተጠቃሚው አሳሽ (browser) ውስጥ ስለሚሰራ ምንም ውሂብ ወደ አገልጋይ አይላክም። ስለዚህ ግላዊነት እና ፍጥነት ዋስትና ይሰጣል።
ማሳሰቢያ፡- ይህ ገጽ ለሌሎች አይነት መለያዎች (UUID v7፣ ULID፣ NanoID) የተለያዩ የቅርጽ መለኪያዎችን ያቀርባል። የ UUID v4 መቆጣጠሪያዎች (uppercase እና hyphens) ለዚህ መለያ ብቻ የተወሰኑ ናቸው።
ተደጋጋሚ ጥያቄዎች (FAQ)
1. የUUID v4 ቁጥር ምን ያህል የተለያዩ አማራጮች አሉ?
ከ 2^122 በላይ የተለያዩ መለያዎች መፍጠር ይቻላል። ይህ ቁጥር በግምት 5.3 × 10^36 ነው።
2. ሁለት ተመሳሳይ UUID v4 ማግኘት እስከ መቼ አይቻልም?
በዓመት 1 ትሪሊዮን UUIDs ቢፈጥሩም የማጋጨት እድሉ ከ10^-18 ያነሰ ነው። ስለዚህ ለሁሉም ተግባራዊ አተገባበር ደህንነቱ የተጠበቀ ነው።
3. ሰረዞቹን ማስወገድ ምን ያበላሻል?
ሰረዞቹ በUUID ደረጃ አያስፈልጉም። ያለ ሰረዝ 32 ቁምፊዎች ብቻ አሉ። ይህ ለዩአርኤል፣ ለፋይል ስም ወይም ለJSON ፋይሎች ተስማሚ ነው።
4. የUppercase ማብራት በUUID ዋጋ ላይ ለውጥ ያመጣል?
አይ፣ የUUID ዋጋ በባይት መልክ ይቀመጣል። Uppercase ወይም lowercase የሚያሳይ ቅርጽ ብቻ ነው። ነገር ግን አንዳንድ ሲስተሞች ሁሉንም ፊደላት በአንድ አይነት እንዲጻፉ ይጠይቃሉ።
5. UUID v4 ለዋና ቁልፍ መጠቀም ይቻላል?
ይቻላል፣ ነገር ግን የኢንዴክስ ፍርግራ ሊያመጣ ይችላል። በትንሽ ሰንጠረዦች ምንም ችግር የለውም። በትላልቅ ሲስተሞች UUID v7 ወይም ULID የተሻለ አማራጭ ነው።
6. ይህ ገጽ የUUIDን ለማመንጨት የሚጠቀመው ምን ዘዴ ነው?
በተጠቃሚው አሳሽ ውስጥ ያለውን crypto.randomUUID() ወይም ተመሳሳይ የዘፈቀደ አመንጪ ዘዴ ይጠቀማል። ምንም ነገር ወደ አገልጋይ አይላክም።