የUUID v7 ማመንጫ

የUUID v7 እሴቶችን በመስመር ላይ ያመነጩ፦ በጊዜ ሊደረደሩ የሚችሉ UUIDዎች ባለ 48-ቢት ሚሊሰከንድ የጊዜ ማህተም እና 74 የዘፈቀደ ቢቶች።

ቅርጸት
የተፈጠሩ መታወቂያዎች
ዝግጁ ነው። በብሮውዘርዎ ውስጥ የUUID v7 እሴቶችን ያመነጩ።

ይህ መለያ (ID) እንዴት እንደሚገነባ

አቀማመጥ (Layout)
ባለ 48-ቢት ዩኒክስ (Unix) ሚሊሰከንድ የጊዜ ማህተም፣ ስሪት 7 ቢቶች፣ RFC ልዩነት ቢቶች እና የዘፈቀደ ሙሌት።
ኤንትሮፒ (Entropy)
በዚህ አተገባበር ውስጥ 74 የዘፈቀደ ቢቶች፤ ተከታታይ ቆጣሪ (monotonic counter) የለም።
ጊዜ
አዎ። የመጀመሪያዎቹ 48 ቢቶች የፈጠራ ጊዜን ኮድ ያደርጋሉ፣ ስለዚህ መለያዎች በተለያዩ ሚሊሰከንዶች ውስጥ በጊዜ ቅደም ተከተል ይደረደራሉ።
የግጭት ስጋት (Collision risk)
በአንድ ሚሊሰከንድ ውስጥ፣ ግጭቶች በ74 የዘፈቀደ ቢቶች ላይ ይወሰናሉ፤ እጅግ በጣም ከፍተኛ በአንድ ሚሊሰከንድ ውስጥ የሚፈጠር መጠን የተቀናጀ የID አገልግሎት መጠቀም አለበት።
ምሳሌ
01a044bc-5858-72ce-a1db-4599c6382c35

መታወቂያዎችዎ በጠንካራ የብሮውዘር የዘፈቀደነት በአገር ውስጥ ይመነጫሉ። ምንም ነገር ወደ BroBroGo አይላክም።

ተደጋግመው የሚነሱ ጥያቄዎች (FAQ)

በUUID v4 ምትክ ለምን UUID v7 እመርጣለሁ?

UUID v7 የUUID ቅርጽን ይይዛል ነገር ግን በጊዜ ይደረደራል፣ ይህም የምዝግብ ማስታወሻዎች፣ የውሂብ ጎታ ማውጫዎች እና የክስተት ዥረቶች በጊዜ ቅደም ተከተል እንዲቆዩ ይረዳል።

UUID v7 የፈጠራ ጊዜውን ይደብቃል?

አይደለም። የጊዜ ማህተሙ የመለያው አካል ነው። ያለ ጊዜ መረጃ ያለ ግልጽ ያልሆነ መለያ ከፈለጉ UUID v4 ወይም NanoID ይጠቀሙ።

UUID v7 አመንጭ ገጽ፡ በጊዜ ቅደም ተከተል የሚደረደሩ ልዩ መለያዎች

የUUID v7 መለያ ምንድን ነው?

UUID v7 (Universally Unique Identifier, ስሪት 7) ማለት በደረጃውረት RFC 9562 መሠረት የተገለጸ ባለ128-ቢት ልዩ መለያ ነው። እያንዳንዱ መለያ በ36 ቁምፊዎች (ከሰረዝ ጋር ሲታይ) የሚወከል ሲሆን፣ አወቃቀሩ በመጀመሪያ 48 ቢት (12 ሄክሳዴሲማል ቁምፊዎች) የዩኒክስ ሚሊሰከንድ የጊዜ ማህተም ይዟል። የተቀረው ክፍል ደግሞ በአሳሹ ውስጥ በሚፈጠር ጠንካራ የዘፈቀደ ቁጥር (ራንደም) ይሞላል።

የUUID v7 ዋና ጠቀሜታ በመረጃ ቋቶች (databases) ውስጥ የሚከሰተውን የመረጃ ጠቋሚ ቅንጣት (index fragmentation) ችግር መፍታት ነው። የUUID v4 መለያዎች ሙሉ በሙሉ በዘፈቀደ ስለሚፈጠሩ፣ ወደ ቢ-ትሪ (B-tree) ጠቋሚ ሲጨመሩ በተለያዩ ቦታዎች ላይ ይበተናሉ። ይህ ደግሞ የመረጃ ማስገቢያ ፍጥነትን ይቀንሳል። UUID v7 ግን በጊዜ ማህተሙ አማካይነት አዲስ መለያዎች በተከታታይ ወደ አንድ የቢ-ትሪ ቅጠል ገጽ ይጨመራሉ።

የUUID v7 አወቃቀር እና የጊዜ ማህተም ሚና

የUUID v7 አወቃቀር በሦስት ዋና ዋና ክፍሎች ይከፈላል፦

  1. 48-ቢት የጊዜ ማህተም – ከዩኒክስ ኤፖክ (January 1, 1970) ጀምሮ ያለፉት ሚሊሰከንዶች ብዛት። ይህ እሴት በ12 ሄክሳዴሲማል ቁምፊዎች ይወከላል።
  2. 4-ቢት የስሪት መለያ – ይህ ሁልጊዜ 7 የሚለውን ሄክሳዴሲማል እሴት ይይዛል።
  3. 76-ቢት የዘፈቀደ ክፍል – የተቀረው ቦታ በአሳሹ የሚቀርብ ጠንካራ የክሪፕቶግራፊክ ዘፈቀደ ቁጥር ይሞላዋል።

በጠቅላላው ይህ 128 ቢት (16 ባይት) ነው። የተሟላው የ36-ቁምፊ ሕብረቁምፊ በሚከተለው ቅርጽ ይታያል፦ 018f3a2b-c7d1-7a80-b123-456789abcdef እዚህ የመጀመሪያዎቹ 12 ቁምፊዎች የጊዜ ማህተሙን ያመለክታሉ።

ልዩነቱ፦ UUID v7 እና አጎቱ ULID በተመሳሳይ ሚሊሰከንድ ውስጥ ለሚፈጠሩ መለያዎች ጥብቅ ቅደም ተከተል (strict ordering) አይሰጡም። ምክንያቱም የዘፈቀደ ክፍሉ ቢት ቀዳሚነት ስለሌለው። ስለዚህ አንድ ላይ የተፈጠሩ መለያዎች ሲደረደሩ የተለያየ ቅደም ተከተል ሊኖራቸው ይችላል።

ይህ ገጽ ከሌሎች የUUID አመንጪዎች የሚለየው እንዴት?

በዚህ ገጽ ላይ ያለው መሣሪያ በልዩ ሁኔታ UUID v7 ን ያመነጫል። ልዩ ባህሪያቱ፦

  • የጊዜ ማህተም አብሮ መሆን – እያንዳንዱ መለያ ከተፈጠረበት ሰከንድ ጀምሮ የተወሰነ የጊዜ መረጃ ይዟል። ይህ ከUUID v4 በተለየ መልኩ በተፈጥሮ በጊዜ ቅደም ተከተል እንዲደረደሩ ያስችላል።
  • ከ1 እስከ 100 መለያዎች – ተጠቃሚው በአንድ ጊዜ ከ1 እስከ 100 ድረስ መለያዎችን ማመንጨት ይችላል።
  • ማሳያ ቅንብሮች – መለያዎቹን በካፒታል (uppercase) ወይም ከሰረዝ ጋር/ያለ ሰረዝ ማሳየት ይቻላል።
  • ፍጥነት እና ግላዊነት – መለያዎቹ ሙሉ በሙሉ በአሳሹ ውስጥ ይፈጠራሉ። ምንም ዓይነት መረጃ ወደ ብሮብሮጎ ወይም ወደ ማንኛውም አገልጋይ አይላክም።
  • አፋጣኝ እንደገና ማመንጨት – ማንኛውም ቅንብር (ብዛት፣ ካፒታል፣ ሰረዝ) ሲቀየር ሁሉም መለያዎች ወዲያውኑ እንደገና ይፈጠራሉ።

ውጤቶቹን እንዴት መጠቀም እንደሚቻል - ቅጂ እና ማሳያ አማራጮች

መለያዎቹ ከተፈጠሩ በኋላ ሦስት ዓይነት የቅጂ መንገዶች አሉ፦

  1. ነጠላ ቅጂ – ከዝርዝሩ ውስጥ ማንኛውንም አንድ መለያ ጠቅ ማድረግ ወደ ክሊፕቦርድ ይቀዳል።
  2. ሁሉንም ቅጂ – "Copy all!" የሚለው ቁልፍ ሁሉንም የተፈጠሩ መለያዎች በአንድ ጊዜ ይቀዳል። ከዚያ በኋላ "Copied all!" የሚል ሁኔታ ይታያል።
  3. ሁኔታ አመልካች – ገጹ "Ready." (ዝግጁ) ወይም "Generated." (ተፈጠረ) ወይም "Copied all!" (ሁሉም ተቀድቷል) የሚሉ ሁኔታዎችን ያሳያል።

ማሳያ ቅንብሮች፦

  • ካፒታል – ሲጫኑ መለያዎቹ በትልቅ ፊደል (A-F) ይታያሉ።
  • ሰረዞች – ሲጠፉ መለያዎቹ ያለ ሰረዝ ይታያሉ፣ ለምሳሌ 018f3a2bc7d17a80b123456789abcdef

የማሳያ ቅንብሮች መለያዎቹን ወደ መረጃ ቋት ወይም ወደ ፋይል ሲያስገቡ የሚፈለገውን ቅርጽ ለማዘጋጀት ይጠቅማሉ። አንዳንድ ሲስተሞች የሰረዝ መኖር ወይም አለመኖር ይጠይቃሉ።

ደህንነት እና ግላዊነት - በአሳሽ ውስጥ አመንጨት

የዚህ ገጽ ቁልፍ ጠቀሜታ የተጠቃሚን ግላዊነት መጠበቅ ነው። ሁሉም የዘፈቀደ ቁጥር ማመንጨት በአሳሹ ውስጥ በሚገኘው crypto.getRandomValues() የጃቫስክሪፕት ተግባር ይከናወናል። ይህ በዘመናዊ አሳሾች ውስጥ የሚገኝ ክሪፕቶግራፊክ ደህንነቱ የተጠበቀ የዘፈቀደ ቁጥር አመንጪ ነው።

ወደ ብሮብሮጎ ወይም ወደ ማንኛውም ውጫዊ አገልጋይ ምንም ዓይነት መረጃ አይላክም። ይህ ማለት የተፈጠሩ መለያዎች ለማንም ሌላ አካል አይታወቁም ማለት ነው። በተለይ ምሥጢራዊነት በሚፈልጉ ፕሮጀክቶች ውስጥ ይህ በጣም አስፈላጊ ነው።

የUUID v7 የዘፈቀደ ክፍል 76 ቢት መሆኑ በቂ የሆነ የዘፈቀደነት ደረጃ ይሰጣል። የጊዜ ማህተሙን እንኳን አውቆ በራሱ ላይ ወረራ ለማድረግ የሚደረግ ሙከራ በንድፈ ሀሳብ ከሞካሪው አቅም በላይ ነው።

ማን ይፈልገዋል?

ይህ መሣሪያ በተለይ ለሚከተሉት ቡድኖች ጠቃሚ ነው፦

  1. የተከፋፈሉ ሲስተሞች ገንቢዎች – ለምሳሌ እንደ Apache Cassandra ወይም CockroachDB ሲስተሞች ውስጥ በጊዜ ቅደም ተከተል የሚደረደሩ ዋና ቁልፎች (primary keys) ያስፈልጋሉ።
  2. የመረጃ ቋት አስተዳዳሪዎች – UUID v4 ሲጠቀሙ የሚከሰተውን የመረጃ ጠቋሚ ቅንጣት (index fragmentation) ለማስወገድ ይፈልጋሉ።
  3. የደህንነት መሐንዲሶች – ሊገመቱ የማይችሉ ነገር ግን በጊዜ የሚደረደሩ መለያዎች ያስፈልጋሉ።
  4. ከUUID v4 ወደ ጊዜ-ተኮር ቅርጽ የሚዘዋወሩ – የመረጃ ቋት አፈጻጸምን ለማሻሻል ይፈልጋሉ።

በተጨማሪም የክስተት ምንጭ (event sourcing)፣ የሂሳብ ክትትል (audit trails) እና የመልእክት ልውውጥ ሲስተሞች ውስጥ የመፈጠር ጊዜ አስፈላጊ ሲሆን UUID v7 ተመራጭ ነው።

ተደጋጋሚ ጥያቄዎች (FAQ)

ጥያቄ 1፦ UUID v7 ከUUID v4 በምን ይሻላል? መልስ፦ UUID v4 ሙሉ በሙሉ የዘፈቀደ ሲሆን፣ UUID v7 የጊዜ ማህተም ስላለው መለያዎቹ በፈጠሩበት ጊዜ ቅደም ተከተል ይደረደራሉ። ይህ በመረጃ ቋት ውስጥ የቢ-ትሪ ጠቋሚ ሲሞላ የሚከሰተውን የገጽ መሰንጠቅ (page splitting) ይቀንሳል።

ጥያቄ 2፦ ከ100 በላይ መለያዎችን ማመንጨት እችላለሁ? መልስ፦ አዎ፣ የቁጥር መስኩ ከ1 እስከ 100 ድረስ ብቻ ነው የሚቀበለው። ሆኖም በተከታታይ በርካታ ጊዜ በማመንጨት የሚፈልጉትን ብዛት ማግኘት ይችላሉ።

ጥያቄ 3፦ በተመሳሳይ ሚሊሰከንድ ውስጥ የተፈጠሩ መለያዎች ቅደም ተከተል ዋስትና አለ? መልስ፦ አይደለም። UUID v7 እና ULID በተመሳሳይ ሚሊሰከንድ ውስጥ ለሚፈጠሩ መለያዎች ጥብቅ ቅደም ተከተል አይሰጡም። ለዚህም አስፈላጊ ከሆነ ተጨማሪ ሎጂክ መጨመር ይኖርበታል።

ጥያቄ 4፦ መለያዎቹ ወደ ውጭ አገልጋይ ይላካሉ? መልስ፦ አይደለም። ሁሉም የመልያ አመንጨት በአሳሽዎ ውስጥ ይከናወናል። ምንም ዓይነት መረጃ ወደ ብሮብሮጎ አይላክም።

ጥያቄ 5፦ ከሰረዝ ውጭ ሌላ ቅርጽ ማዘጋጀት እችላለሁ? መልስ፦ በአሁኑ ጊዜ የሚገኙት አማራጮች፦ ካፒታል (uppercase) እና የሰረዝ ማከል/ማስወገድ ብቻ ናቸው። ለሌሎች ቅርጾች የራስዎን ስክሪፕት መጠቀም ያስፈልግዎታል።

ጥያቄ 6፦ የUUID v7 አጠቃቀም በሙሉ ነፃ ነው? መልስ፦ አዎ፣ ይህ መሣሪያ ሙሉ በሙሉ ነፃ ነው። ምንም የሚከፈልበት ወይም የሚመዘገብበት ነገር የለም።