Izinto eziyi-14 engifisa ukuzazi ngaphambi kokuthi ngiqale nge-MongoDB

Ukuhunyushwa kwesihloko kwalungiselelwa ngobusuku bangaphambi kokuqala kwesifundo "Imininingwane egciniwe engahlobene".

Izinto eziyi-14 engifisa ukuzazi ngaphambi kokuthi ngiqale nge-MongoDB

Amaphuzu avelele:

  • Kubaluleke kakhulu ukwakha i-schema nakuba kuyinketho ku-MongoDB.
  • Ngokufanayo, izinkomba kufanele zifane ne-schema yakho kanye namaphethini okufinyelela.
  • Gwema ukusebenzisa izinto ezinkulu kanye namalungu afanayo amakhulu.
  • Qaphela ngezilungiselelo ze-MongoDB, ikakhulukazi uma kuziwa ekuvikelekeni nasekuthembekeni.
  • I-MongoDB ayinaso isilungiseleli semibuzo, ngakho-ke kufanele uqaphele lapho wenza imisebenzi yokubuza.

Bengisebenza nedathabhethi isikhathi eside kakhulu, kodwa ngisanda kuthola i-MongoDB. Kunezinto ezimbalwa engifisa ukuzazi ngaphambi kokuthi ngiqale ukusebenza ngayo. Uma umuntu esevele enolwazi emkhakheni othile, unemibono ecatshangelwe ngaphambilini mayelana nokuthi iyini imininingwane yolwazi nokuthi benzani. Ngethemba lokwenza kube lula kwabanye ukuqonda, ngethula uhlu lwamaphutha avamile.

Ukudala iseva ye-MongoDB ngaphandle kokuqinisekisa

Ngeshwa, i-MongoDB ifakwe ngaphandle kokuqinisekisa ngokuzenzakalelayo. Kundawo yokusebenza efinyelelwa endaweni, lokhu kujwayelekile kujwayelekile. Kodwa njengoba i-MongoDB iyisistimu yabasebenzisi abaningi ethanda ukusebenzisa inani elikhulu lememori, kuzoba ngcono uma uyibeka kuseva ene-RAM eningi ngangokunokwenzeka, noma ngabe uzoyisebenzisela ukuthuthukisa kuphela. Ukufaka kuseva ngembobo ezenzakalelayo kungaba yinkinga, ikakhulukazi uma noma iyiphi ikhodi ye-javascript ingenziwa esicelweni (isibonelo, $where njengombono we imijovo).

Kunezindlela ezimbalwa zokuqinisekisa, kodwa okulula kakhulu ukusetha i-ID/iphasiwedi yomsebenzisi. Sebenzisa lo mbono ngenkathi ucabanga ngokufakazela ubuqiniso okumangalisayo okusekelwe kukho I-LDAP. Uma kuziwa kwezokuvikela, i-MongoDB kufanele ivuselelwe njalo, futhi amalogi kufanele ahlale ebhekwa ukuze afinyelele okungagunyaziwe. Isibonelo, ngithanda ukukhetha imbobo ehlukile njengembobo ezenzakalelayo.

Ungakhohlwa ukubopha indawo yokuhlasela ku-MongoDB

Uhlu Lokuhlola Lokuphepha lwe-MongoDB iqukethe amathiphu amahle okunciphisa ubungozi bokungena kwenethiwekhi nokuvuza kwedatha. Kulula ukuyisusa bese uthi iseva yokuthuthukisa ayidingi izinga eliphezulu lokuphepha. Nokho, akulula kangako futhi lokhu kusebenza kuwo wonke amaseva e-MongoDB. Ikakhulukazi, uma kungekho sizathu esinamandla sokusebenzisa mapReduce, group noma $lapho, udinga ukukhubaza ukusetshenziswa kwekhodi engafanele ku-JavaScript ngokubhala efayeleni lokumisa javascriptEnabled:false. Njengoba amafayela wedatha engabethelwe ku-MongoDB evamile, kunengqondo ukusebenzisa i-MongoDB ngayo Umsebenzisi Ozinikele, enokufinyelela okugcwele kumafayela, anokufinyelela okulinganiselwe kuwo kuphela kanye nekhono lokusebenzisa izilawuli zokufinyelela ifayela zesistimu yokusebenza ngokwayo.

Iphutha ngenkathi kuthuthukiswa isekethe

I-MongoDB ayisebenzisi i-schema. Kodwa lokhu akusho ukuthi uhlelo aludingeki. Uma nje ufuna ukugcina amadokhumenti ngaphandle kwanoma iyiphi iphethini engaguquki, ukuwagcina kungashesha futhi kube lula, kodwa ukuwabuyisela kamuva kungase kube nzima. kunzima kakhulu.

Isihloko sakudala "6 Imithetho Yesithupha ye-MongoDB Schema Design" Kuyafaneleka ukufundwa, kanye nezici ezifana I-Schema Explorer kuthuluzi lomuntu wesithathu i-Studio 3T, kufanelekile ukusetshenziselwa ukuhlola okujwayelekile kwamasekhethi.

Ungakhohlwa ukuhleleka kohlu

Ukukhohlwa ukuhleleka kokuhlelwa kungabangela ukukhungatheka okuningi futhi kumoshe isikhathi esiningi kunanoma ikuphi okunye ukucushwa okungalungile. Ngokuzenzakalelayo i-MongoBD isebenzisa uhlobo kanambambili. Kodwa akunakwenzeka ukuba wusizo kunoma ubani. Izinhlobo ezizwelayo, ezizwela iphimbo, izinhlobo kanambambili bezibhekwa njengama-anachronism anelukuluku kanye nobuhlalu, ama-caftan namadevu asontekile emuva kuma-80s wekhulunyaka eledlule. Manje ukusetshenziswa kwabo akuthetheleleki. Empilweni yangempela, "isithuthuthu" siyefana "nesithuthuthu". Futhi “iBrithani” kanye “neBrithani” yindawo efanayo. Uhlamvu oluncane luwusonhlamvukazi olingana nosonhlamvukazi. Futhi ungangiqalisi ekuhlungeni amagama. Lapho udala isizindalwazi ku-MongoDB, sebenzisa i-accent-insensitive collation kanye bhalisa, ezihambisana nolimi kanye isiko lomsebenzisi wesistimu. Lokhu kuzokwenza ukusesha ngedatha yeyunithi yezinhlamvu kube lula kakhulu.

Dala amaqoqo ngamadokhumenti amakhulu

I-MongoDB iyakujabulela ukusingatha amadokhumenti amakhulu afika ku-16MB kumaqoqo, futhi I-GridFS Idizayinelwe amadokhumenti amakhulu angaphezu kuka-16 MB. Kodwa ngenxa yokuthi imibhalo emikhulu ingabekwa lapho, ukuyigcina lapho akuwona umqondo omuhle. I-MongoDB izosebenza kahle kakhulu uma ugcina amadokhumenti angawodwana angamakhilobhayithi ambalwa ngosayizi, uwaphathe njengemigqa kuthebula le-SQL elibanzi. Amadokhumenti amakhulu azoba umthombo wezinkinga nge ukukhiqiza.

Ukudala amadokhumenti anamalungu afanayo amakhulu

Amadokhumenti angaqukatha amalungu afanayo. Kungcono uma inani lezakhi ohlwini likude nenombolo enezinombolo ezine. Uma ama-elementi engezwa kulungu elifanayo njalo, azokhula kunedokhumenti eliqukethe futhi kuzodingeka enje hambisa, okusho ukuthi kuyodingeka buyekeza izinkomba futhi. Lapho ukhomba kabusha idokhumenti enamalungu afanayo amakhulu, izinkomba ngokuvamile zizobhalwa ngaphezulu, njengoba kukhona ukuqopha, egcina inkomba yayo. Lokhu kukhonjiswa kabusha kwenzeka uma idokhumenti ifakiwe noma isuswa.

I-MongoDB inokuthile okubizwa ngokuthi "fill factor", okunikeza indawo yokuthi imibhalo ikhule ukuze kuncishiswe le nkinga.
Ungase ucabange ukuthi ungenza ngaphandle kohlu lwezinkomba. Ngeshwa, ukuntuleka kwezinkomba kungase kubangele ukuthi ube nezinye izinkinga. Njengoba amadokhumenti askeniwa kusukela ekuqaleni kuze kube sekupheleni, ukusesha izakhi ekugcineni kwamalungu afanayo kuzothatha isikhathi eside, futhi imisebenzi eminingi ehlotshaniswa nedokhumenti enjalo izoba kancane.

Ungakhohlwa ukuthi ukulandelana kwezigaba kusemqoka

Kusistimu yedathabheyisi ene-optimizer yemibuzo, imibuzo oyibhalayo iyizincazelo zalokho ofuna ukukuthola, hhayi ukuthi ukuthole kanjani. Lo mshini usebenza ngokufanisa noku-oda endaweni yokudlela: ngokuvamile umane u-ode isidlo, futhi unganikezi imiyalelo enemininingwane kumpheki.

Ku-MongoDB, uyala umpheki. Isibonelo, udinga ukwenza isiqiniseko sokuthi idatha iyadlula reduce ngokushesha ngangokunokwenzeka epayipini usebenzisa $match и $project, futhi ukuhlunga kwenzeka kuphela ngemva reduce, nokuthi usesho lwenzeka ngendlela oyidingayo. Ukuba nesilungisisi semibuzo esiqeda umsebenzi ongadingekile, ukulandelana kahle kwezinyathelo, nokukhetha izinhlobo zokujoyina kungakona. Nge-MongoDB, unokulawula okwengeziwe ngezindleko zokufaneleka.

Amathuluzi afana Isitudiyo 3T kuzokwenza kube lula ukwakhiwa kwemibuzo yokuhlanganisa I-MongoDB. Isici se-Aggregation Editor sikuvumela ukuthi usebenzise izitatimende zepayipi isigaba esisodwa ngesikhathi, futhi uhlole idatha yokufaka neyokukhiphayo esigabeni ngasinye ukuze wenze ukulungisa iphutha kube lula.

Ukusebenzisa Ukurekhoda Okusheshayo

Ungalokothi usethe izinketho zokubhala ze-MongoDB ukuze zibe nesivinini esikhulu kodwa ukwethembeka okuphansi. Le modi "ifayela-futhi-khohlwa" ibonakala ishesha ngoba umyalo ubuyiselwa ngaphambi kokuba kubhalwe. Uma isistimu iphahlazeka ngaphambi kokuthi idatha ibhalwe kudiski, izolahleka futhi igcine isisesimweni sokungahambisani. Ngenhlanhla, i-MongoDB engu-64-bit ivunyelwe ukungena ngemvume.

Izinjini zokugcina ze-MMAPv1 kanye ne-WiredTiger zisebenzisa ukugawulwa kwemithi ukuvimbela lokhu, nakuba i-WiredTiger ingalulama kuze kube sekugcineni okungaguquki. indawo yokulawula, uma ukugawula kukhutshaziwe.

Ukubhalwa kwemibhalo kuqinisekisa ukuthi isizindalwazi sisesimweni esingaguquki ngemva kokululama futhi kugcina yonke idatha kuze kube yilapho ibhalwa kujenali. Imvamisa yokurekhodwa ilungiswa kusetshenziswa ipharamitha commitIntervalMs.

Ukuze uqiniseke ngokufakiwe, qiniseka ukuthi ukuloga kunikwe amandla kufayela lokucushwa (storage.journal.enabled), futhi imvamisa yokurekhodwa ihambisana nenani lolwazi ongakwazi ukukulahlekela.

Ukuhlunga ngaphandle kwenkomba

Lapho usesha futhi uhlanganisa, ngokuvamile kuba nesidingo sokuhlunga idatha. Asethembe ukuthi lokhu kwenziwa kwesinye sezigaba zokugcina, ngemva kokuhlunga umphumela ukuze kwehliswe inani ledatha ehlungwayo. Futhi nakulokhu, ukuhlunga uzodinga inkomba. Ungasebenzisa inkomba eyodwa noma ehlanganisiwe.

Uma ingekho inkomba efanelekile, i-MongoDB izokwenza ngaphandle kwayo. Kunomkhawulo wenkumbulo ongu-32 MB kusayizi ophelele wawo wonke amadokhumenti aku imisebenzi yokuhlunga, futhi uma i-MongoDB ifinyelela lo mkhawulo, izophonsa iphutha noma ibuyise isethi yamarekhodi angenalutho.

Sesha ngaphandle kokusekelwa kwenkomba

Imibuzo yosesho yenza umsebenzi ofana nomsebenzi we-JOIN ku-SQL. Ukuze zisebenze kahle kakhulu, zidinga inkomba yenani lokhiye osetshenziswa njengokhiye wangaphandle. Lokhu akubonakali ngoba ukusetshenziswa akuboniswa explain(). Izinkomba ezinjalo zengezwe kunkomba ebhalwe kuyo explain(), yona esetshenziswa abaqhubi bepayipi $match и $sort, lapho behlangana ekuqaleni kwepayipi. Izinkomba manje zingafaka noma yisiphi isigaba ipayipi lokuhlanganisa.

Ukuphuma ekusebenziseni izibuyekezo eziningi

Indlela db.collection.update() esetshenziswa ukushintsha ingxenye yedokhumenti ekhona noma yonke idokhumenti, kuze kufike endaweni ephelele, kuye ngepharamitha oyicacisayo update. Okungabonakali kangako ukuthi ngeke kucubungule wonke amadokhumenti eqoqweni ngaphandle kokuthi usethe inketho multi ukubuyekeza wonke amadokhumenti ahlangabezana nemibandela yokucela.

Ungakhohlwa ukubaluleka kokuhleleka kokhiye kuthebula le-hashi

Ku-JSON, into iqukethe iqoqo elingahlelekile likasayizi uziro noma amapheya amaningi egama/inani, lapho igama liwuchungechunge futhi inani liwuchungechunge, inombolo, izimiso eziphusile, i-null, into, noma amalungu afanayo.

Ngeshwa, i-BSON igcizelela kakhulu i-oda lapho isesha. Ku-MongoDB, ukuhleleka kokhiye ngaphakathi kwezinto ezakhelwe ngaphakathi izindaba, i.e. { firstname: "Phil", surname: "factor" } - lokhu akufani ne { { surname: "factor", firstname: "Phil" }. Okusho ukuthi, kufanele ugcine ukuhleleka kwamapheya egama/inani kumadokhumenti akho uma ufuna ukuqiniseka ukuthi uyawathola.

Ungadideki "Null" и "okungachazwanga"

Okushoyo "okungachazwanga" ayikaze isebenze e-JSON, ngokusho izinga elisemthethweni I-JSON (ECMA-404 Isigaba 5), ​​nakuba isetshenziswa ku-JavaScript. Ngaphezu kwalokho, ku-BSON ayisasebenzi futhi iguqulelwa ku $null, okungasona isixazululo esihle ngaso sonke isikhathi. Gwema ukusebenzisa "okungachazwanga" ku-MongoDB.

Sebenzisa $limit() ngaphandle $sort()

Kaningi uma uthuthuka ku-MongoDB, kuyasiza ukubona isampula yomphumela ezobuyiswa embuzweni noma ekuhlanganisweni. Kulo msebenzi uzodinga $limit(), kodwa akufanele neze ibe kukhodi yokugcina ngaphandle kwalapho uyisebenzise ngaphambilini $sort. Lo mshini uyadingeka ngoba uma kungenjalo awukwazi ukuqinisekisa ukuhleleka komphumela, futhi ngeke ukwazi ukubuka idatha ngokuthembekile. Phezulu komphumela uzothola okufakiwe okuhlukene kuye ngokuhlunga. Ukuze kusebenze ngokwethembeka, imibuzo kanye nokuhlanganisa kumele kube okunqunyiwe, okungukuthi, kukhiphe imiphumela efanayo njalo lapho kwenziwa. Ikhodi equkethe $limit(), kodwa cha $sort, ngeke inqume futhi ingase ibangele amaphutha okuzoba nzima ukuwalandelela.

isiphetho

Okuwukuphela kwendlela yokudumazeka nge-MongoDB ukuyiqhathanisa ngokuqondile nolunye uhlobo lwedathabheyisi, njenge-DBMS, noma ukuza ekusetshenzisweni kwayo ngokusekelwe kulokho okulindelwe. Kufana nokuqhathanisa iwolintshi nemfoloko. Amasistimu esizindalwazi asebenza ngezinjongo ezithile. Kungcono ukuvele uqonde futhi uthokozele lo mehluko ngokwakho. Kungaba amahloni ukucindezela abathuthukisi be-MongoDB phezu kwendlela ebaphoqe phansi ngendlela ye-DBMS. Ngifuna ukubona izindlela ezintsha nezithandekayo zokuxazulula izinkinga ezindala, njengokuqinisekisa ubuqotho bedatha nokudala izinhlelo zedatha ezikwazi ukumelana nokwehluleka nokuhlaselwa okunonya.

Ukwethulwa kwe-MongoDB kokusebenza kwe-ACID kunguqulo 4.0 yisibonelo esihle sokwethula ukuthuthukiswa okubalulekile ngendlela emisha. Ukwenziwa kwemibhalo eminingi kanye nezitatimende eziningi manje sekuyi-athomu. Kungenzeka futhi ukulungisa isikhathi esidingekayo ukuze uthole izingidi futhi unqande ukuthengiselana okubambekile, kanye nokushintsha izinga lokuzihlukanisa.

Izinto eziyi-14 engifisa ukuzazi ngaphambi kokuthi ngiqale nge-MongoDB

Funda kabanzi:

Source: www.habr.com

Engeza amazwana