Ang paghubad sa artikulo giandam sa bisperas sa pagsugod sa kurso
Mga Pangunang Punto:
- Hinungdanon kaayo ang paghimo og schema bisan kung kini opsyonal sa MongoDB.
- Ingon usab, ang mga indeks kinahanglan nga mohaum sa imong schema ug mga pattern sa pag-access.
- Likayi ang paggamit sa dagkong mga butang ug dagkong mga array.
- Pag-amping sa mga setting sa MongoDB, labi na kung bahin sa seguridad ug kasaligan.
- Ang MongoDB walay query optimizer, mao nga kinahanglan ka nga mag-amping sa paghimo sa mga operasyon sa pangutana.
Nagtrabaho ko sa mga database sa dugay nga panahon, apan bag-o lang nadiskobrehan ang MongoDB. Adunay pipila ka mga butang nga gusto nako mahibal-an sa wala pa ako magsugod sa pagtrabaho niini. Kung ang usa ka tawo adunay kasinatian na sa usa ka piho nga natad, sila adunay daan nga mga ideya bahin sa kung unsa ang mga database ug kung unsa ang ilang gibuhat. Sa paglaum nga mas sayon alang sa uban nga masabtan, akong gipresentar ang usa ka lista sa kasagarang mga sayop.
Paghimo og MongoDB server nga walay panghimatuud
Ikasubo, ang MongoDB gi-install nga wala’y panghimatuud pinaagi sa default. Alang sa usa ka workstation nga gi-access sa lokal, kini nga praktis normal. Apan tungod kay ang MongoDB usa ka multi-user system nga ganahan mugamit ug dako nga memory, mas maayo kung ibutang nimo kini sa server nga adunay daghang RAM kutob sa mahimo, bisan kung gamiton ra nimo kini alang sa kalamboan. Ang pag-install sa server pinaagi sa default port mahimong problema, labi na kung ang bisan unsang javascript code mahimong ipatuman sa hangyo (pananglitan, $where
isip usa ka ideya alang sa
Adunay ubay-ubay nga mga pamaagi sa pag-authenticate, apan ang pinakasayon mao ang pagbutang og user ID/password. Gamita kini nga ideya samtang naghunahuna ka bahin sa nindot nga panghimatuud nga gibase sa
Ayaw kalimti ang pagbugkos sa imong pag-atake sa MongoDB
,
o
. Tungod kay ang mga file sa datos wala ma-encrypt sa standard MongoDB, makatarunganon nga ipadagan ang MongoDB
Sayop samtang nagpalambo sa sirkito
Ang MongoDB wala mogamit ug schema. Apan wala kini magpasabut nga ang laraw wala kinahanglana. Kung gusto nimo nga tipigan ang mga dokumento nga walay bisan unsang makanunayon nga sumbanan, ang pagtipig niini mahimong dali ug sayon, apan ang pagkuha niini sa ulahi mahimong lisud.
Klasikong artikulo "
Ayaw kalimti ang pagkasunud-sunod
Ang pagkalimot sa han-ay sa paghan-ay mahimong makapahinabog dugang kasagmuyo ug makausik ug daghang oras kay sa bisan unsang lain nga sayop nga pag-configure. Pinaagi sa default MongoBD gigamit
Paghimo mga koleksyon nga adunay dagkong mga dokumento
Malipayon ang MongoDB nga mag-host sa dagkong mga dokumento hangtod sa 16MB sa mga koleksyon, ug
Paghimo og mga dokumento nga adunay dagkong mga arrays
Ang mga dokumento mahimong adunay mga array. Labing maayo kung ang gidaghanon sa mga elemento sa array layo sa upat ka digit nga numero. Kung ang mga elemento idugang kanunay sa usa ka array, kini molapas sa dokumento nga adunay sulod niini ug kinahanglan nga
Ang MongoDB adunay gitawag
Mahimong maghunahuna ka nga mahimo nimo nga wala ang pag-index sa array. Ikasubo, ang kakulang sa mga indeks mahimo’g hinungdan nga adunay uban nga mga problema. Tungod kay ang mga dokumento gi-scan gikan sa pagsugod hangtod sa pagkahuman, ang pagpangita sa mga elemento sa katapusan sa array magdugay, ug kadaghanan sa mga operasyon nga adunay kalabotan sa ingon nga dokumento mahimong
Ayaw kalimti nga ang pagkasunud-sunod sa mga yugto sa usa ka panagsama hinungdanon
Sa usa ka sistema sa database nga adunay usa ka query optimizer, ang mga pangutana nga imong gisulat mao ang mga pagpasabut kung unsa ang gusto nimo makuha, dili kung giunsa kini makuha. Kini nga mekanismo naglihok pinaagi sa pagtandi sa pag-order sa usa ka restawran: kasagaran nag-order ka lang usa ka pinggan, ug wala maghatag detalyado nga panudlo sa magluto.
Sa MongoDB, gitudloan nimo ang tigluto. Pananglitan, kinahanglan nimo nga sigurohon nga ang datos moagi reduce
sa sayo kutob sa mahimo sa pipeline sa paggamit $match
и $project
, ug ang paghan-ay mahitabo lamang pagkahuman reduce
, ug nga ang pagpangita mahitabo sa tukma nga han-ay nga imong gusto. Ang pagbaton ug query optimizer nga magwagtang sa wala kinahanglana nga trabaho, maayo nga pagsunud sa mga lakang, ug pagpili sa mga tipo sa pag-apil mahimong makadaot kanimo. Uban sa MongoDB, ikaw adunay labaw nga kontrol sa gasto sa kasayon.
Mga himan sama sa
Paggamit sa Dali nga Pagrekord
Ayaw ibutang ang mga opsyon sa pagsulat sa MongoDB nga adunay taas nga tulin apan ubos nga kasaligan. Kini nga mode "file-ug-kalimot" daw paspas tungod kay ang sugo gibalik sa wala pa mahitabo ang pagsulat. Kung ang sistema nahagsa sa wala pa ang data gisulat sa disk, kini mawala ug mahuman sa usa ka dili managsama nga kahimtang. Suwerte, ang 64-bit nga MongoDB adunay pagpaandar sa pag-log.
Ang mga makina sa pagtipig sa MMAPv1 ug WiredTiger naggamit sa pag-log aron mapugngan kini, bisan kung ang WiredTiger mahimong mabawi hangtod sa katapusan nga makanunayon.
Ang pag-journal nagsiguro nga ang database naa sa makanunayon nga kahimtang pagkahuman sa pagkaayo ug gitipigan ang tanan nga datos hangtod nga kini gisulat sa log. Ang frequency sa mga pagrekord gi-configure gamit ang parameter
.
Aron masiguro ang mga entri, siguruha nga ang pag-log gipalihok sa file sa pag-configure
, ug ang kasubsob sa mga rekording katumbas sa gidaghanon sa impormasyon nga imong makaya nga mawala.
Pagsunud nga wala’y indeks
Sa pagpangita ug pag-aggregate, kanunay adunay panginahanglan sa paghan-ay sa datos. Manghinaut kita nga kini nahimo sa usa sa katapusang mga yugto, pagkahuman sa pagsala sa resulta aron makunhuran ang gidaghanon sa datos nga gisunud. Ug bisan sa niini nga kaso, alang sa pag-sort kinahanglan nimo
Kung walay angay nga index, buhaton sa MongoDB kung wala kini. Adunay limitasyon sa memorya nga 32 MB sa kinatibuk-ang gidak-on sa tanang mga dokumento sa
Pangitaa nga walay suporta sa indeks
Ang mga pangutana sa pagpangita naghimo sa usa ka function nga susama sa JOIN nga operasyon sa SQL. Aron molihok nga labing maayo, kinahanglan nila ang indeks sa kantidad sa yawe nga gigamit ingon nga langyaw nga yawe. Dili kini klaro tungod kay ang paggamit wala makita sa explain()
. Ang ingon nga mga indeks dugang sa indeks nga gisulat sa explain()
, nga sa baylo gigamit sa mga operator sa pipeline $match
и $sort
, sa dihang magkita sila sa sinugdanan sa pipeline. Ang mga index mahimo na karon nga maglakip sa bisan unsang yugto
Pagpili gikan sa paggamit sa multi-updates
Paagi
gigamit sa pag-usab sa bahin sa usa ka kasamtangan nga dokumento o sa tibuok nga dokumento, hangtod sa usa ka kompleto nga pagpuli, depende sa parameter nga imong gitakda
. Ang dili kaayo klaro mao nga dili kini magproseso sa tanan nga mga dokumento sa koleksyon gawas kung imong itakda ang kapilian
aron ma-update ang tanan nga mga dokumento nga nakab-ot ang mga pamatasan sa paghangyo.
Ayaw kalimti ang kamahinungdanon sa han-ay sa mga yawe sa usa ka hash table
Sa JSON, ang usa ka butang naglangkob sa usa ka dili han-ay nga koleksyon sa gidak-on nga zero o labaw pa nga mga pares sa ngalan/bili, diin ang ngalan usa ka string ug ang bili usa ka string, numero, boolean, null, butang, o array.
Ikasubo, ang BSON nagbutang ug daghang gibug-aton sa order kung nangita. Sa MongoDB, ang han-ay sa mga yawe sulod sa built-in nga mga butang { firstname: "Phil", surname: "factor" }
- kini dili sama sa { { surname: "factor", firstname: "Phil" }
. Sa ato pa, kinahanglan nimong tipigan ang han-ay sa mga pares sa ngalan/bili sa imong mga dokumento kung gusto nimo nga sigurado nga makit-an kini.
Ayaw kalibog "Wala" и "dili matino"
bili "dili matino" dili gayud balido sa JSON, sumala sa $null
, nga dili kanunay usa ka maayong solusyon.
Paggamit $limit()
nga walay $sort()
Kasagaran kung nag-develop ka sa MongoDB, mapuslanon nga makita ra ang usa ka sample sa resulta nga ibalik gikan sa usa ka pangutana o panagsama. Alang niini nga buluhaton kinahanglan nimo $limit()
, apan dili kini kinahanglan nga naa sa katapusan nga code gawas kung gigamit nimo kini kaniadto $sort
. Kini nga mekaniko gikinahanglan tungod kay kung dili dili nimo magarantiya ang han-ay sa resulta, ug dili nimo masaligan ang pagtan-aw sa datos. Sa ibabaw sa resulta makadawat ka ug lain-laing mga entries depende sa paghan-ay. Aron masaligan ang pagtrabaho, ang mga pangutana ug mga panagsama kinahanglan nga deterministiko, nga mao, nagpatunghag parehas nga mga sangputanan sa matag higayon nga kini gipatuman. Kodigo nga adunay sulod $limit()
, pero dili $sort
, dili deterministiko ug mahimong moresulta sa mga sayop nga lisud masubay.
konklusyon
Ang bugtong paagi nga mahigawad sa MongoDB mao ang pagtandi niini direkta sa lain nga klase sa database, sama sa usa ka DBMS, o aron magamit kini base sa piho nga mga gilauman. Kini sama sa pagtandi sa usa ka orange sa usa ka tinidor. Ang mga sistema sa database nagsilbi nga piho nga katuyoan. Labing maayo nga masabtan lang ug mapasalamatan kini nga mga kalainan alang sa imong kaugalingon. Makauulaw nga ipugos ang mga nag-develop sa MongoDB sa usa ka agianan nga nagpugos kanila sa agianan sa DBMS. Gusto nakong makakita og bag-o ug makaiikag nga mga paagi sa pagsulbad sa daan nga mga problema, sama sa pagsiguro sa integridad sa datos ug paghimo sa mga sistema sa datos nga makasugakod sa kapakyasan ug malisyosong mga pag-atake.
Ang pagpaila sa MongoDB sa ACID transactionality sa bersyon 4.0 usa ka maayong panig-ingnan sa pagpaila sa importante nga mga kalamboan sa usa ka bag-ong paagi. Ang mga transaksyon sa multi-dokumento ug multi-statement kay atomic na. Posible usab nga i-adjust ang oras nga gikinahanglan aron makuha ang mga kandado ug tapuson ang mga na-stuck nga mga transaksyon, ingon man usab ang pagbag-o sa lebel sa pagkalainlain.
Basaha ang dugang pa:
Source: www.habr.com