စွမ်းဆောင်ရည်မြင့် ထည့်သွင်းထားသော DBMS libmdbx 0.10 ကို ဖြန့်ချိသည်။

သုံးလကြာ ဖွံ့ဖြိုးတိုးတက်ပြီးနောက်၊ libmdbx 0.10.0 (MDBX) သည် စွမ်းဆောင်ရည်မြင့်မားပြီး ကျစ်လစ်သိပ်သည်းစွာ ထည့်သွင်းထားသော သော့တန်ဖိုးဒေတာဘေ့စ်ကို အကောင်အထည်ဖော်ခဲ့သည်။ libmdbx ကုဒ်ကို OpenLDAP Public License အောက်တွင် လိုင်စင်ရထားသည်။ libmdbx သည် LMDB DBMS ၏ နက်နဲသော ပြန်လည်ပြုပြင်မှုတစ်ခုဖြစ်ပြီး developer များအဆိုအရ၊ ယုံကြည်စိတ်ချရမှု၊ စွမ်းဆောင်ရည်အကွာအဝေးနှင့် စွမ်းဆောင်ရည်များတွင် ၎င်း၏ဘိုးဘေးများထက် သာလွန်သည်။ libmdbx သည် CRUD အခြေအနေများတွင် LMDB ထက် 20% ပိုမြန်ပြီး libmdbx ကို တည်ဆောက်သည့်အခါ အတွင်းပိုင်းထိန်းချုပ်မှုများကို ပိတ်ထားပါက 30% အထိ ပိုမြန်သည်ဟု ဖော်ပြထားသည် ။

Libmdbx သည် ACID၊ ပြင်းထန်သောပြောင်းလဲမှု အမှတ်စဉ်များကို ပေးဆောင်ပြီး CPU cores တစ်လျှောက် မျဉ်းကြောင်းအတိုင်း စကေးဖတ်ခြင်းများကို ပိတ်ဆို့ခြင်းမပြုပါ။ libmdbx တွင်၊ ကုဒ်အရည်အသွေး၊ တည်ငြိမ်သော API လုပ်ဆောင်ချက်၊ စမ်းသပ်ခြင်းနှင့် အလိုအလျောက်စစ်ဆေးမှုများကို များစွာအာရုံစိုက်ထားသည်။ အလိုအလျောက်ကျစ်လစ်သိပ်သည်းစေခြင်း၊ အလိုအလျောက်ဒေတာဘေ့စ်အရွယ်အစားစီမံခန့်ခွဲမှု၊ 32-ဘစ်နှင့် 64-ဘစ် စည်းဝေးပွဲများအတွက် ဒေတာဘေ့စ်ဖော်မတ်တစ်ခုနှင့် အပိုင်းအခြားမေးမြန်းမှု ခန့်မှန်းချက်များကို ပံ့ပိုးပေးသည်။ ပြန်လည်ရယူခြင်းစွမ်းရည်အချို့နှင့်အတူ ဒေတာဘေ့စ်ဖွဲ့စည်းပုံ၏ ခိုင်မာမှုကို စစ်ဆေးရန်အတွက် အသုံးဝင်မှုတစ်ခုကို ပံ့ပိုးပေးထားသည်။ စီမံကိန်းကို 2016 ခုနှစ်ကတည်းက Positive Technologies မှ ရန်ပုံငွေပံ့ပိုးထားပြီး ၎င်း၏ထုတ်ကုန်များတွင် 2017 ခုနှစ်ကတည်းက အသုံးပြုခဲ့ပြီး Positive Technologies များအပေါ် US အစိုးရမှ ချမှတ်ထားသော ပိတ်ဆို့အရေးယူမှုများသည် သိသာထင်ရှားသောအကျိုးသက်ရောက်မှုမရှိပါ။

နောက်ဆုံးထွက်ရှိကတည်းက ထည့်သွင်းထားသော အဓိက တီထွင်ဆန်းသစ်မှုများ၊ တိုးတက်မှုနှင့် ပြင်ဆင်မှုများ-

  • Mahlon E. Smith မှ Ruby binding နှင့် Noel Kuntze မှ Python binding ၏ စမ်းသပ်ဗားရှင်းကို ရရှိနိုင်ပြီး Alexey Sharov မှ GoLang နှောင်ကြိုးများကို အပ်ဒိတ်လုပ်ထားပါသည်။
  • “MDBX_WRITEMAP” မုဒ်အတွက်၊ RAM တွင် ဒေတာဘေ့စ်ဒေတာကို တိုက်ရိုက်ပြောင်းလဲသောအခါ၊ ပြောင်းလဲထားသော ဒေတာဘေ့စ်စာမျက်နှာများကို disk သို့ "ပွင့်လင်းမြင်သာသော ယိုဖိတ်မှု" ကို အကောင်အထည်ဖော်သည်။ ယခု လုပ်ဆောင်ချက်တစ်ခုစီကို ပြီးမြောက်ပြီးနောက်၊ ထိုစာမျက်နှာများသည် disk သို့ စာရေးရန် ချက်ခြင်း အပြီးအပိုင် အဆင်သင့်ဖြစ်နေပြီဖြစ်ပြီး OS kernel သည် ပြောင်းလဲထားသော စာမျက်နှာများကို disk သို့ လွတ်လပ်စွာ ဖယ်ရှားနိုင်ကာ ငွေပေးငွေယူပြုလုပ်ခြင်းတွင် ၎င်းတို့၏ ပြုပြင်မွမ်းမံရန် မလိုအပ်ပါ။ ရလဒ်အနေဖြင့် RAM မလုံလောက်သော အလုပ်များသည့်အခြေအနေများတွင်၊ disk လည်ပတ်မှုပမာဏကို ၂ ဆအထိ လျှော့ချနိုင်သည်။
  • အခြေအနေအများစုတွင် အရောင်းအ၀ယ်တစ်ခုလျှင် တစ်ကြိမ်သာ ပြုပြင်မွမ်းမံထားသော ကြီးမားသော/ရှည်လျားသော တန်ဖိုးရှိသော စာမျက်နှာများကို ဖယ်ရှားခြင်းအတွက် ဦးစားပေးပြင်ဆင်ထားသော စာမျက်နှာများ၏ ကြာရှည်အသုံးမပြုသော အရိပ်မိတ္တူများကို ဖယ်ရှားခြင်းအား အကောင်အထည်ဖော်ပါ။ ရလဒ်မှာ အလွန်ကြီးမားသော ငွေပေးငွေယူများပါရှိသော အခြေအနေများတွင် ဒစ်အသွားအလာကို လျှော့ချပြီး စွမ်းဆောင်ရည်ကို မြှင့်တင်ပေးပါသည်။
  • သော့များထည့်သည့်အခါ စာမျက်နှာများကို ပိုင်းခြားရန် "စမတ်" မုဒ်ကို အကောင်အထည်ဖော်ခဲ့သည်။ ယခု၊ စီစဥ်ထားသည့် အတွဲများကို ထည့်သွင်းသည့်အခါ၊ စာမျက်နှာများသည် အလိုအလျောက် လုံး၀ ပြည့်သွားမည်ဖြစ်ပြီး အခြားကိစ္စများတွင်၊ သစ်ပင်သည် ပို၍ အကောင်းဆုံး ဟန်ချက်ညီပါသည်။ ရလဒ်အနေဖြင့်၊ ပျမ်းမျှအားဖြင့်၊ ဒေတာဘေ့စ်စာမျက်နှာများကို ပိုမိုကောင်းမွန်စွာဖြည့်သွင်းထားပြီး B-tree သည် စွမ်းဆောင်ရည်အပေါ် အပြုသဘောဆောင်သောအကျိုးသက်ရောက်မှုရှိသည့် B-tree သည် ပိုမိုမျှတပါသည်။
  • ဒေတာဘေ့စ်နှင့် လုပ်ဆောင်ချက်များကို ပြုပြင်မွမ်းမံခြင်းအတွက် ကုန်ကျစရိတ်ကို တိကျစွာ ခန့်မှန်းနိုင်စေမည့် စာမျက်နှာများပါရှိသော လုပ်ဆောင်ချက်များ၏ စာရင်းအင်းများကို ထည့်သွင်းထားပါသည်။
  • iOS တွင် `std::filesystem::path` ကိုအသုံးပြု၍ MinGW ကိုအသုံးပြု၍ တည်ဆောက်ခြင်းနှင့် ပြဿနာများအပါအဝင်၊ ချွတ်ယွင်းချက်တစ်ဒါဇင်ကျော်ကို ပြင်ဆင်ပြီးပြီ၊ Windows ဗားရှင်းအဟောင်းများကို ပစ်မှတ်ထားတည်ဆောက်ခြင်း စသည်ဖြင့်။
  • စုစုပေါင်း၊ ဖိုင် 200 ခုတွင် ပြောင်းလဲမှု 66 ကျော် ပြုလုပ်ခဲ့ပြီး လိုင်းပေါင်း 6500 ကို ပေါင်းထည့်ကာ ~4500 ကို ဖျက်ခဲ့သည်။

သီးခြားအားဖြင့်၊ ကျွန်ုပ်သည် Turbo-Geth ပရောဂျက် (Go-Ethereum ၏ တာဘိုလမ်းဆုံတစ်ခု) libmdbx ကို သိုလှောင်မှုနောက်ကွယ်တွင် အသစ်အဖြစ် ရွေးချယ်မှုကို မှတ်သားထားပြီး ၎င်းတို့အတွက် ပရောဂျက်အဖွဲ့ (အထူးသဖြင့် Alexey Sharov၊ Artyom Vorotnikov နှင့် Alexey Akhunov) ကိုလည်း ကျေးဇူးတင်ပါသည်။ အလွန်အမင်းအသုံးပြုမှုအခြေအနေများတွင် စမ်းသပ်ရာတွင် ကြီးမားသောအကူအညီ။ အထူးသဖြင့်၊ ဒေတာဘေ့စ်ကြီးများဖြင့် ပြန်လည်ထုတ်လုပ်ရန် ခက်ခဲသောအခြေအနေများတွင် စွမ်းဆောင်ရည်ကျဆင်းမှုကို ဖြစ်ပေါ်စေသည့် read-ahead/caching ထိန်းချုပ်မှုတွင် ချို့ယွင်းချက်တစ်ခုကို ရှာဖွေတွေ့ရှိပြီး ဖယ်ရှားပစ်လိုက်ပါသည်။

source: opennet.ru

မှတ်ချက် Add