Zinthu 14 zomwe ndikanakonda ndikadadziwa ndisanayambe ndi MongoDB

Kumasulira kwa nkhaniyi kunakonzedwa madzulo a chiyambi cha maphunziro "Zopanda zibwenzi".

Zinthu 14 zomwe ndikanakonda ndikadadziwa ndisanayambe ndi MongoDB

Zapamwamba:

  • Ndikofunikira kwambiri kupanga schema ngakhale ndizosankha ku MongoDB.
  • Momwemonso, ma index ayenera kufanana ndi schema yanu ndi njira zofikira.
  • Pewani kugwiritsa ntchito zinthu zazikulu ndi magulu akuluakulu.
  • Samalani ndi zoikamo za MongoDB, makamaka pankhani yachitetezo ndi kudalirika.
  • MongoDB ilibe optimizer yamafunso, chifukwa chake muyenera kusamala mukamagwira ntchito zamafunso.

Ndakhala ndikugwira ntchito ndi nkhokwe kwa nthawi yayitali kwambiri, koma posachedwapa ndapeza MongoDB. Pali zinthu zingapo zomwe ndikukhumba kuti ndidziwe ndisanayambe kugwira nawo ntchito. Munthu akakhala ndi chidziwitso m'gawo linalake, amakhala ndi malingaliro oyambira pazomwe amasunga ndi zomwe amachita. Ndikuyembekeza kuti zikhale zosavuta kuti ena amvetse, ndikupereka mndandanda wa zolakwika zomwe zimachitika kawirikawiri.

Kupanga seva ya MongoDB popanda kutsimikizika

Tsoka ilo, MongoDB imayikidwa popanda kutsimikizika mwachisawawa. Kwa malo ogwirira ntchito omwe amapezeka kwanuko, izi ndi zachilendo. Koma popeza MongoDB ndi makina ogwiritsira ntchito ambiri omwe amakonda kugwiritsa ntchito kukumbukira kwakukulu, zingakhale bwino ngati mutayiyika pa seva yokhala ndi RAM yochuluka momwe mungathere, ngakhale mutagwiritsa ntchito pa chitukuko. Kuyika pa seva kudzera pa doko losakhazikika kumatha kukhala kovuta, makamaka ngati nambala iliyonse ya javascript ikhoza kuchitidwa popempha (mwachitsanzo, $where ngati nkhani ya jakisoni).

Pali njira zingapo zotsimikizira, koma chophweka ndikukhazikitsa ID/password. Gwiritsani ntchito lingaliro ili pamene mukuganizira za kutsimikizika kwabwino kutengera LDAP. Zikafika pachitetezo, MongoDB iyenera kusinthidwa pafupipafupi, ndipo zipika ziyenera kuyang'aniridwa nthawi zonse kuti zipezeke mosaloledwa. Mwachitsanzo, ndimakonda kusankha doko lina ngati doko lokhazikika.

Musaiwale kumanga malo anu owukira ku MongoDB

Mndandanda wa Chitetezo cha MongoDB lili ndi malangizo abwino ochepetsera chiwopsezo cha kulowerera kwa maukonde ndi kutayikira kwa data. Ndikosavuta kuzichotsa ndikunena kuti seva yachitukuko sifunikira chitetezo chokwanira. Komabe, sizophweka ndipo izi zimagwira ntchito pa ma seva onse a MongoDB. Makamaka, ngati palibe chifukwa chomveka chogwiritsira ntchito mapReduce, group kapena $ku, muyenera kuletsa kugwiritsa ntchito kachidindo kosagwirizana mu JavaScript polemba mufayilo yosinthira javascriptEnabled:false. Popeza mafayilo a data sanasungidwe mu MongoDB yokhazikika, ndizomveka kuyendetsa MongoDB ndi Wodzipereka Wodzipereka, yomwe ili ndi mwayi wokwanira wamafayilo, omwe ali ndi mwayi wochepa wokhawo komanso amatha kugwiritsa ntchito machitidwe ake omwe amawongolera mafayilo.

Zolakwika pokonza dera

MongoDB sagwiritsa ntchito schema. Koma izi sizikutanthauza kuti chiwembu sikufunika. Ngati mukungofuna kusunga zikalata popanda ndondomeko yofananira, kuzisunga kungakhale kofulumira komanso kosavuta, koma kuzipeza pambuyo pake kungakhale kovuta. zovuta kwambiri.

Classic article "6 Malamulo a Thumb pa MongoDB Schema Design" Ndikoyenera kuwerenga, ndi zina monga Schema Explorer mu chida chachitatu cha Studio 3T, ndikofunikira kugwiritsa ntchito macheke pafupipafupi.

Osayiwala kusanja dongosolo

Kuyiwala dongosolo la mtundu kungayambitse kukhumudwa kwambiri ndikuwononga nthawi yochulukirapo kuposa masinthidwe ena olakwika. Mwachikhazikitso MongoBD amagwiritsa ntchito mtundu wa binary. Koma n’zokayikitsa kuti zingakhale zothandiza kwa aliyense. Zosavuta kumva, zosamva katchulidwe ka mawu, zimatengedwa ngati zachidwi komanso mikanda, ma caftan ndi masharubu opindika m'ma 80s azaka zapitazi. Tsopano kugwiritsa ntchito kwawo sikungakhululukidwe. M'moyo weniweni, "njinga yamoto" ndi yofanana ndi "njinga yamoto". Ndipo "Britain" ndi "Britain" ndi malo omwewo. Zilembo zing'onozing'ono zimangokhala zilembo zazikulu zofanana ndi zilembo zazikulu. Ndipo musandiyambitse kusanja zilembo. Mukamapanga nkhokwe ku MongoDB, gwiritsani ntchito mawu osagwirizana ndi mawu kulembetsa, zomwe zimagwirizana ndi chinenero ndi chikhalidwe wosuta dongosolo. Izi zipangitsa kuti kufufuza kudzera pazingwe kukhala kosavuta.

Pangani zosonkhanitsa ndi zolemba zazikulu

MongoDB ndiwokondwa kulandira zikalata zazikulu mpaka 16MB pazosonkhanitsidwa, ndi GridFS Zopangidwira zolemba zazikulu kuposa 16 MB. Koma chifukwa chakuti zikalata zazikulu zikhoza kuikidwa pamenepo, kusunga izo si lingaliro labwino. MongoDB idzagwira ntchito bwino ngati musunga zolemba zomwe zili ndi ma kilobytes ochepa kukula kwake, ndikuzichita ngati mizere pa tebulo lalikulu la SQL. Zolemba zazikulu zidzakhala gwero lamavuto zokolola.

Kupanga mapepala okhala ndi magulu akuluakulu

Zolemba zimatha kukhala ndi mindandanda. Ndi bwino ngati chiwerengero cha zinthu mu gulu ili kutali ndi manambala anayi. Ngati zinthu zikuwonjezeredwa kumagulu pafupipafupi, zidzakulirakulira kuposa chikalata chomwe chili nacho ndipo ziyenera kutero kusuntha, zomwe zikutanthauza kuti zidzakhala zofunikira sinthaninso indexes. Mukalozeranso chikalata chokhala ndi gulu lalikulu, ma index nthawi zambiri amalembedwa, chifukwa pali mbiri, yomwe imasunga index yake. Kuwonetsanso uku kumachitikanso pamene chikalata chayikidwa kapena kuchotsedwa.

MongoDB ili ndi chinachake chotchedwa "fill factor", zomwe zimapereka mwayi kwa zolemba kuti zikule kuchepetsa vutoli.
Mutha kuganiza kuti mutha kuchita popanda kusanja indexing. Tsoka ilo, kusowa kwa ma index kungakupangitseni kukhala ndi zovuta zina. Popeza zolemba zimasinthidwa kuyambira koyambira mpaka kumapeto, kufufuza zinthu kumapeto kwa mndandandawo kumatenga nthawi yayitali, ndipo ntchito zambiri zolumikizidwa ndi chikalatacho zitha kukhala. pang'onopang'ono.

Musaiwale kuti dongosolo la magawo pakuphatikiza limafunikira

Mudongosolo la database lomwe lili ndi query optimizer, mafunso omwe mumalemba ndi mafotokozedwe a zomwe mukufuna kupeza, osati momwe mungazipezere. Makinawa amagwira ntchito mofananiza ndikuyitanitsa malo odyera: nthawi zambiri mumangoyitanitsa mbale, ndipo osapereka malangizo atsatanetsatane kwa wophika.

Mu MongoDB, mumalangiza wophika. Mwachitsanzo, muyenera kuonetsetsa kuti deta ikudutsa reduce mwamsanga momwe mungathere pogwiritsira ntchito payipi $match ΠΈ $project, ndipo kusanja kumachitika pambuyo pake reduce, ndi kuti kusaka kukuchitika ndendende momwe mukufunira. Kukhala ndi optimizer yamafunso yomwe imachotsa ntchito yosafunikira, kutsata masitepe bwino, ndikusankha mitundu yolumikizana kungakuwonongeni. Ndi MongoDB, mumatha kuwongolera zambiri pamtengo wosavuta.

Zida ngati Chithunzi cha 3T zithandizira kupanga mafunso ophatikizika MongoDB. Mbali ya Aggregation Editor imakupatsani mwayi wogwiritsa ntchito mawu a mapaipi gawo limodzi panthawi, ndikuwunika zolowa ndi zotuluka pagawo lililonse kuti muchepetse zovuta.

Kugwiritsa Ntchito Quick Record

Osakhazikitsa zosankha zolembera za MongoDB kuti mukhale ndi liwiro lalikulu koma kudalirika kochepa. Njira iyi "fayilo-ndi-kuyiwala" zimawoneka zofulumira chifukwa lamulo limabwezedwa zolemba zisanachitike. Ngati dongosololi likuphwanyidwa deta isanalembedwe ku diski, idzatayika ndipo imatha kukhala yosagwirizana. Mwamwayi, 64-bit MongoDB yatsegula.

Ma injini osungira a MMAPv1 ndi WiredTiger amagwiritsa ntchito kudula mitengo kuti ateteze izi, ngakhale WiredTiger ikhoza kuchira mpaka kumapeto. control point, ngati kudula mitengo kwaletsedwa.

Kulemba nkhani kumatsimikizira kuti nkhokweyo ili mumkhalidwe wokhazikika pambuyo pochira ndikusunga deta yonse mpaka italembedwa ku magazini. Kuchuluka kwa kujambula kumakonzedwa pogwiritsa ntchito chizindikiro commitIntervalMs.

Kuti mutsimikize zolowa, onetsetsani kuti kudula mitengo kwayatsidwa mufayilo yosinthira (storage.journal.enabled), ndipo kuchuluka kwa zojambulira kumafanana ndi kuchuluka kwa chidziwitso chomwe mungakwanitse kutaya.

Kusanja popanda index

Pofufuza ndi kusonkhanitsa, nthawi zambiri pamafunika kusanja deta. Tikukhulupirira kuti izi zachitika pa gawo limodzi lomaliza, mutatha kusefa zotsatira kuti muchepetse kuchuluka kwa zomwe zasankhidwa. Ndipo ngakhale mu nkhani iyi, kwa kusanja muyenera mlozera. Mutha kugwiritsa ntchito index imodzi kapena yophatikizika.

Ngati palibe index yoyenera, MongoDB idzachita popanda izo. Pali malire a kukumbukira a 32 MB pa kukula kwa zolemba zonse kusanja ntchito, ndipo ngati MongoDB ifika malire awa, ndiye kuti iponya cholakwika kapena kubwerera rekodi yopanda kanthu.

Sakani popanda chithandizo cha index

Zofufuza zimagwira ntchito yofanana ndi JOIN mu SQL. Kuti agwire bwino ntchito, amafunikira index ya mtengo wa kiyi yomwe imagwiritsidwa ntchito ngati kiyi yakunja. Izi sizikuwonekeratu chifukwa kugwiritsidwa ntchito sikuwonetsedwa explain(). Ma indices oterowo ndi owonjezera pa index yolembedwamo explain(), yomwe imagwiritsidwanso ntchito ndi oyendetsa mapaipi $match ΠΈ $sort, akakumana kumayambiriro kwa payipi. Milozera tsopano imatha kukhudza gawo lililonse aggregation pipeline.

Kusiya kugwiritsa ntchito zosintha zambiri

Njira db.collection.update() amagwiritsidwa ntchito kusintha gawo la chikalata chomwe chilipo kapena chikalata chonsecho, mpaka cholowa m'malo mwathunthu, kutengera zomwe mwafotokoza update. Chomwe sichikuwonekera kwambiri ndikuti sichidzakonza zolemba zonse zomwe zasonkhanitsidwa pokhapokha mutasankha multi kukonzanso zolemba zonse zomwe zikugwirizana ndi zopempha.

Musaiwale kufunikira kwa dongosolo la makiyi mu tebulo la hashi

Mu JSON, chinthu chimakhala ndi gulu losasankhidwa la ziro kapena mawiri awiri a dzina/mtengo, pomwe dzina ndi chingwe ndipo mtengo wake ndi chingwe, nambala, boolean, null, chinthu, kapena gulu.

Tsoka ilo, BSON imatsindika kwambiri dongosolo posaka. Mu MongoDB, dongosolo la makiyi mkati mwa zinthu zomangidwa nkhani, i.e. { firstname: "Phil", surname: "factor" } - izi siziri zofanana { { surname: "factor", firstname: "Phil" }. Ndiye kuti, muyenera kusunga dongosolo la mayina/awiri amtengo muzolemba zanu ngati mukufuna kutsimikiza kuti mwawapeza.

Osasokoneza "Zachabechabe" ΠΈ "zosadziwika"

mtengo "zosadziwika" sizinali zogwira ntchito ku JSON, malinga ndi muyezo wovomerezeka JSON (ECMA-404 Gawo 5), ngakhale imagwiritsidwa ntchito mu JavaScript. Komanso, kwa BSON ndizosatha ndipo zimasinthidwa kukhala $null, yomwe si nthawi zonse yabwino yothetsera. Pewani kugwiritsa ntchito "zosadziwika" mu MongoDB.

Gwiritsani ntchito $limit() popanda $sort()

Nthawi zambiri mukamakulitsa ku MongoDB, ndikofunikira kungowona zitsanzo zomwe zidzabwezedwe kuchokera ku funso kapena kuphatikiza. Pa ntchitoyi mudzafunika $limit(), koma sichiyenera kukhala mu code yomaliza pokhapokha mutayigwiritsa ntchito kale $sort. Makinawa ndi ofunikira chifukwa mwanjira ina simungathe kutsimikizira dongosolo lazotsatira, ndipo simungathe kuwona zomwe zalembedwazo. Pamwamba pazotsatira mupeza zolemba zosiyanasiyana kutengera kusanja. Kuti agwire ntchito modalirika, mafunso ndi kuphatikizika kuyenera kukhala kotsimikizika, ndiko kuti, kutulutsa zotsatira zomwezo nthawi iliyonse yomwe akuphedwa. Kodi ili ndi $limit(),koma ayi $sort, sichikhala chotsimikizika ndipo pambuyo pake chingayambitse zolakwika zomwe zingakhale zovuta kuzitsata.

Pomaliza

Njira yokhayo yokhumudwitsidwa ndi MongoDB ndikufanizira mwachindunji ndi mtundu wina wa database, monga DBMS, kapena kubwera kudzagwiritsa ntchito malinga ndi ziyembekezo zina. Zili ngati kuyerekeza lalanje ndi mphanda. Machitidwe a database amagwira ntchito zinazake. Ndibwino kungomvetsetsa ndikuyamikira kusiyana kumeneku nokha. Zingakhale zamanyazi kukakamiza opanga MongoDB panjira yomwe idawakakamiza kutsata njira ya DBMS. Ndikufuna kuwona njira zatsopano komanso zosangalatsa zothetsera mavuto akale, monga kutsimikizira kukhulupirika kwa deta ndikupanga machitidwe a deta omwe amatha kulephera komanso kuukira koyipa.

Kuyambitsa kwa MongoDB kwa ACID transactionality mu mtundu 4.0 ndi chitsanzo chabwino chobweretsa kusintha kofunikira m'njira yatsopano. Zolemba zambiri ndi zolemba zambiri tsopano ndi atomiki. Ndikothekanso kusintha nthawi yofunikira kuti mupeze maloko ndi kuthetseratu zotuluka, komanso kusintha mulingo wodzipatula.

Zinthu 14 zomwe ndikanakonda ndikadadziwa ndisanayambe ndi MongoDB

Werengani zambiri:

Source: www.habr.com

Kuwonjezera ndemanga