14 zvinhu zvandinoda kuziva ndisati ndatanga neMongoDB

Kuturikirwa kwechinyorwa kwakagadzirirwa manheru ekutanga kwekosi "Non-relational databases".

14 zvinhu zvandinoda kuziva ndisati ndatanga neMongoDB

Zvikuru:

  • Izvo zvakanyanya kukosha kugadzira schema kunyangwe iri sarudzo muMongoDB.
  • Saizvozvo, indexes dzinofanirwa kuenderana ne schema yako uye maitiro ekuwana.
  • Dzivisa kushandisa zvinhu zvakakura uye mitsara mikuru.
  • Ngwarira neMongoDB marongero, kunyanya kana zvasvika pakuchengetedza nekuvimbika.
  • MongoDB haina query optimizer, saka iwe unofanirwa kungwarira paunenge uchiita query Operations.

Ndanga ndichishanda nemadhatabhesi kwenguva yakareba kwazvo, asi ndichangowana MongoDB. Pane zvinhu zvishoma zvandinoda kuziva ndisati ndatanga kushanda nazvo. Kana munhu achinge atova neruzivo mune imwe ndima, vane fungidziro dzekare nezve izvo dhatabhesi uye zvavanoita. Netarisiro yekuita kuti zvive nyore kune vamwe kunzwisisa, ndinopa runyoro rwezvikanganiso zvakajairika.

Kugadzira sevha yeMongoDB pasina humbowo

Nehurombo, MongoDB inoiswa isina humbowo nekusarudzika. Kune nzvimbo yekushandira inowanikwa munharaunda, tsika iyi yakajairika. Asi sezvo MongoDB iri yakawanda-mushandisi sisitimu inoda kushandisa yakakura ndangariro, zvichave nani kana iwe ukaiisa pane sevha ine RAM yakawanda sezvinobvira, kunyangwe iwe uchizoishandisa chete kusimudzira. Kuisa pane sevha kuburikidza neiyo default port kunogona kunetsa, kunyanya kana chero javascript kodhi inogona kuitwa mukukumbira (semuenzaniso, $where sepfungwa yekuti jekiseni).

Kune akati wandei nzira dzechokwadi, asi zviri nyore kuseta mushandisi ID/password. Shandisa iyi pfungwa paunenge uchifunga nezve fancy authentication yakavakirwa pa LDAP. Kana zvasvika kune kuchengetedzeka, MongoDB inofanirwa kugara ichigadziridzwa, uye matanda anofanirwa kugara achitariswa kuti awane kuwanikwa kusingatenderwe. Semuenzaniso, ndinoda kusarudza chiteshi chakasiyana sechokumira.

Usakanganwa kusunga nzvimbo yako yekurwisa kuMongoDB

MongoDB Chengetedzo Yekutarisa ine matipi akanaka ekudzikisa njodzi yekupindirwa netiweki uye kubuda kwedata. Zviri nyore kuibvisa uye kutaura kuti sevha yekuvandudza haidi yakakwira mwero wekuchengetedza. Nekudaro, hazvisi nyore uye izvi zvinoshanda kune ese MongoDB maseva. Kunyanya, kana pasina chikonzero chinomanikidza chekushandisa mapReduce, group kana $kupi, unofanirwa kudzima kushandiswa kwekodhi kodhi muJavaScript nekunyora mufaira rekugadzirisa. javascriptEnabled:false. Sezvo mafaira edata asina kuvharirwa muMongoDB yakajairwa, zvine musoro kumhanya MongoDB nayo Akazvipira Mushandisi, iyo ine mukana wakazara wemafaira, ine mashoma kuwana chete kwairi uye kugona kushandisa iyo inoshanda sisitimu yega mafaera ekuwana zvidzoreso.

Kukanganisa pakugadzira dunhu

MongoDB haishandisi schema. Asi izvi hazvirevi kuti chirongwa chacho hachidiwi. Kana iwe uchingoda kuchengeta magwaro pasina chero maitiro anoenderana, kuachengeta kunogona kukurumidza uye nyore, asi kuadzosera gare gare kunogona kuve kwakaoma. zvakaoma hazvo.

Classic article "6 Mitemo yeChigunwe cheMongoDB Schema Dhizaini" Yakakodzera kuverenga, uye maficha akadai Schema Explorer mune yechitatu-bato chishandiso Studio 3T, yakakodzera kushandisa kune yenguva dzose cheki yemasekete.

Usakanganwa kurongeka

Kukanganwa kuronga kurongeka kunogona kukonzera kushushikana uye kutambisa nguva yakawanda kupfuura chero imwe isiriyo gadziriso. By default MongoBD inoshandisa binary sort. Asi hazvibviri kubatsira chero munhu. Case-sensitive, accent-sensitive, mabhinari marudzi aionekwa seanoda kuziva anachronisms pamwe chete nebeads, caftan uye akamonana ndebvu kumashure muma80s ezana ramakore rapfuura. Iye zvino kushandiswa kwavo hakuregererwi. Muhupenyu chaihwo, "mudhudhudhu" yakafanana ne "Motorcycle". Uye "Britain" ne "Britain" inzvimbo imwe chete. Mavara madiki anongori vara guru rakaenzana nebhii guru. Uye usandiita kuti nditange pakusarudza diacritics. Paunenge uchigadzira dhatabhesi muMongoDB, shandisa accent-insensitive collation uye rejista, izvo zvinoenderana nemutauro uye system mushandisi tsika. Izvi zvichaita kuti kutsvaga kuburikidza netambo data kuve nyore.

Gadzira kuunganidzwa nemagwaro makuru

MongoDB inofara kugamuchira magwaro mahombe anosvika 16MB mumiunganidzwa, uye GridFS Yakagadzirirwa magwaro makuru akakura kupfuura 16 MB. Asi nekuda kwekuti magwaro mahombe anogona kuiswa ipapo, kuachengeta harisi zano rakanaka. MongoDB inoshanda zvakanyanya kana iwe ukachengeta magwaro ega ega ari mashoma kilobytes muhukuru, uchiabata zvakanyanya semitsara mune yakakura SQL tafura. Zvinyorwa zvakakura zvichange zvichikonzera matambudziko ne kubereka.

Kugadzira magwaro ane makuru makuru

Zvinyorwa zvinogona kunge zvine mitsara. Zvakanakisa kana huwandu hwezvinhu muhurongwa huri kure nenhamba ine manhamba. Kana zvinhu zvikawedzerwa kune array kazhinji, inokura kupfuura gwaro rine iyo uye inoda kuva famba, zvinoreva kuti zvichave zvakakodzera gadziridza indexes futi. Paunenge uchiisa zvakare gwaro rine hurongwa hukuru, ma indexes anowanzo kunyorwa pamusoro, sezvo paine rekodhi, iyo inochengeta index yayo. Iyi re-indexing inoitikawo kana gwaro raiswa kana kudzimwa.

MongoDB ine chimwe chinhu chinonzi "fill factor", iyo inopa nzvimbo yezvinyorwa kukura kuderedza dambudziko iri.
Iwe unogona kufunga kuti iwe unogona kuita pasina array indexing. Sezvineiwo, kushaikwa kwemaindex kungakonzera kuti uve nemamwe matambudziko. Sezvo magwaro akaongororwa kubva pakutanga kusvika kumagumo, kutsvaga zvinhu pamagumo ehurongwa kunotora nguva yakareba, uye mabasa mazhinji ane chekuita negwaro rakadaro achave. anononoka.

Usakanganwa kuti kurongeka kwematanho mukuunganidzwa kunokosha

Mune dhatabhesi system ine query optimizer, mibvunzo yaunonyora itsananguro dzezvauri kuda kuwana, kwete kuti ungazviwana sei. Iyi meshini inoshanda nekuenzanisa nekuraira muresitorendi: kazhinji unongoodha ndiro, uye usape yakadzama mirairo kumubiki.

MuMongoDB, unoraira mubiki. Semuenzaniso, unofanirwa kuve nechokwadi chekuti data inopfuura reduce nekukurumidza sezvinobvira mupombi uchishandisa $match ΠΈ $project, uye kuronga kunoitika chete mushure reduce, uye kuti kutsvaga kunoitika nenzira chaiyo yaunoda. Kuve nemubvunzo optimizer unobvisa basa risingakoshe, kunyatsoteedzera nhanho, uye sarudza majoini marudzi zvinogona kukanganisa iwe. NeMongoDB, une humwe hutongi pamutengo wekureruka.

Zvishandiso zvakafanana Studio 3T inorerutsa kuvakwa kwemibvunzo yekuunganidza mukati MongoDB. Iyo Aggregation Edhiza ficha inobvumidza iwe kuti uise zvirevo zvepombi nhanho imwe panguva, uye ongorora yekupinda uye yekubuda data padanho rega rega kuti kurerutsa kugadzirisa.

Kushandisa Quick Recording

Usambofa wakaseta MongoDB kunyora sarudzo kuti uve nekumhanya kwakanyanya asi kushoma kuvimbika. Iyi modhi "faira-uye-kanganwa" inoita seyakakurumidza nekuti murairo unodzoswa kunyora kusati kwaitika. Kana iyo system ikaputsika iyo data isati yanyorwa ku diski, icharasika uye inoguma mune isingaenderane mamiriro. Sezvineiwo, 64-bit MongoDB ine matanda yakagoneswa.

Iyo MMAPv1 uye WiredTiger kuchengetedza injini dzinoshandisa kutema matanda kudzivirira izvi, kunyangwe WiredTiger inogona kupora kune yekupedzisira inowirirana. control point, kana kutema miti kwakadzimwa.

Kunyora nhau kunovimbisa kuti dhatabhesi iri mumamiriro ezvinhu anowirirana mushure mekupora uye inochengetedza data yose kusvikira yanyorwa kumagazini. Iyo frequency yekurekodha inogadziriswa uchishandisa parameter commitIntervalMs.

Kuti uve nechokwadi chezvapinda, ita shuwa kuti matanda anogoneswa mufaira rekugadzirisa (storage.journal.enabled), uye kuwanda kwekurekodha kunoenderana nehuwandu hwemashoko aungakwanise kurasikirwa nawo.

Kuronga pasina index

Paunenge uchitsvaga nekuunganidza, kazhinji pane kudikanwa kwekugadzirisa data. Ngativimbei kuti izvi zvichaitwa pane imwe yematanho ekupedzisira, mushure mekusefa mhedzisiro kuitira kuderedza huwandu hwe data iri kurongwa. Uye kunyange munyaya iyi, pakugadzirisa iwe uchada index. Iwe unogona kushandisa indekisi imwe chete kana yemubatanidzwa.

Kana pasina indekisi yakakodzera, MongoDB ichaita pasina iyo. Kune muganho wekurangarira we32 MB pahukuru hwese hwemagwaro ese mukati kuronga mabasa, uye kana MongoDB ikasvika pamuganho uyu, zvino inokanda mhosho kana kudzoka empty recordset.

Tsvaga pasina index rutsigiro

Mibvunzo yekutsvaga inoita basa rakafanana neJOIN mashandiro muSQL. Kuti vashande zvakanyanya, vanoda index yekukosha kwekiyi inoshandiswa sekiyi yekune dzimwe nyika. Izvi hazvisi pachena nekuti kushandiswa hakuna kuratidzwa mukati explain(). Ma indices akadaro ari kuwedzera kune indekisi yakanyorwa mukati explain(), iyo inoshandiswawo nevanofambisa pipeline $match ΠΈ $sort, pavanosangana panotangira pombi. Indekisi zvino inogona kuvhara chero nhanho aggregation pipeline.

Kubuda mukushandisa akawanda-updates

Method db.collection.update() rinoshandiswa kushandura chikamu chegwaro riripo kana gwaro rose, kusvika pakutsiva kwakakwana, zvichienderana neparameter yaunotsanangura update. Izvo zvisiri pachena zvakanyanya ndezvekuti hazvizogadzirise magwaro ese muunganidzwa kunze kwekunge waisa sarudzo multi kugadzirisa magwaro ese anoenderana nezvinodiwa zvekukumbira.

Usakanganwa kukosha kwekurongeka kwemakiyi mutafura yehashi

MuJSON, chinhu chine muunganidzwa usina kurongeka wezero kana mamwe mazita/value peya, apo zita itambo uye kukosha itambo, nhamba, boolean, null, chinhu, kana array.

Nehurombo, BSON inoisa zvakanyanya kukoshesa pakurongeka kana uchitsvaga. MuMongoDB, kurongeka kwemakiyi mukati mezvakavakirwa-mukati zvinhu nyaya, i.e. { firstname: "Phil", surname: "factor" } - izvi hazvina kufanana { { surname: "factor", firstname: "Phil" }. Ndokureva kuti, iwe unofanirwa kuchengetedza kurongeka kwezita / kukosha pairi mumagwaro ako kana iwe uchida kuve nechokwadi chekuwana iwo.

Usavhiringika "Null" ΠΈ "undefined"

ukoshi "undefined" haina kumbobvira yashanda muJSON, maererano pamutemo mwero JSON (ECMA-404 Chikamu 5), kunyangwe ichishandiswa muJavaScript. Uyezve, yeBSON haichashandi uye inoshandurwa kuita $null, iyo isiri nguva dzose mhinduro yakanaka. Dzivisa kushandisa "undefined" muMongoDB.

Shandisa $limit() kunze $sort()

Kazhinji kana iwe uchigadzira muMongoDB, zvinobatsira kungoona sampuli yemhedzisiro inozodzoserwa kubva kumubvunzo kana kuunganidzwa. Nokuda kwebasa iri iwe uchada $limit(), asi haifanire kunge iri mukodhi yekupedzisira kunze kwekunge wamboishandisa $sort. Iyi mechanic inodiwa nekuti kana zvisina kudaro haugone kuvimbisa kurongeka kwemhedzisiro, uye haugone kuona nekuvimbika data. Pamusoro pechigumisiro iwe uchawana zvinyorwa zvakasiyana zvichienderana nekugadzirisa. Kuti ushande zvakavimbika, mibvunzo uye kuunganidzwa kunofanirwa kuve kwechisungo, ndiko kuti, kuburitsa mibairo yakafanana pese pavanenge vachiurayiwa. Kodhi ine $limit(), asi kwete $sort, haizove deterministic uye zvinogona kuzokonzera zvikanganiso zvichave zvakaoma kutevera.

mhedziso

Nzira chete yekuodzwa mwoyo neMongoDB ndeyekuienzanisa zvakananga kune imwe mhando yedatabase, yakadai seDBMS, kana kuuya kuzoishandisa zvichienderana nezvimwe zvinotarisirwa. Zvakafanana nekuenzanisa orenji neforogo. Database masisitimu anoshandira zvinangwa chaizvo. Zvakanakisa kuti ungonzwisisa nekukoshesa misiyano iyi iwe pachako. Zvingave zvinonyadzisa kumanikidza vagadziri veMongoDB pamusoro penzira yakavamanikidza pasi munzira yeDBMS. Ini ndinoda kuona nzira nyowani uye dzinonakidza dzekugadzirisa matambudziko ekare, sekuvimbisa kutendeseka kwedata uye kugadzira masisitimu edata anoshingirira kukundikana uye kurwiswa kwakashata.

Kusuma kweMongoDB kweACID transactionality muvhezheni 4.0 muenzaniso wakanaka wekuunza kuvandudzwa kwakakosha nenzira itsva. Multi-document uye multi-statement transactions ikozvino atomic. Izvo zvakare zvinogoneka kugadzirisa iyo nguva inodiwa kuti uwane makiyi uye kumisa yakabatikana kutengeserana, pamwe nekushandura iyo yekuzviparadzanisa nevamwe.

14 zvinhu zvandinoda kuziva ndisati ndatanga neMongoDB

Verenga zvimwe:

Source: www.habr.com

Voeg