ဆောင်းပါး၏ဘာသာပြန်ကို သင်တန်းစသည့်နေ့တွင် ပြင်ဆင်ခဲ့ပါသည်။
ပေါ်လွင်ချက်များ:
- MongoDB တွင် စိတ်ကြိုက်ရွေးချယ်နိုင်သော်လည်း schema ရေးဆွဲရန် အလွန်အရေးကြီးပါသည်။
- အလားတူ၊ အညွှန်းများသည် သင့်အစီအစဉ်နှင့် အသုံးပြုခွင့်ပုံစံများနှင့် ကိုက်ညီရပါမည်။
- ကြီးမားသော အရာဝတ္ထုများနှင့် ကြီးမားသော အခင်းအကျင်းများကို အသုံးပြုခြင်းမှ ရှောင်ကြဉ်ပါ။
- လုံခြုံရေးနှင့် ယုံကြည်စိတ်ချရမှုဆိုင်ရာ အထူးသဖြင့် MongoDB ဆက်တင်များကို သတိထားပါ။
- MongoDB တွင် query optimizer မပါသောကြောင့် query operations များလုပ်ဆောင်ရာတွင် သတိထားရပါမည်။
ကျွန်ုပ်သည် ဒေတာဘေ့စ်များနှင့် အလုပ်လုပ်နေသည်မှာ ကြာမြင့်နေပြီဖြစ်သော်လည်း မကြာသေးမီကမှ MongoDB ကို ရှာဖွေတွေ့ရှိခဲ့သည်။ အလုပ်မစခင်မှာ သိစေချင်တဲ့ အချက်တစ်ချို့ရှိပါတယ်။ လူတစ်ဦးသည် နယ်ပယ်တစ်ခုတွင် အတွေ့အကြုံရှိနေပြီဆိုလျှင်၊ ၎င်းတို့သည် ဒေတာဘေ့စ်များ မည်ကဲ့သို့ လုပ်ဆောင်သည်နှင့် ၎င်းတို့လုပ်ဆောင်ပုံနှင့် ပတ်သက်၍ ကြိုတင်တွေးခေါ်မှုများ ရှိနေသည်။ သူများတွေ နားလည်လွယ်အောင်လို့ မျှော်လင့်ပြီး ဖြစ်တတ်တဲ့ အမှားတွေ စာရင်းကို တင်ပြလိုက်ရပါတယ်။
စစ်မှန်ကြောင်းအထောက်အထားမရှိဘဲ MongoDB ဆာဗာကိုဖန်တီးခြင်း။
ကံမကောင်းစွာဖြင့်၊ MongoDB ကို မူရင်းအတိုင်း စစ်မှန်ကြောင်းအထောက်အထားမရှိဘဲ ထည့်သွင်းထားသည်။ စက်တွင်းသုံး အလုပ်ရုံတစ်ခုအတွက်၊ ဤအလေ့အကျင့်သည် ပုံမှန်ဖြစ်သည်။ MongoDB သည် မန်မိုရီအမြောက်အမြားအသုံးပြုခြင်းကို နှစ်သက်သော Multi-user system တစ်ခုဖြစ်သောကြောင့်၊ သင်သည် ၎င်းကို ဖွံ့ဖြိုးတိုးတက်ရန်အတွက်သာ အသုံးပြုမည်ဆိုပါက ၎င်းကို တတ်နိုင်သမျှ RAM ရှိသော ဆာဗာပေါ်တွင် တင်ထားလျှင် ပိုကောင်းမည်ဖြစ်သည်။ default port မှတစ်ဆင့် ဆာဗာပေါ်တွင် ထည့်သွင်းခြင်းသည် ပြဿနာရှိနိုင်သည်၊ အထူးသဖြင့် တောင်းဆိုချက်တွင် မည်သည့် javascript ကုဒ်ကိုမဆို လုပ်ဆောင်နိုင်သည် (ဥပမာ၊ $where
စိတ်ကူးတစ်ခုအနေနဲ့
အထောက်အထားစိစစ်ခြင်းနည်းလမ်းများစွာရှိသော်လည်း အလွယ်ဆုံးမှာ အသုံးပြုသူ ID/စကားဝှက်ကို သတ်မှတ်ရန်ဖြစ်သည်။ ဖန်စီစစ်မှန်ကြောင်းကို အခြေခံ၍ ဖန်စီစစ်မှန်ကြောင်းကို သင်စဉ်းစားနေချိန်တွင် ဤစိတ်ကူးကို အသုံးပြုပါ။
သင်၏တိုက်ခိုက်မှုမျက်နှာပြင်ကို MongoDB နှင့် ချိတ်ရန်မမေ့ပါနှင့်
,
သို့မဟုတ်
. ဒေတာဖိုင်များကို ပုံမှန် MongoDB တွင် ကုဒ်ဝှက်မထားသောကြောင့် MongoDB ဖြင့် လုပ်ဆောင်ခြင်းသည် အဓိပ္ပာယ်ရှိပေသည်။
ဆားကစ်ကို တည်ဆောက်နေစဉ် အမှားအယွင်းရှိသည်။
MongoDB သည် schema ကိုမသုံးပါ။ ဒါပေမယ့် ဒီအစီအစဉ်ကို မလိုအပ်ဘူးလို့ မဆိုလိုပါဘူး။ ကိုက်ညီသောပုံစံမရှိဘဲ စာရွက်စာတမ်းများကိုသာ သိမ်းဆည်းလိုပါက ၎င်းတို့ကို သိမ်းဆည်းရန် မြန်ဆန်လွယ်ကူသော်လည်း ၎င်းတို့ကို နောက်ပိုင်းတွင် ပြန်လည်ရယူရန် ခက်ခဲနိုင်သည်။
ဂန္တဝင်ဆောင်းပါး "
အမျိုးအစားခွဲရန် မမေ့ပါနှင့်
စီစဥ်မှု အစီအစဉ်ကို မေ့လျော့ခြင်းသည် အခြားမှားယွင်းသော ဖွဲ့စည်းမှုစနစ်များထက် အချိန်ပို၍ စိတ်ပျက်စေနိုင်သည်။ မူရင်းအားဖြင့် MongoBD ကို အသုံးပြုသည်။
ကြီးမားသောစာရွက်စာတမ်းများဖြင့် စုစည်းမှုများကို ဖန်တီးပါ။
MongoDB သည် စုစည်းမှုတွင် 16MB အထိ ကြီးမားသော စာရွက်စာတမ်းများကို လက်ခံကျင်းပရန် ပျော်ရွှင်ပါသည်။
ကြီးမားသော အခင်းအကျင်းများဖြင့် စာရွက်စာတမ်းများကို ဖန်တီးခြင်း။
စာရွက်စာတမ်းများတွင် အခင်းအကျင်းများ ပါဝင်နိုင်သည်။ array အတွင်းရှိ element အရေအတွက်သည် ဂဏန်းလေးလုံးဂဏန်းနှင့် ဝေးနေပါက အကောင်းဆုံးဖြစ်သည်။ ဒြပ်စင်များကို array တစ်ခုသို့ မကြာခဏ ပေါင်းထည့်ပါက၊ ၎င်းတွင် ပါရှိသော စာရွက်စာတမ်းကို ပိုမိုကြီးထွားစေပြီး ဖြစ်ရန် လိုအပ်မည်ဖြစ်သည်။
MongoDB ဟုခေါ်သောအရာတစ်ခုရှိသည်။
array indexing မပါဘဲ သင်လုပ်နိုင်သည်ဟု သင်ထင်နိုင်သည်။ ကံမကောင်းစွာဖြင့်၊ အညွှန်းများမရှိခြင်းသည် သင့်အား အခြားပြဿနာများဖြစ်စေနိုင်သည်။ စာရွက်စာတမ်းများကို အစမှ အဆုံးစကင်န်ဖတ်ပြီးဖြစ်သောကြောင့် array ၏အဆုံးတွင် အစိတ်အပိုင်းများကိုရှာဖွေခြင်းသည် ပိုကြာမည်ဖြစ်ပြီး၊ ထိုစာရွက်စာတမ်းနှင့်ဆက်စပ်သည့် လုပ်ဆောင်မှုအများစုသည် ဖြစ်လိမ့်မည်။
စုစည်းမှုတစ်ခုရှိ အဆင့်များ၏ အစီအစဥ်သည် အရေးကြီးကြောင်း မမေ့ပါနှင့်
query optimizer ပါရှိသော ဒေတာဘေ့စ်စနစ်တွင်၊ သင်ရေးသော queries များသည် သင်ရယူလိုသောအရာကို မည်သို့ရယူရမည်ကိုမဟုတ်ဘဲ ရှင်းလင်းချက်ဖြစ်သည်။ ဤယန္တရားသည် စားသောက်ဆိုင်တွင် မှာယူခြင်းနှင့် ယှဉ်တွဲလုပ်ဆောင်သည်- အများအားဖြင့် သင်သည် ဟင်းတစ်မျိုးကို ရိုးရှင်းစွာ မှာယူလေ့ရှိပြီး ချက်ပြုတ်သူအား အသေးစိတ် ညွှန်ကြားချက်များ မပေးတတ်ပါ။
MongoDB တွင် သင်သည် ထမင်းချက်သူကို ညွှန်ကြားသည်။ ဥပမာအားဖြင့်၊ သင်သည်ဒေတာဖြတ်သန်းကြောင်းသေချာစေရန်လိုအပ်သည်။ reduce
ပိုက်လိုင်းကို တတ်နိုင်သမျှ စောစော သုံးပြီး $match
и $project
ပြီးမှသာလျှင် အမျိုးအစားခွဲသည်။ reduce
နှင့် ရှာဖွေမှုသည် သင်အလိုရှိသည့်အတိုင်း အတိအကျဖြစ်သွားသည်။ မလိုအပ်သောအလုပ်များကို ဖယ်ရှားပေးသော၊ အဆင့်များကို စဉ်ဆက်မပြတ်ပြုလုပ်ပေးသော၊ နှင့် Join အမျိုးအစားများကို ရွေးချယ်ထားသော အမျိုးအစားများကို ရွေးချယ်ထားသော မလိုအပ်သောအလုပ်များကို ဖယ်ရှားပေးမည့် query optimizer တစ်ခုရှိခြင်းက သင့်ကို ထိခိုက်စေနိုင်ပါသည်။ MongoDB ဖြင့်၊ အဆင်ပြေသောကုန်ကျစရိတ်ဖြင့် သင်ပိုမိုထိန်းချုပ်နိုင်သည်။
တူရိယာများ
Quick Recording ကို အသုံးပြုခြင်း။
MongoDB တွင် မြန်နှုန်းမြင့်သော်လည်း ယုံကြည်စိတ်ချရမှုနည်းစေရန် MongoDB ရေးရန်ရွေးချယ်မှုများကို ဘယ်တော့မှ မသတ်မှတ်ပါ။ ဒီမုဒ် "ဖိုင်နဲ့-မေ့" စာမရေးခင်မှာ command က မြန်နေပုံရတယ်။ ဒေတာကို ဒစ်ခ်သို့မရေးမီ စနစ်ပျက်သွားပါက၊ ၎င်းသည် ပျောက်ဆုံးသွားပြီး မကိုက်ညီသည့် အခြေအနေတွင် အဆုံးသတ်သွားမည်ဖြစ်သည်။ ကံကောင်းစွာဖြင့်၊ 64-bit MongoDB တွင် မှတ်တမ်းဖွင့်ထားသည်။
MMAPv1 နှင့် WiredTiger သိုလှောင်မှုအင်ဂျင်များသည် WiredTiger သည် နောက်ဆုံးတစ်သမတ်တည်းသို့ ပြန်လည်ရောက်ရှိနိုင်သော်လည်း ၎င်းကိုကာကွယ်ရန် မှတ်တမ်းကိုအသုံးပြုသည်။
Journaling သည် ပြန်လည်ရယူပြီးနောက် ဒေတာဘေ့စ်သည် တသမတ်တည်းဖြစ်နေကြောင်း သေချာစေပြီး ၎င်းကို မှတ်တမ်းသို့မရေးမချင်း ဒေတာအားလုံးကို ထိန်းသိမ်းထားသည်။ မှတ်တမ်းတင်ခြင်း၏ ကြိမ်နှုန်းကို ကန့်သတ်ဘောင်ကို အသုံးပြု၍ စီစဉ်သတ်မှတ်ထားသည်။
.
ထည့်သွင်းမှုများကို သေချာစေရန်၊ configuration file တွင် loggging ကိုဖွင့်ထားကြောင်း သေချာပါစေ။
နှင့် အသံသွင်းသည့်အကြိမ်ရေသည် သင်ဆုံးရှုံးနိုင်သော အချက်အလက်ပမာဏနှင့် ကိုက်ညီပါသည်။
အညွှန်းမပါဘဲ စီခြင်း
ရှာဖွေခြင်းနှင့် ပေါင်းစည်းသောအခါတွင် ဒေတာကို စီရန် လိုအပ်သည်။ ဒေတာပမာဏကို လျှော့ချရန်အတွက် ရလဒ်ကို စစ်ထုတ်ပြီးနောက် ၎င်းကို နောက်ဆုံးအဆင့်များထဲမှ တစ်ခုပြီးမြောက်စေရန် မျှော်လင့်ကြပါစို့။ ဤကိစ္စတွင်ပင်၊ အမျိုးအစားခွဲရန်သင်လိုအပ်လိမ့်မည်။
သင့်လျော်သောအညွှန်းမရှိပါက MongoDB သည် ၎င်းမပါဘဲလုပ်ဆောင်လိမ့်မည်။ စာရွက်စာတမ်းအားလုံး၏ စုစုပေါင်းအရွယ်အစားတွင် မမ်မိုရီကန့်သတ်ချက် 32 MB ရှိသည်။
အညွှန်းပံ့ပိုးမှုမပါဘဲရှာပါ။
ရှာဖွေမှုမေးခွန်းများသည် SQL ရှိ JOIN လုပ်ဆောင်ချက်နှင့် ဆင်တူသည့် လုပ်ဆောင်ချက်ကို လုပ်ဆောင်သည်။ အကောင်းဆုံးလုပ်ဆောင်ရန်၊ နိုင်ငံခြားသော့အဖြစ်အသုံးပြုသောကီး၏တန်ဖိုးအညွှန်းကိန်းလိုအပ်သည်။ အသုံးပြုမှုတွင် ထင်ဟပ်ခြင်းမရှိသောကြောင့် ယင်းသည် ထင်ရှားခြင်းမရှိပါ။ explain()
. ထိုသို့သော အညွှန်းများသည် ရေးထားသော အညွှန်းများအပြင်၊ explain()
ပိုက်လိုင်းအော်ပရေတာများမှအသုံးပြုသည်။ $match
и $sort
ပိုက်လိုင်းရဲ့အစမှာဆုံမိရင်၊ အညွှန်းများသည် မည်သည့်အဆင့်ကိုမဆို လွှမ်းခြုံနိုင်ပါပြီ။
အပ်ဒိတ်များစွာကို အသုံးပြုခြင်းမှ ဖယ်ထုတ်ခြင်း
နည်းလမ်း
သင်သတ်မှတ်ထားသော ကန့်သတ်ဘောင်အပေါ်မူတည်၍ ရှိပြီးသားစာရွက်စာတမ်းတစ်ခု သို့မဟုတ် စာရွက်စာတမ်းတစ်ခုလုံးကို ပြီးပြည့်စုံသော အစားထိုးမှုအထိ ပြောင်းလဲရန် အသုံးပြုသည်။
. ရွေးချယ်ခွင့်ကို သင်မသတ်မှတ်ထားပါက စုစည်းမှုအတွင်းရှိ စာရွက်စာတမ်းအားလုံးကို ရှင်းရှင်းလင်းလင်းမသိသာသောအရာဖြစ်သည်။
တောင်းဆိုချက်သတ်မှတ်ချက်များနှင့် ကိုက်ညီသော စာရွက်စာတမ်းအားလုံးကို အပ်ဒိတ်လုပ်ရန်။
hash table ရှိ သော့များ၏ အစီအစဥ်၏ အရေးကြီးပုံကို မမေ့ပါနှင့်
JSON တွင်၊ အရာဝတ္ထုတစ်ခုတွင် အမည်သည် string တစ်ခုဖြစ်ပြီး တန်ဖိုးသည် string၊ နံပါတ်၊ boolean၊ null၊ object သို့မဟုတ် array ဖြစ်သည်။
ကံမကောင်းစွာပဲ၊ BSON သည် ရှာဖွေသည့်အခါ အမှာစာအပေါ် အလေးပေးသည်။ MongoDB တွင်၊ built-in အရာဝတ္ထုများအတွင်းရှိသော့များ၏အစီအစဥ် { firstname: "Phil", surname: "factor" }
- ဒါက မတူပါဘူး။ { { surname: "factor", firstname: "Phil" }
. ဆိုလိုသည်မှာ၊ သင်သည် ၎င်းတို့ကို ရှာတွေ့ရန် သေချာလိုပါက သင်၏စာရွက်စာတမ်းများတွင် အမည်/တန်ဖိုးအတွဲများ၏ အစီအစဥ်ကို သိမ်းဆည်းထားရပါမည်။
မရောထွေးပါနဲ့။ "အလွတ်" и "သတ်မှတ်မထားဘူး"
အဘိုး "သတ်မှတ်မထားဘူး" အဆိုအရ JSON တွင် ဘယ်တော့မှ တရားဝင်မည်မဟုတ်ပါ။ $null
အမြဲတမ်း ကောင်းမွန်တဲ့ အဖြေတစ်ခုတော့ မဟုတ်ပါဘူး။
၏အသုံးပြုမှု $limit()
မပါဘဲ $sort()
သင် MongoDB တွင် မကြာခဏ တီထွင်နေသည့်အခါ၊ query သို့မဟုတ် စုစည်းမှုမှ ပြန်ပေးမည့် ရလဒ်နမူနာကို မြင်ရုံဖြင့် အသုံးဝင်ပါသည်။ ဤတာဝန်အတွက်သင်လိုအပ်လိမ့်မည်။ $limit()
ဒါပေမယ့် သင်အရင်က အသုံးမပြုရင် နောက်ဆုံးကုဒ်ထဲမှာ ဘယ်တော့မှ မဖြစ်သင့်ပါဘူး။ $sort
. မဟုတ်ပါက သင်သည် ရလဒ်၏အစီအစဥ်ကို အာမမခံနိုင်သောကြောင့် ဤစက်ပြင်ရန် လိုအပ်ပြီး ဒေတာကို စိတ်ချယုံကြည်စွာ ကြည့်ရှုနိုင်မည်မဟုတ်ပါ။ ရလဒ်၏ထိပ်တွင် အမျိုးအစားခွဲမှုပေါ်မူတည်၍ မတူညီသော entry များကို သင်ရရှိမည်ဖြစ်သည်။ ယုံကြည်စိတ်ချစွာ လုပ်ဆောင်နိုင်ရန်၊ မေးမြန်းမှုများနှင့် စုစည်းမှုများကို အဆုံးအဖြတ်ပေးရမည်၊ ဆိုလိုသည်မှာ ၎င်းတို့ကို လုပ်ဆောင်သည့်အခါတိုင်း တူညီသောရလဒ်များကို ထုတ်ပေးပါသည်။ ပါဝင်သောကုဒ် $limit()
ဒါပေမယ့် မဟုတ်ဘူး။ $sort
၊ အဆုံးအဖြတ်ပေးမည်မဟုတ်သည့်အပြင် ခြေရာခံရန်ခက်ခဲမည့် အမှားအယွင်းများကို နောက်ဆက်တွဲဖြစ်စေနိုင်သည်။
ကောက်ချက်
MongoDB ကို စိတ်ပျက်စေမည့် တစ်ခုတည်းသောနည်းလမ်းမှာ ၎င်းကို DBMS ကဲ့သို့သော အခြားဒေတာဘေ့စ်အမျိုးအစားနှင့် တိုက်ရိုက်နှိုင်းယှဉ်ရန် သို့မဟုတ် အချို့သောမျှော်လင့်ချက်များအပေါ်အခြေခံ၍ ၎င်းကိုအသုံးပြုလာရန်ဖြစ်သည်။ လိမ္မော်သီးကို ခက်ရင်းခွတစ်ခုနှင့် နှိုင်းယှဉ်ရသလိုပင်။ ဒေတာဘေ့စ်စနစ်များသည် သီးခြားရည်ရွယ်ချက်များကို ဆောင်ရွက်ပေးသည်။ ဤကွဲပြားမှုများကို သင်ကိုယ်တိုင် နားလည်သဘောပေါက်ပြီး တန်ဖိုးထားခြင်းသည် အကောင်းဆုံးဖြစ်သည်။ MongoDB developer များအား DBMS လမ်းကြောင်းကို တွန်းပို့သောလမ်းကြောင်းတစ်ခုမှ ဖိအားပေးခြင်းသည် ရှက်စရာဖြစ်လိမ့်မည်။ ဒေတာခိုင်မာမှုရှိစေရန်နှင့် ချို့ယွင်းမှုနှင့် အန္တရာယ်ရှိသော တိုက်ခိုက်မှုများကို ခံနိုင်ရည်ရှိသော ဒေတာစနစ်များ ဖန်တီးခြင်းကဲ့သို့သော ပြဿနာဟောင်းများကို ဖြေရှင်းရန် စိတ်ဝင်စားစရာကောင်းသော နည်းလမ်းအသစ်များကို ကျွန်ုပ်မြင်လိုပါသည်။
MongoDB ၏ ဗားရှင်း 4.0 တွင် ACID အရောင်းအ၀ယ်လုပ်ဆောင်နိုင်မှုကို မိတ်ဆက်ခြင်းသည် အရေးကြီးသောတိုးတက်မှုများကို ဆန်းသစ်သောနည်းလမ်းဖြင့် မိတ်ဆက်ခြင်း၏ နမူနာကောင်းတစ်ခုဖြစ်သည်။ စာရွက်စာတမ်းပေါင်းစုံနှင့် ကြေညာချက်ပေါင်းများစွာ အရောင်းအ၀ယ်များသည် ယခုအခါ အနုမြူဗုံးဖြစ်သည်။ သော့ခလောက်များရယူရန် လိုအပ်သည့်အချိန်ကို ချိန်ညှိနိုင်ပြီး ပိတ်နေသော အရောင်းအ၀ယ်များကို ရပ်စဲနိုင်သည့်အပြင် သီးခြားခွဲထားမှုအဆင့်ကို ပြောင်းလဲနိုင်သည်။
ပိုပြီးဖတ်ပါ:
source: www.habr.com