UUID v7 ထုတ်ပေးသည့် ကိရိယာ

UUID v7 တန်ဖိုးများကို အွန်လိုင်းတွင် ထုတ်ယူပါ — ၄၈ ဘစ် မီလီစက္ကန့် အချိန်မှတ်နှင့် ၇၄ ဘစ် ကျပန်းစနစ် ပါဝင်သော အချိန်အလိုက် စီနိုင်သည့် UUID များ ဖြစ်သည်။

ပုံစံ
ထုတ်လုပ်ထားသော ID များ
အဆင်သင့်ဖြစ်ပါပြီ။ သင့်ဘရောက်ဇာတွင် UUID v7 တန်ဖိုးများကို ထုတ်ယူပါ။

ဤ ID ကို တည်ဆောက်ပုံ

ပုံစံတည်ဆောက်ပုံ
၄၈ ဘစ် Unix မီလီစက္ကန့် အချိန်မှတ်၊ ဗားရှင်း ၇ ဘစ်၊ RFC အမျိုးအစား ဘစ်များနှင့် ကျပန်းဖြည့်စွက်ချက်များ ဖြစ်သည်။
အန်ထရိုပီ (Entropy)
ဤစနစ်တွင် ကျပန်းစနစ် ၇၄ ဘစ် ပါဝင်ပြီး monotonic counter မပါဝင်ပါ။
အချိန်
ဟုတ်ကဲ့။ ပထမ ၄၈ ဘစ်သည် ဖန်တီးချိန်ကို ကုဒ်ပြောင်းထားခြင်းဖြစ်သောကြောင့် မတူညီသော မီလီစက္ကန့်များအကြား ID များကို အချိန်အလိုက် စီနိုင်သည်။
တိုက်ဆိုင်မှု ဖြစ်နိုင်ခြေ
တစ်မီလီစက္ကန့်အတွင်း တိုက်ဆိုင်မှုဖြစ်နိုင်ခြေသည် ၇၄ ဘစ် ကျပန်းစနစ်ပေါ်တွင် မူတည်သည် — တစ်စက္ကန့်တည်းတွင် အလွန်များပြားသော ပမာဏထုတ်ယူပါက ပေါင်းစပ်ညှိနှိုင်းထားသော ID ဝန်ဆောင်မှုကို သုံးသင့်သည်။
ဥပမာ
01a044bc-5d75-795f-9cad-4b8be8a9ee74

သင့် ID များကို သင့်ဘရောက်ဇာ၏ ကျပန်းစနစ်ဖြင့်သာ ထုတ်လုပ်ပေးပါသည်။ BroBroGo သို့ မည်သည့်အရာမျှ မပို့ပါ။

အမေးများသော မေးခွန်းများ (FAQ)

UUID v4 အစား UUID v7 ကို အဘယ်ကြောင့် ရွေးချယ်သင့်သနည်း။

UUID v7 သည် UUID ပုံစံကို ဆက်လက်ထိန်းသိမ်းထားသော်လည်း အချိန်အလိုက် စီနိုင်သောကြောင့် မှတ်တမ်းများ၊ ဒေတာဘေ့စ်အညွှန်းများနှင့် ဖြစ်ရပ်စီးဆင်းမှုများကို အချိန်နှင့်အမျှ စနစ်တကျရှိစေရန် ကူညီပေးသည်။

UUID v7 သည် ဖန်တီးချိန်ကို ဖုံးကွယ်ထားပါသလား။

မဟုတ်ပါ။ အချိန်မှတ်သည် ID ၏ အစိတ်အပိုင်းတစ်ခု ဖြစ်သည်။ အချိန်အချက်အလက်များ မပါဝင်သော ID လိုအပ်ပါက UUID v4 သို့မဟုတ် NanoID ကို သုံးပါ။

UUID v7 မျိုးဆက်စာမျက်နှာဆိုင်ရာ ရည်ညွှန်းဆောင်းပါး

ဤကိရိယာ၏ ထူးခြားချက်ကား အဘယ်နည်း

ဤစာမျက်နှာသည် အခြား UUID မျိုးဆက်ကိရိယာများနှင့် ကွဲပြားသော အဓိကအင်္ဂါရပ်တစ်ခုကို ပေးဆောင်သည်- UUID v7 တွင် ၄၈-bit Unix မီလီစက္ကန့် တိုင်မ်းစတမ်း (timestamp) ကို ID ၏အစတွင် မြှုပ်နှံထားပြီး ကျန်သော bits များကို ကျပန်းကိန်းဂဏန်းများဖြင့် ဖြည့်သွင်းထားသည်။ ဤဒီဇိုင်းကြောင့် UUID v7 သည် ဖန်တီးချိန်အားဖြင့် သဘာဝအတိုင်း စီထားနိုင်သော ID များကို ထုတ်ပေးနိုင်ခြင်း၊ UUID v4 ၏ ကျပန်းသဘောသဘာဝကြောင့် ဖြစ်ပေါ်သော index fragmentation ကို ဖြေရှင်းပေးနိုင်ခြင်း၊ နှင့် cryptography အရ ခန့်မှန်းရခက်သော ID များ ဖြစ်နေခြင်းတို့ ဖြစ်သည်။

UUID v7 သည် စံ 36 လုံးပါ string တစ်ခုဖြစ်ပြီး၊ ပထမဆုံး စာလုံးများသည် ထို ID ကိုဖန်တီးသည့် Unix မီလီစက္ကန့်အချိန်ကို ကိုယ်စားပြုသည်။ သို့သော် တစ်မီလီစက္ကန့်တည်းအတွင်း ထုတ်ပေးသော ID များအတွက် တင်းကျပ်သောအစဉ်လိုက် (strict ordering) ကို UUID v7 က အာမမခံပါ — ထို့ကြောင့် parallel စနစ်များတွင် တစ်ပြိုင်နက်ထုတ်ပေးသော ID များ၏ အစဉ်အား အတိအကျ မသတ်မှတ်နိုင်ပါ။

UUID v7 ၏ ဖွဲ့စည်းပုံနှင့် နောက်ခံ

128-bit ရှိသော UUID v7 ၏ ဖွဲ့စည်းပုံမှာ အောက်ပါအတိုင်းဖြစ်သည်-

  • 48 bits: Unix epoch (January 1, 1970 00:00:00 UTC) မှစတင်၍ မီလီစက္ကန့်ဖြင့်တိုင်းတာသော timestamp
  • 74 bits: Cryptographically strong random data
  • 6 bits: Version indicator (0111 for v7)

ဤဖွဲ့စည်းပုံကြောင့် UUID v7 သည် UUID v4 (128 bits random) ထက် collision ဖြစ်နိုင်ခြေ ပိုမိုမြင့်မားသော်လည်း၊ timestamp ပါသောကြောင့် ဒေတာဘေ့စ် B-tree index များတွင် locality ကောင်းမွန်စေသည်။ အကယ်၍ တူညီသော timestamp ဖြင့် ID များစွာကို ထုတ်ပေးပါက၊ ၎င်းတို့၏ အစဉ်ကို random bits များကသာ ဆုံးဖြတ်ပေးသည်။

Timer-based Sorting က Database Indexing အတွက် အဘယ်ကြောင့် အရေးကြီးသနည်း

UUID v4 သည် လုံးဝကျပန်းဖြစ်သောကြောင့်၊ ဒေတာဘေ့စ်သို့ ID အသစ်များကို ထည့်သွင်းသည့်အခါ B-tree index ၏ နေရာအမျိုးမျိုးတွင် random ရောက်ရှိသွားကာ page splits များကို မကြာခဏဖြစ်ပေါ်စေသည်။ ဤသည်မှာ index fragmentation ဟုခေါ်ပြီး၊ insert performance ကို သိသိသာသာ ကျဆင်းစေသည်။

UUID v7 တွင် timestamp က ID ၏အစတွင် ပါရှိခြင်းကြောင့်၊ ID အသစ်များသည် index ၏ ညာဘက်စွန်း (သို့မဟုတ် မကြာသေးမီကထည့်သွင်းထားသော နေရာ) အနီးတွင် ရောက်ရှိသွားတတ်သည်။ ဤသည် index locality ဟုခေါ်ပြီး၊ B-tree ကို ပိုမိုထိရောက်စွာ အသုံးပြုနိုင်ရန် ကူညီပေးသည်။ သို့သော် တစ်မီလီစက္ကန့်အတွင်း ID အများအပြားကို ထုတ်ပေးပါက၊ ၎င်းတို့၏ order သည် random ဖြစ်နေဆဲဖြစ်သောကြောင့်၊ index locality ၏ အကျိုးကျေးဇူးကို လုံးဝဆုံးရှုံးစေနိုင်သည်။

သွင်းအားစုများနှင့် ထုတ်ပေးသောရလဒ်များ

ဤကိရိယာတွင် သတ်မှတ်နိုင်သော parameter များမှာ-

  • Count: 1 မှ 100 အထိ (integer တစ်ခုဖြစ်ရမည်)
  • Uppercase: UUID string ကို uppercase (ABC...123) သို့မဟုတ် lowercase (abc...123) ဖြင့်ပြသရန် toggle
  • Include hyphens: 36-character standard format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) တွင်ရှိသော hyphens များကို ထည့်သွင်းရန် သို့မဟုတ် ဖယ်ရှားရန် toggle

ဤသွင်းအားစုများကို ပြောင်းလဲသည့်အခါတိုင်း၊ ID များကို ချက်ချင်း ပြန်လည်ထုတ်လုပ်ပေးသည်။ ထုတ်ပေးသော ID များသည် browser ၏ strong randomness (Crypto.getRandomValues() မှတစ်ဆင့်) ကို အသုံးပြု၍ local တွင် ထုတ်လုပ်ခြင်းဖြစ်ပြီး၊ မည်သည့် data ကိုမျှ server သို့ မပို့ပါ။

ရလဒ်များတွင် အောက်ပါ status messages များကို ပြသသည်-

  • "Ready." — initial idle state
  • "Generated." — ID များကို အောင်မြင်စွာထုတ်လုပ်ပြီးနောက်
  • "Copied all!" — "Copy All" ခလုတ်ကိုနှိပ်၍ clipboard သို့ ID အားလုံးကို ကူးယူလိုက်သောအခါ

တစ်ဦးချင်း ID ကို နှိပ်ပါက၊ ထို ID တစ်ခုတည်းကိုသာ clipboard သို့ ကူးယူပေးသည်။

UUID v7 နှင့် အခြား Time-based Format များအကြား နှိုင်းယှဉ်ခြင်း

UUID v7 ကို ULID (Universally Unique Lexicographically Sortable Identifier) နှင့် မကြာခဏ နှိုင်းယှဉ်လေ့ရှိသည်။

အင်္ဂါရပ် UUID v7 ULID
Length 36 characters (128 bits) 26 characters (128 bits)
Timestamp resolution Milliseconds (48 bits) Milliseconds (48 bits)
Encoding Hexadecimal Base32 (Crockford)
Collision probability same-millisecond: depends on random bits same-millisecond: depends on random bits
Standard RFC 9562 (was RFC 4122) Not an official standard

UUID v7 သည် hexadecimal encoding ကိုအသုံးပြုသောကြောင့်၊ UUID v4 နှင့် တူညီသော format ဖြင့် ထိန်းသိမ်းထားပြီး၊ ရှိပြီးသား systems များနှင့် ပိုမိုလွယ်ကူစွာ integrate လုပ်နိုင်သည်။ သို့သော် ULID သည် base32 ဖြင့် encoding လုပ်ထားသောကြောင့်၊ စာလုံးအရေအတွက် လျော့နည်းပြီး၊ case-insensitive ဖြစ်ခြင်းကဲ့သို့သော အကျိုးကျေးဇူးများရှိသည်။

ဤကိရိယာကို မည်သူများအတွက် ရည်ရွယ်သနည်း

  • Distributed systems developers: Chronologically sortable primary keys လိုအပ်သူများ
  • Database administrators: UUID v4 ၏ index fragmentation ကိုဖြေရှင်းလိုသူများ
  • Security-conscious engineers: Unguessable identifiers ကိုလိုအပ်ပြီး၊ time-based ordering ကိုလည်း လိုချင်သူများ
  • Database migration projects: UUID v4 မှ time-based format သို့ ပြောင်းလိုသူများ (insert performance ကိုမြှင့်တင်ရန်အတွက်)

အမေးများသောမေးခွန်းများ (FAQ)

မေး- UUID v7 သည် UUID v4 ထက် collision ဖြစ်နိုင်ခြေ ပိုများပါသလား။

ဖြေ- ဟုတ်ကဲ့၊ ဖြစ်နိုင်ခြေ အနည်းငယ်ပိုများပါသည်။ UUID v7 တွင် random bits 74 ခုသာရှိပြီး၊ UUID v4 တွင် 122 ခုရှိသည်။ သို့သော် လက်တွေ့တွင် collision ဖြစ်နိုင်ခြေသည် အလွန်နည်းပါးနေဆဲဖြစ်သည် — 2^37 ID ခန့်ကို 50% collision probability ဖြင့်ထုတ်ပေးနိုင်သည်။

မေး- ဤကိရိယာသည် ကျွန်ုပ်၏ data များကို server သို့ပို့ပါသလား။

ဖြေ- မပို့ပါ။ ID အားလုံးကို browser တွင် local ထုတ်လုပ်ခြင်းဖြစ်ပြီး၊ မည်သည့် data မျှ BroBroGo server သို့မပို့ပါ။

မေး- ကျွန်ုပ်၏ database တွင် UUID v7 ကို primary key အဖြစ်အသုံးပြုပါက၊ index fragmentation လုံးဝမရှိတော့ပါသလား။

ဖြေ- မဟုတ်ပါ။ တစ်မီလီစက္ကန့်အတွင်း ID အများအပြားကိုထုတ်ပေးပါက၊ ၎င်းတို့၏ order သည် random ဖြစ်သောကြောင့် index fragmentation အနည်းငယ်ရှိနေဆဲဖြစ်သည်။ သို့သော် UUID v4 နှင့်နှိုင်းယှဉ်ပါက သိသိသာသာ ကောင်းမွန်ပါသည်။

မေး- UUID v7 ကို security အတွက်အသုံးပြုရန် ဘေးကင်းပါသလား။

ဖြေ- ဟုတ်ကဲ့၊ ၎င်းသည် cryptographically strong random data ကိုအသုံးပြုထားသောကြောင့်၊ ၎င်း၏ ID များကို ခန့်မှန်းရန် မဖြစ်နိုင်လောက်ပါ။ သို့သော် timestamp ပါသောကြောင့်၊ ID ကိုကြည့်ခြင်းအားဖြင့် ဖန်တီးချိန်ကို ခန့်မှန်းနိုင်ပါသည်။

မေး- ထုတ်ပေးသော ID များသည် အစဉ်လိုက်အတိုင်း စီထားပြီးသားလား။

ဖြေ- ဟုတ်ကဲ့၊ ၎င်းတို့ကို timestamp အားဖြင့် စီထားပြီးသားဖြစ်သည်။ သို့သော် တစ်မီလီစက္ကန့်အတွင်းထုတ်ပေးသော ID များအတွက် strict ordering ကို အာမမခံပါ။