የUUID / ULID / NanoID አመንጪ

የUUID v4፣ UUID v7፣ ULID እና NanoID እሴቶችን ወዲያውኑ በብሮውዘርዎ ውስጥ ያመንጩ።

ቅርጸት

122 ቢት ሙሉ በሙሉ የዘፈቀደ — ምንም ቅደም ተከተል የሌለው፣ መገመት የማይቻል።

የተፈጠሩ መታወቂያዎች
ዝግጁ ነው።

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

በተደጋጋሚ የሚነሱ ጥያቄዎች

በUUID v4፣ UUID v7፣ ULID እና NanoID መካከል ያለው ልዩነት ምንድን ነው?

UUID v4 በታወቀው ባለ 36-ቁምፊ ቅርጸት 122 ቢት ንጹህ የዘፈቀደነትን ይይዛል፣ ነገር ግን የዘፈቀደ ቅደም ተከተሉ ለዳታቤዝ ኢንዴክስ አመቺ አይደለም። UUID v7 ያንኑ ቅርፅ ይዞ በሚሊሰከንድ የጊዜ ማህተም (timestamp) ይጀምራል፣ ስለዚህ መታወቂያዎቹ በግምት በተፈጠሩበት ጊዜ ቅደም ተከተል ይደረደራሉ — ይህም ለዋና ቁልፎች (primary keys) ጠቃሚ ነው። ULID ያንኑ የጊዜ-ቅድሚያ ዘዴ በአጭር፣ ለፊደል መጠን ግድ በሌለው (case-insensitive) ባለ 26-ቁምፊ ሕብረ-ቁምፊ ያከናውናል። NanoID ደግሞ ቅደም ተከተልን ሙሉ በሙሉ በመተው በጣም አነስተኛ እና ሙሉ በሙሉ ሊበጅ የሚችል መታወቂያ ይሰጣል — ርዝመቱን እና የቁምፊ ስብስቡን እርስዎ ይመርጣሉ።

እነዚህ መታወቂያዎች ሊገመቱ የማይችሉ እንዲሆኑ በቂ የዘፈቀደነት አላቸው?

አዎ — እያንዳንዱ መታወቂያ የሚመነጨው ሊገመት በማይችል ጠንካራ የብሮውዘር የዘፈቀደነት (cryptographically strong randomness) እንጂ ሊገመት በሚችል ምንጭ አይደለም። UUID v4 እና የNanoID ነባሪ ፊደላት ከ100 ቢት በላይ የዘፈቀደነትን ይይዛሉ። UUID v7 እና ULID ደግሞ ለጊዜ ማህተም ሲሉ ወደ 48 የሚጠጉ ቢቶችን ይተዋሉ፣ ስለዚህ የጊዜ ማህተም ያለባቸውን ቅርጸቶች እንደ ሚስጥር ሳይሆን ሊደረደሩ የሚችሉ መታወቂያዎች አድርገው ይውሰዷቸው።

የNanoIDን ርዝመት እና የቁምፊ ስብስብ መቀየር እችላለሁ?

አዎ — ወደ NanoID ሲቀይሩ ይህ መሣሪያ የርዝመት ተንሸራታች (በነባሪ ከቤተ-መጽሐፍቱ ጋር የሚዛመድ 21 ቁምፊዎች) እና ሊስተካከል የሚችል የፊደላት መስክ ያሳያል። ርዝመቱን ማሳነስ ወይም የፊደላቱን ስብስብ ማጥበብ የግጭት መቋቋምን (collision resistance) ስለሚቀንስ፣ የቁምፊ ስብስቡን ካሳነሱ ርዝመቱን ከፍ አድርገው ይያዙት።

የልዩ መታወቂያዎች (Unique Identifiers) አጠቃላይ እይታ

በዘመናዊ የሶፍትዌር ግንባታ እና የውሂብ ጎታ አስተዳደር ውስጥ ልዩ መታወቂያዎችን (Unique Identifiers) ማመንጨት መሰረታዊ ተግባር ነው። ይህ የUUID / ULID / NanoID አመንጪ መሣሪያ የተለያዩ ፍላጎቶችን የሚያሟሉ አራት ታዋቂ የመታወቂያ ቅርጸቶችን በአንድ ቦታ ያቀርባል። መሣሪያው UUID v4፣ UUID v7፣ ULID እና NanoID ቅርጸቶችን ይደግፋል።

እያንዳንዱ የመታወቂያ ቅርጸት የራሱ የሆነ መዋቅር፣ የርዝመት መጠን እና የዘፈቀደነት ባህሪ አለው። ለምሳሌ የተወሰኑት ቅርጸቶች ሙሉ በሙሉ በዘፈቀደ ቁጥሮች ላይ የተመሰረቱ ሲሆኑ፣ ሌሎቹ ደግሞ በጊዜ ቅደም ተከተል ለመደርደር እንዲቻል የጊዜ ማህተምን (timestamp) ያካትታሉ። ይህ መሣሪያ ተጠቃሚዎች እንደ ፍላጎታቸው ቅርጸቱን እንዲመርጡ፣ ብዛቱን እንዲወስኑ እና እንደ NanoID ላሉ ቅርጸቶች ደግሞ ርዝመቱንና የቁምፊ አይነቱን እንዲያበጁ ያስችላል።

የቅርጸቶች መዋቅር እና መሰረታዊ ልዩነቶች

የተለያዩ የመታወቂያ ቅርጸቶች ለተለያዩ የአጠቃቀም ሁኔታዎች የተነደፉ ናቸው። ከዚህ በታች የእያንዳንዱ ቅርጸት ዝርዝር መዋቅር ቀርቧል፦

  • UUID v4: ይህ ቅርጸት በታወቀው ባለ 36-ቁምፊ ቅርጸት (ሰረዞችን ጨምሮ) የሚቀርብ ሲሆን፣ 122 ቢት ሙሉ በሙሉ የዘፈቀደነትን ይይዛል። ምንም ዓይነት የጊዜ ቅደም ተከተል የለውም፣ ሙሉ በሙሉ መገመት የማይቻል ነው።
  • UUID v7: ይህ ቅርጸት እንደ UUID v4 ባለ 36-ቁምፊ ቅርጸት የሚቀርብ ቢሆንም፣ አወቃቀሩ የሚጀምረው በሚሊሰከንድ የጊዜ ማህተም (timestamp) ነው። ይህም መታወቂያዎቹ በግምት በተፈጠሩበት ጊዜ ቅደም ተከተል እንዲደረደሩ ያስችላቸዋል።
  • ULID (Universally Unique Lexicographically Sortable Identifier): ይህ ቅርጸት ባለ 26-ቁምፊ ርዝመት ያለው፣ ለፊደል መጠን ግድ የሌለው (case-insensitive) የጽሑፍ ሕብረ-ቁምፊ ነው። ከUUID v7 ጋር ተመሳሳይ በሆነ መልኩ በጊዜ ማህተም የሚጀምር በመሆኑ በጊዜ ቅደም ተከተል ሊደረደር ይችላል።
  • NanoID: ይህ ቅርጸት ምንም ዓይነት የጊዜ ቅደም ተከተል የሌለው፣ በጣም አነስተኛ እና ሙሉ በሙሉ ሊበጅ የሚችል መታወቂያ ነው። ተጠቃሚው የራሱን ርዝመት እና የቁምፊ ስብስብ መምረጥ ይችላል። የNanoID ነባሪ ርዝመት 21 ቁምፊዎች ነው።

የጊዜ-ተኮር መታወቂያዎች ለዳታቤዝ ኢንዴክስ ያላቸው ጥቅም

ባህላዊ የዘፈቀደ መታወቂያዎች (እንደ UUID v4 ያሉ) በዳታቤዝ ውስጥ እንደ ዋና ቁልፍ (primary keys) ሲያገለግሉ የኢንዴክስ አፈጻጸምን ሊቀንሱ ይችላሉ። ምክንያቱም ሙሉ በሙሉ የዘፈቀደ የሆኑ እሴቶች በዳታቤዝ ቢ-ትሪ (B-Tree) ኢንዴክስ ውስጥ በተበታተነ ሁኔታ ስለሚቀመጡ አዳዲስ መረጃዎችን ሲያስገቡ የዳታቤዝ ገጾችን እንደገና ማደራጀት ይጠይቃል።

በአንጻሩ UUID v7 እና ULID የጊዜ ማህተምን በመጀመሪያዎቹ ቢቶች ላይ ስለሚይዙ፣ መታወቂያዎቹ በተፈጠሩበት ጊዜ ቅደም ተከተል በግምት ሊደረደሩ ይችላሉ። ይህ ባህሪ አዳዲስ መረጃዎች በዳታቤዝ ኢንዴክስ መጨረሻ ላይ በቅደም ተከተል እንዲቀመጡ ስለሚያደርግ የዳታቤዝ ጽሕፈት አፈጻጸምን በእጅጉ ያሻሽላል። ይሁን እንጂ UUID v7 እና ULID በአንድ ሚሊሰከንድ ውስጥ ለሚፈጠሩ መታወቂያዎች ጥብቅ ቅደም ተከተልን ዋስትና አይሰጡም።

የዘፈቀደነት፣ የርዝመት እና የግጭት መቋቋም ሚዛን

በመታወቂያዎች አመንጭ ውስጥ የቁምፊዎች ርዝመት እና የፊደላት ስብስብ በቀጥታ ከግጭት መቋቋም (collision resistance) ጋር ይገናኛሉ። ግጭት የሚፈጠረው ሁለት የተለያዩ ሂደቶች አንድ ዓይነት መታወቂያ በአጋጣሚ ሲያመነጩ ነው።

UUID v4 እና የNanoID ነባሪ 21 ቁምፊዎች ከ100 ቢት በላይ የዘፈቀደነትን ስለሚይዙ እጅግ ከፍተኛ የሆነ የግጭት መቋቋም አላቸው። በሌላ በኩል፣ UUID v7 እና ULID ለጊዜ ማህተም ሲሉ ወደ 48 የሚጠጉ ቢቶችን ስለሚጠቀሙ፣ የዘፈቀደነት መጠናቸው ይቀንሳል። ስለዚህ እነዚህን የጊዜ ማህተም ያላቸውን ቅርጸቶች እንደ ሚስጥር ሳይሆን ሊደረደሩ የሚችሉ መታወቂያዎች አድርጎ መውሰድ ተገቢ ነው።

በNanoID ቅርጸት የቁምፊ ስብስቡን ማጥበብ ወይም ርዝመቱን ማሳነስ የግጭት መቋቋምን ስለሚቀንስ፣ የቁምፊ ስብስቡን ካሳነሱ ርዝመቱን ከፍ አድርገው መያዝ ይመረጣል።

የመሣሪያው አጠቃቀም መመሪያ እና አማራጮች

ይህ መሣሪያ ተጠቃሚዎች የሚፈልጉትን መታወቂያ በቀላሉ እንዲያመነጩ በርካታ አማራጮችን ያቀርባል። በመሣሪያው በይነገጽ ላይ የሚከተሉትን ግብዓቶች ማስተካከል ይቻላል፦

  1. ቅርጸት: ከUUID v4፣ UUID v7፣ ULID ወይም NanoID መካከል መምረጥ።
  2. ብዛት: በአንድ ጊዜ የሚመነጩ መታወቂያዎችን ቁጥር ከ1 እስከ 100 ባለው ክልል ውስጥ መወሰን።
  3. በትልልቅ ፊደላት: ለUUID ቅርጸቶች ብቻ የሚሠራ ሲሆን፣ መታወቂያዎቹን በትልልቅ ፊደላት ለማሳየት ያገለግላል።
  4. ሰረዞችን አካትት: ለUUID ቅርጸቶች ሰረዞችን በውጤቱ ውስጥ ለማካተት ወይም ለማስወጣት የሚያስችል መቀያየሪያ ነው
  5. ርዝመት: ለNanoID ብቻ የሚሠራ ተንሸራታች ሲሆን፣ የመታወቂያውን ርዝመት ከ2 እስከ 36 ቁምፊዎች ድረስ ማስተካከል ያስችላል።
  6. ፊደላት: ለNanoID ብቻ የሚሠራ የጽሑፍ ሳጥን ሲሆን፣ መታወቂያውን ለመሥራት የሚያገለግሉ ቁምፊዎችን ለመወሰን ይረዳል።

ማንኛውንም አማራጭ መቀየር መታወቂያዎቹን በራስ-ሰር እንደገና ያመነጫቸዋል። የተፈጠሩ መታወቂያዎች ዝርዝር ውስጥ ያለን አንድ መታወቂያ ጠቅ በማድረግ ብቻ ወደ ቅንጥብ ሰሌዳ (clipboard) መቅዳት ይቻላል። እንዲሁም "ሁሉንም ቅዳ" የሚለውን ቁልፍ በመጫን ሁሉንም በአንድ ጊዜ መቅዳት ይቻላል።

ደንቦች እና ልዩ ሁኔታዎች (Edge Cases)

መሣሪያው በትክክል እንዲሠራ የሚከተሉትን ደንቦች መከተል ይኖርበታል፦

  • የNanoID ፊደላት መስክ ቢያንስ 2 የተለያዩ ቁምፊዎችን መያዝ አለበት። የNanoID ፊደላት ወደ አንድ ቁምፊ ከተቀየሩ፣ መሣሪያው "ፊደላቱ ቢያንስ 2 የተለያዩ ቁምፊዎችን መያዝ አለባቸው።" የሚል የስህተት መልዕክት ያሳያል። በዚህ ጊዜ ውጤቶቹ ይጸዳሉ፣ የመታወቂያዎች ብዛት 0 ይሆናል፣ እና "ሁሉንም ቅዳ" የሚለው ቁልፍ እንዳይሠራ ይደረጋል።
  • መሣሪያው በአንድ ጊዜ ማመንጨት የሚችለው ከ1 እስከ 100 የሚደርሱ መታወቂያዎችን ብቻ ነው።

የግል ውሂብ ጥበቃ እና አሠራር

የዚህ መሣሪያ ዋነኛ ባህሪ ደህንነቱ የተጠበቀ አሠራር መከተሉ ነው። መታወቂያዎችዎ በጠንካራ የብሮውዘር የዘፈቀደነት በአገር ውስጥ ይመነጫሉ። ይህ ማለት መታወቂያዎቹ የሚፈጠሩት ሙሉ በሙሉ በእርስዎ ብሮውዘር ውስጥ እንጂ ወደ BroBroGo አገልጋይ ምንም ዓይነት መረጃ አይላክም።


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

በUUID v4፣ UUID v7፣ ULID እና NanoID መካከል ያለው ልዩነት ምንድን ነው?

UUID v4 በታወቀው ባለ 36-ቁምፊ ቅርጸት 122 ቢት ንጹህ የዘፈቀደነትን ይይዛል፣ ነገር ግን የዘፈቀደ ቅደም ተከተሉ ለዳታቤዝ ኢንዴክስ አመቺ አይደለም። UUID v7 ያንኑ ቅርፅ ይዞ በሚሊሰከንድ የጊዜ ማህተም (timestamp) ይጀምራል፣ ስለዚህ መታወቂያዎቹ በግምት በተፈጠሩበት ጊዜ ቅደም ተከተል ይደረደራሉ — ይህም ለዋና ቁልፎች (primary keys) ጠቃሚ ነው። ULID ያንኑ የጊዜ-ቅድሚያ ዘዴ በአጭር፣ ለፊደል መጠን ግድ በሌለው (case-insensitive) ባለ 26-ቁምፊ ሕብረ-ቁምፊ ያከናውናል። NanoID ደግሞ ቅደም ተከተልን ሙሉ በሙሉ በመተው በጣም አነስተኛ እና ሙሉ በሙሉ ሊበጅ የሚችል መታወቂያ ይሰጣል — ርዝመቱን እና የቁምፊ ስብስቡን እርስዎ ይመርጣሉ።

እነዚህ መታወቂያዎች ሊገመቱ የማይችሉ እንዲሆኑ በቂ የዘፈቀደነት አላቸው?

አዎ — እያንዳንዱ መታወቂያ የሚመነጨው ሊገመት በማይችል ጠንካራ የብሮውዘር የዘፈቀደነት (cryptographically strong randomness) እንጂ ሊገመት በሚችል ምንጭ አይደለም። UUID v4 እና የNanoID ነባሪ ፊደላት ከ100 ቢት በላይ የዘፈቀደነትን ይይዛሉ። UUID v7 እና ULID ደግሞ ለጊዜ ማህተም ሲሉ ወደ 48 የሚጠጉ ቢቶችን ይተዋሉ፣ ስለዚህ የጊዜ ማህተም ያለባቸውን ቅርጸቶች እንደ ሚስጥር ሳይሆን ሊደረደሩ የሚችሉ መታወቂያዎች አድርገው ይውሰዷቸው።

የNanoIDን ርዝመት እና የቁምፊ ስብስብ መቀየር እችላለሁ?

አዎ — ወደ NanoID ሲቀይሩ ይህ መሣሪያ የርዝመት ተንሸራታች (በነባሪ ከቤተ-መጽሐፍቱ ጋር የሚዛመድ 21 ቁምፊዎች) እና ሊስተካከል የሚችል የፊደላት መስክ ያሳያል። ርዝመቱን ማሳነስ ወይም የፊደላቱን ስብስብ ማጥበብ የግጭት መቋቋምን (collision resistance) ስለሚቀንስ፣ የቁምፊ ስብስቡን ካሳነሱ ርዝመቱን ከፍ አድርገው ይያዙት።