Ukuhunyushwa kwesihloko kwalungiselelwa ngobusuku bangaphambi kokuqala kwesifundo
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
Kunezindlela ezimbalwa zokuqinisekisa, kodwa okulula kakhulu ukusetha i-ID/iphasiwedi yomsebenzisi. Sebenzisa lo mbono ngenkathi ucabanga ngokufakazela ubuqiniso okumangalisayo okusekelwe kukho
Ungakhohlwa ukubopha indawo yokuhlasela ku-MongoDB
,
noma
. Njengoba amafayela wedatha engabethelwe ku-MongoDB evamile, kunengqondo ukusebenzisa i-MongoDB ngayo
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.
Isihloko sakudala "
Ungakhohlwa ukuhleleka kohlu
Ukukhohlwa ukuhleleka kokuhlelwa kungabangela ukukhungatheka okuningi futhi kumoshe isikhathi esiningi kunanoma ikuphi okunye ukucushwa okungalungile. Ngokuzenzakalelayo i-MongoBD isebenzisa
Dala amaqoqo ngamadokhumenti amakhulu
I-MongoDB iyakujabulela ukusingatha amadokhumenti amakhulu afika ku-16MB kumaqoqo, futhi
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
I-MongoDB inokuthile okubizwa ngokuthi
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
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
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.
Ukubhalwa kwemibhalo kuqinisekisa ukuthi isizindalwazi sisesimweni esingaguquki ngemva kokululama futhi kugcina yonke idatha kuze kube yilapho ibhalwa kujenali. Imvamisa yokurekhodwa ilungiswa kusetshenziswa ipharamitha
.
Ukuze uqiniseke ngokufakiwe, qiniseka ukuthi ukuloga kunikwe amandla kufayela lokucushwa
, 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
Uma ingekho inkomba efanelekile, i-MongoDB izokwenza ngaphandle kwayo. Kunomkhawulo wenkumbulo ongu-32 MB kusayizi ophelele wawo wonke amadokhumenti aku
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
Ukuphuma ekusebenziseni izibuyekezo eziningi
Indlela
esetshenziswa ukushintsha ingxenye yedokhumenti ekhona noma yonke idokhumenti, kuze kufike endaweni ephelele, kuye ngepharamitha oyicacisayo
. Okungabonakali kangako ukuthi ngeke kucubungule wonke amadokhumenti eqoqweni ngaphandle kokuthi usethe inketho
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 { 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 $null
, okungasona isixazululo esihle ngaso sonke isikhathi.
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.
Funda kabanzi:
Source: www.habr.com