Izinto ezili-14 endinqwenela ukuba bendizazi ngaphambi kokuba ndiqalise ngeMongoDB

Ukuguqulelwa kwenqaku kwalungiselelwa kwangaphambi kokuqalisa kwekhosi "Ugcino-lwazi olunganxulumenanga".

Izinto ezili-14 endinqwenela ukuba bendizazi ngaphambi kokuba ndiqalise ngeMongoDB

Amagqabantshintshi:

  • Kubaluleke kakhulu ukuphuhlisa i-schema nangona ikhethwa kwi-MongoDB.
  • Ngokunjalo, izalathisi kufuneka zihambelane neschema sakho kunye neepateni zokufikelela.
  • Kuphephe ukusebenzisa izinto ezinkulu kunye noluhlu olukhulu.
  • Lumka ngoseto lweMongoDB, ngakumbi xa kufikwa kukhuseleko kunye nokuthembeka.
  • IMongoDB ayinaso isilungisi sokubuza, ke kufuneka ulumke xa usenza imisebenzi yokubuza.

Kudala ndisebenza ngogcino lwedatha, kodwa kutsha nje ndifumene iMongoDB. Kukho izinto ezimbalwa endinqwenela ukuba ndazi ngaphambi kokuba ndiqalise ukusebenza nazo. Xa umntu sele enamava kwinkalo ethile, baye bacingelwa kwangaphambili malunga nokuba zeziphi ii-database kunye nento abayenzayo. Ngethemba lokwenza kube lula kwabanye ukuqonda, ndibonisa uluhlu lweempazamo eziqhelekileyo.

Ukwenza iseva ye-MongoDB ngaphandle koqinisekiso

Ngelishwa, i-MongoDB ifakwe ngaphandle kokuqinisekiswa ngokungagqibekanga. Kwindawo yokusebenzela ekufikelelwa kuyo ekuhlaleni, oku kuqhelekile. Kodwa ekubeni i-MongoDB yinkqubo yabasebenzisi abaninzi ethanda ukusebenzisa inani elikhulu lememori, kuya kuba ngcono ukuba uyibeka kumncedisi kunye ne-RAM eninzi kangangoko kunokwenzeka, nokuba uya kuyisebenzisela uphuhliso kuphela. Ukufaka kumncedisi ngezibuko elingagqibekanga kunokuba yingxaki, ngakumbi ukuba nayiphi na ikhowudi yejavascript inokuphunyezwa kwisicelo (umzekelo, $where njengombono we isitofu).

Kukho iindlela ezininzi zokuqinisekisa, kodwa eyona ilula kukuseta i-ID/password yomsebenzisi. Sebenzisa olu luvo ngelixa ucinga malunga nongqinisiso olusekwe kwi I-LDAP. Xa kuziwa kukhuseleko, i-MongoDB kufuneka ihlaziywe rhoqo, kwaye iilogi kufuneka zihlale zikhangelwa ukufikelela okungagunyaziswanga. Umzekelo, ndithanda ukukhetha izibuko elahlukileyo njengezibuko elingagqibekanga.

Ungalibali ukubophelela indawo yohlaselo kwiMongoDB

Uluhlu loKhuseleko lwe-MongoDB iqulethe iingcebiso ezilungileyo zokunciphisa umngcipheko wokungena kwenethiwekhi kunye nokuvuza kwedatha. Kulula ukuyixubha kwaye uthi iseva yophuhliso ayifuni umgangatho ophezulu wokhuseleko. Nangona kunjalo, akukho lula kwaye oku kusebenza kuzo zonke iiseva zeMongoDB. Ngokukodwa, ukuba akukho sizathu sinyanzelekileyo sokusebenzisa mapReduce, group okanye $apho, kufuneka ukhubaze ukusetyenziswa kwekhowudi engenasizathu kwiJavaScript ngokubhala kwifayile yoqwalaselo. javascriptEnabled:false. Kuba iifayile zedatha azikhutshelwanga kwiMongoDB eqhelekileyo, iyavakala ukuqhuba iMongoDB nayo Umsebenzisi ozinikeleyo, enofikelelo olupheleleyo kwiifayile, kunye nokufikelela okulinganiselweyo kuyo kuphela kunye nokukwazi ukusebenzisa indlela yokusebenza yolawulo lofikelelo lwefayile.

Impazamo ngelixa uphuhlisa isekethe

I-MongoDB ayisebenzisi i-schema. Kodwa oku akuthethi ukuba inkqubo ayidingeki. Ukuba ufuna nje ukugcina amaxwebhu ngaphandle kwepatheni engaguqukiyo, ukuwagcina kunokukhawuleza kwaye kulula, kodwa ukuwabuyisela kamva kunokuba nzima. kunzima kakhulu.

Inqaku lakudala "Imithetho emi-6 yoThupha kuYilo lweSikimu seMongoDB" Kufanelekile ukufundwa, kunye neempawu ezifana Umhloli weSchema kwisixhobo se-third party Studio 3T, kuyafaneleka ukusetyenzwa rhoqo kwiisekethe.

Ungalibali uhlobo lweodolo

Ukulibala ukuhlelwa kocwangco kunokubangela ukuphazamiseka okungaphezulu kwaye kuchithe ixesha elininzi kunalo naluphi na olunye ulungelelwaniso olungachanekanga. Ngokungagqibekanga iMongoBD isebenzisa uhlobo lokubini. Kodwa akunakwenzeka ukuba ibe luncedo nakubani na. Iimeko ezingevayo, i-accent-sensitive, iindidi zokubini ziye zajongwa njenge-anachronism enomdla kunye namaso, ii-caftan kunye namadevu ajijekileyo emva kwiminyaka yama-80s kwinkulungwane edlulileyo. Ngoku ukusetyenziswa kwabo akunakuxolelwa. Kubomi bokwenene, "isithuthuthu" siyafana ne "Motorcycle". Kwaye "iBritani" kunye ne "Britane" yindawo enye. Unobumba omncinci ngonobumba abakhulu balingana nonobumba omkhulu. Kwaye ungandiqalisi ekuhleleni amagama. Xa usenza isiseko sedatha kwi-MongoDB, sebenzisa i-accent-insensitive collation kunye bhalisa, ezihambelana nolwimi kunye inkcubeko yomsebenzisi wenkqubo. Oku kuya kwenza ukukhangela ngaphaya kwedatha yomtya lula kakhulu.

Yenza ingqokelela ngamaxwebhu amakhulu

I-MongoDB iyavuya ukubamba amaxwebhu amakhulu ukuya kuthi ga kwi-16MB kwiingqokelela, kunye GridFS Yenzelwe amaxwebhu amakhulu angaphezu kwe-16 MB. Kodwa ngenxa yokuba amaxwebhu amakhulu anokubekwa apho, ukuwagcina apho akulombono ulungileyo. I-MongoDB iyakusebenza ngcono ukuba ugcina amaxwebhu ngamanye aneekhilobhayithi ezimbalwa ngobukhulu, uwaphatha njengemigca kwitafile ebanzi yeSQL. Amaxwebhu amakhulu aya kuba ngumthombo weengxaki nge imveliso.

Ukudala amaxwebhu anemigangatho emikhulu

Amaxwebhu anokuqulatha uluhlu. Kungcono ukuba inani lee-elementi kuluhlu likude kwinani elinamanani amane. Ukuba iziqalelo zongezwa kuluhlu rhoqo, izakukhuba ngaphandle koxwebhu oluyiqulathileyo kwaye kuyakufuneka ibe njalo shukuma, oku kuthetha ukuba kuya kufuneka hlaziya izalathisi kakhulu. Xa uphinda usalathisa uxwebhu ngoluhlu olukhulu, izalathisi ziya kubhalwa rhoqo, kuba kukho irekhodi, egcina isalathisi sayo. Olu phawu kwakhona lwenzeka xa uxwebhu lufakwe okanye lucinyiwe.

I-MongoDB inento ebizwa ngokuba yi "gcwalisa into", enika indawo yokuba amaxwebhu akhule ukunciphisa le ngxaki.
Unokucinga ukuba ungenza ngaphandle koluhlu lwesalathiso. Ngelishwa, ukunqongophala kwezalathisi kunokubangela ukuba ube nezinye iingxaki. Kuba amaxwebhu askeniwe ukusuka ekuqaleni ukuya ekugqibeleni, ukukhangela imiba ekupheleni koluhlu kuyakuthatha ixesha elide, kwaye uninzi lwemisebenzi eyayanyaniswa noxwebhu olunjalo iya kuba kade.

Musa ukulibala ukuba ulandelelwano lwezigaba kwi-aggregation ibalulekile

Kwinkqubo yogcino-lwazi ene-query optimizer, imibuzo oyibhalayo ziingcaciso zento ofuna ukuyifumana, hayi indlela yokuyifumana. Lo matshini usebenza ngokufaniswa nokuodola kwindawo yokutyela: uhlala u-odola isitya, kwaye unganikeli miyalelo ineenkcukacha kumpheki.

KwiMongoDB, uyala umpheki. Umzekelo, kufuneka uqinisekise ukuba idatha iyadlula reduce kwangoko kangangoko kunokwenzeka kwimibhobho usebenzisa $match ΠΈ $project, kwaye ukuhlelwa kwenzeka kuphela emva koko reduce, kwaye uphendlo lwenzeka kanye ngendlela oyifunayo. Ukuba nesixhobo sokulungisa imibuzo esisusa umsebenzi ongeyomfuneko, ulandelelwano lwamanyathelo ngokufanelekileyo, kwaye ukhethe iintlobo zokujoyina kunokukonakalisa. NgeMongoDB, unolawulo oluthe kratya kwiindleko zoncedo.

Izixhobo ezifana Isitudiyo 3T iyakwenza lula ulwakhiwo lwemibuzo yokuhlanganiswa MongoDB. Inqaku loMhleli weAggregation likuvumela ukuba usebenzise iingxelo zemibhobho kwinqanaba elinye ngexesha, kwaye uhlole igalelo kunye nedatha yemveliso kwinqanaba ngalinye ukwenza lula ukulungisa ingxaki.

Ukusebenzisa ukuRekhoda ngokukhawuleza

Ungaze usete iinketho zokubhala zeMongoDB ukuba ube nesantya esiphezulu kodwa ukuthembeka okuphantsi. Le mowudi "ifayile kwaye ulibale" ibonakala ikhawuleza kuba umyalelo ubuyiselwa phambi kokuba kubhalwe. Ukuba inkqubo iphahlazeka ngaphambi kokuba idatha ibhalwe kwidisk, iya kulahleka kwaye iphele kwisimo esingahambelaniyo. Ngethamsanqa, i-64-bit ye-MongoDB ivuleleke.

I-MMAPv1 kunye neenjini zokugcina ze-WiredTiger zisebenzisa ukugawulwa kwemithi ukukhusela oku, nangona i-WiredTiger inokubuyisela ekugqibeleni indawo yokulawula, ukuba ukuloga kuvaliwe.

Ukubhalwa kwengxelo kuqinisekisa ukuba i-database ikwimeko ehambelanayo emva kokubuyisela kwaye igcina yonke idatha ide ibhalwe kwilogi. Ubuninzi bokurekhoda buqwalaselwe kusetyenziswa iparameter commitIntervalMs.

Ukuqinisekisa ngongeniso, qiniseka ukuba ukuloga kuvuliwe kwifayile yoqwalaselo (storage.journal.enabled), kunye nezihlandlo zokurekhoda zihambelana nesixa solwazi onokuthi ukwazi ukuphulukana nalo.

Ukuhlela ngaphandle kwesalathiso

Xa kukhangelwa kwaye kuhlanganiswe, kuhlala kukho imfuneko yokuhlela idatha. Masithembe ukuba oku kwenziwa kwelinye lamanqanaba okugqibela, emva kokucoca isiphumo ukuze kuncitshiswe inani ledatha ehlelwayo. Kwaye nakulo mzekelo, ukuze uhlele uya kufuna Isalathiso. Ungasebenzisa isalathisi esinye okanye esihlanganisiweyo.

Ukuba akukho salathiso sifanelekileyo, iMongoDB iya kwenza ngaphandle kwayo. Kukho umda wememori we-32 MB kubungakanani bubonke bawo onke amaxwebhu aku imisebenzi yokuhlela, kwaye ukuba iMongoDB ifikelela kulo mda, ngoko iyakuphosa imposiso okanye ibuyise isethi yerekhodi engenanto.

Khangela ngaphandle kwenkxaso yesalathisi

Imibuzo yokukhangela yenza umsebenzi ofana ne-JOIN kwi-SQL. Ukuze basebenze kakuhle, badinga isalathisi sexabiso lesitshixo esisetyenziswe njengeqhosha langaphandle. Oku akubonakali kuba ukusetyenziswa akubonakali explain(). Ezo zalathi zongezelelwe kwisalathiso esibhaliweyo explain(), leyo yona isetyenziswa ngabaqhubi bemibhobho $match ΠΈ $sort, xa bedibana ekuqaleni kombhobho. Izalathisi ngoku zinokugubungela naliphi na inqanaba umbhobho wokuhlanganisa.

Ukuphuma ekusebenziseni uhlaziyo oluninzi

Indlela db.collection.update() isetyenziselwa ukutshintsha indawo yoxwebhu olukhoyo okanye uxwebhu lonke, ukuya kutshintsho olupheleleyo, kuxhomekeke kwiparameter oyikhankanyayo update. Into engacacanga kangako kukuba ayizukuqhubekeka onke amaxwebhu kwingqokelela ngaphandle kokuba usete ukhetho multi ukuhlaziya onke amaxwebhu ahlangabezana nemigaqo yesicelo.

Musa ukulibala ukubaluleka komyalelo wezitshixo kwitafile ye-hash

Kwi-JSON, into iqulathe ingqokelela engacwangciswanga yobungakanani bero okanye ngaphezulu igama/ixabiso lezibini, apho igama lingumtya kwaye ixabiso lingumtya, inani, boolean, null, into, okanye uluhlu.

Ngelishwa, i-BSON ibeka ugxininiso oluninzi kwi-odolo xa ukhangela. Kwi-MongoDB, ukulandelelana kwezitshixo ngaphakathi kwezinto ezakhelwe ngaphakathi imicimbi, o.k. { firstname: "Phil", surname: "factor" } - oku akufani { { surname: "factor", firstname: "Phil" }. Oko kukuthi, kufuneka ugcine ulandelelwano lwamagama/ixabiso lezibini kumaxwebhu akho ukuba ufuna ukuqiniseka ngokuwafumana.

Musa ukubhideka "Null" ΠΈ "engachazwanga"

Nentsingiselo "engachazwanga" ayizange isebenze e-JSON, ngokutsho umgangatho osemthethweni I-JSON (ECMA-404 iCandelo 5), nangona isetyenziswe kwiJavaScript. Ngaphezu koko, kwi-BSON ayisebenzi kwaye iguqulelwa kuyo $null, engasoloko isisisombululo esihle. Kuphephe ukusebenzisa "engachazwanga" kwiMongoDB.

Sebenzisa $limit() ngaphandle $sort()

Rhoqo xa uphuhlisa kwi-MongoDB, kuluncedo ukubona nje isampulu yesiphumo esiya kubuyiswa kumbuzo okanye udityaniso. Kulo msebenzi uya kuwufuna $limit(), kodwa akufunekanga ibe kwikhowudi yokugqibela ngaphandle kokuba uyisebenzise ngaphambili $sort. Lo matshini uyimfuneko kuba kungenjalo awukwazi ukuqinisekisa ukulandelelana kwesiphumo, kwaye awuyi kukwazi ukujonga ngokuthembekileyo idatha. Phezulu kwesiphumo uya kufumana amangeno ahlukeneyo ngokuxhomekeke ekuhleleni. Ukusebenza ngokuthembekileyo, imibuzo kunye nokudityaniswa kufuneka kumiselwe, oko kukuthi, kuvelise iziphumo ezifanayo ngalo lonke ixesha zisenziwa. Ikhowudi equlathe $limit(), kodwa hayi $sort, ayiyi kuba yi-deterministic kwaye inokubangela iimpazamo ekuya kuba nzima ukuzilandelela.

isiphelo

Indlela yodwa yokuphoxeka nge-MongoDB kukuthelekisa ngokuthe ngqo nolunye uhlobo lwedatha, njenge-DBMS, okanye ukuza kuyisebenzisa ngokusekelwe kwizinto ezilindelekileyo. Kufana nokuthelekisa iorenji nefolokhwe. Iinkqubo zedathabheyisi zisebenzela iinjongo ezithile. Kungcono ukuba uqonde kwaye uqonde lo mahluko ngokwakho. Kuya kuba lihlazo ukucinezela abaphuhlisi be-MongoDB phezu kwendlela eyabanyanzelela phantsi kwendlela ye-DBMS. Ndifuna ukubona iindlela ezintsha nezinomdla zokusombulula iingxaki ezindala, ezinjengokuqinisekisa ukuthembeka kwedatha kunye nokudala iinkqubo zedatha ezikwaziyo ukumelana nokungaphumeleli kunye nokuhlaselwa okukhohlakeleyo.

Intshayelelo ye-MongoDB ye-ACID transactionality kwinguqulelo 4.0 ngumzekelo omhle wokwazisa uphuculo olubalulekileyo ngendlela entsha. Amaxwebhu amaninzi kunye neentengiselwano ezininzi ngoku zi-atomic. Kwakhona kunokwenzeka ukulungelelanisa ixesha elifunekayo lokufumana izitshixo kunye nokuphelisa ukuthengiselana okuxinyiweyo, kunye nokutshintsha inqanaba lokuzihlukanisa.

Izinto ezili-14 endinqwenela ukuba bendizazi ngaphambi kokuba ndiqalise ngeMongoDB

Funda ngokugqithisileyo:

umthombo: www.habr.com

Yongeza izimvo