Zavatra 14 tiako ho fantatra alohan'ny hanombohan'ny MongoDB

Ny fandikana ny lahatsoratra dia nomanina tamin'ny fiandohan'ny fianarana "Database tsy misy ifandraisany".

Zavatra 14 tiako ho fantatra alohan'ny hanombohan'ny MongoDB

Zava-nisongadina:

  • Tena zava-dehibe tokoa ny mamolavola tetika na dia azo atao aza izany ao amin'ny MongoDB.
  • Toy izany koa, ny fanondroana dia tsy maintsy mifanandrify amin'ny schema sy ny fomba fidiranao.
  • Fadio ny mampiasa zavatra lehibe sy array lehibe.
  • Mitandrema amin'ny fandrindrana MongoDB, indrindra raha resaka fiarovana sy fahatokisana.
  • Ny MongoDB dia tsy manana optimizer fanontaniana, noho izany dia tsy maintsy mitandrina ianao rehefa manao asa fangatahana.

Efa ela aho no niasa tamin'ny angon-drakitra, saingy vao haingana no nahita an'i MongoDB. Misy zavatra vitsivitsy tiako ho fantatra talohan'ny nanombohako niasa tamin'izany. Rehefa efa manana traikefa amin'ny sehatra iray ny olona iray dia manana eritreritra mialoha momba ny atao hoe database sy ny ataony. Amin'ny fanantenana hanamora ny fahatakarana ny hafa dia manolotra lisitr'ireo fahadisoana mahazatra aho.

Mamorona mpizara MongoDB tsy misy fanamarinana

Mampalahelo fa ny MongoDB dia napetraka tsy misy fanamarinana amin'ny alΓ lan'ny default. Ho an'ny toeram-piasana idirana eo an-toerana dia mahazatra io fanao io. Fa satria ny MongoDB dia rafitra mpampiasa maro izay tia mampiasa fitadidiana be dia be, dia tsara kokoa raha apetrakao amin'ny mpizara manana RAM betsaka araka izay azo atao izany, na dia hampiasaina ho an'ny fampandrosoana fotsiny aza. Ny fametrahana amin'ny mpizara amin'ny alΓ lan'ny seranan-tsambo default dia mety ho olana, indrindra raha misy code javascript azo tanterahina amin'ny fangatahana (ohatra, $where ho hevitra ho an'ny tsindrona).

Misy fomba fanamarinana maromaro, fa ny mora indrindra dia ny mametraka ID / tenimiafina mpampiasa. Ampiasao ity hevitra ity rehefa mieritreritra momba ny fanamarinana raitra mifototra amin'ny LDAP. Raha ny momba ny fiarovana dia tokony havaozina tsy tapaka ny MongoDB, ary tokony hojerena foana ny logs amin'ny fidirana tsy nahazoana alalana. Ohatra, tiako ny misafidy seranan-tsambo hafa ho seranan-tsambo mahazatra.

Aza adino ny mamatotra ny endriky ny fanafihana amin'ny MongoDB

MongoDB Security Checklist misy toro-hevitra tsara hampihenana ny mety hisian'ny fidiran'ny tambazotra sy ny fahatapahan'ny angona. Mora ny misoroka izany ary milaza fa tsy mila fiarovana avo lenta ny mpizara fampandrosoana. Na izany aza, tsy dia tsotra izany ary mihatra amin'ny mpizara MongoDB rehetra izany. Indrindra indrindra, raha tsy misy antony marim-pototra hampiasaina mapReduce, group na $aiza, mila esorinao ny fampiasana kaody tsy misy dikany amin'ny JavaScript amin'ny fanoratana ao amin'ny rakitra fikirakirana javascriptEnabled:false. Satria ny rakitra angon-drakitra dia tsy voarakotra ao amin'ny MongoDB mahazatra, dia misy dikany ny fampandehanana MongoDB miaraka Mpampiasa manokana, izay manana fidirana feno amin'ny rakitra, miaraka amin'ny fidirana voafetra ihany ary ny fahafahana mampiasa ny fanaraha-maso ny fidirana amin'ny rakitra manokana an'ny rafitra fandidiana.

Hadisoana teo am-pamolavolana ny faritra

MongoDB dia tsy mampiasa schema. Saingy tsy midika izany fa tsy ilaina ny drafitra. Raha te-hitahiry antontan-taratasy fotsiny ianao nefa tsy misy lamina mifanaraka amin'izany, dia mety ho haingana sy mora ny fitehirizana azy ireo, saingy mety ho sarotra ny maka azy ireo any aoriana. tena mafy.

Lahatsoratra klasika "Fitsipika 6 an'ny Thumb ho an'ny MongoDB Schema Design" Mendrika vakiana izy io, ary misy endri-javatra toy izany Schema Explorer Ao amin'ny fitaovana an'ny antoko fahatelo Studio 3T, mendrika ny hampiasaina amin'ny fanaraha-maso tsy tapaka ny faritra.

Aza adino ny filaharana

Ny fanadinoana ny filaharana dia mety hiteraka fahasorenana sy fandaniam-potoana bebe kokoa noho ny fandrindrana diso hafa. Amin'ny alΓ lan'ny fampiasana MongoBD default karazana binary. Saingy tsy azo inoana fa mahasoa na iza na iza. Noheverina ho anachronisma mahaliana miaraka amin'ny vakana, caftans ary volombava olioly tamin'ny taona 80 tamin'ny taonjato farany ny karazana saro-pady, accent-sensitive, binary. Ankehitriny dia tsy azo avela ny fampiasana azy ireo. Amin'ny tena fiainana dia mitovy amin'ny "Moto" ny "moto". Ary ny "Britain" sy "Britain" dia toerana iray ihany. Ny litera kely dia mitovy amin'ny litera lehibe iray. Ary aza atomboka amin'ny fanasokajiana diacritics aho. Rehefa mamorona angon-drakitra ao amin'ny MongoDB dia ampiasao ny fanangonana tsy misy accent ary hisoratra anarana, izay mifanaraka amin'ny fiteny sy kolontsaina mpampiasa rafitra. Hanamora kokoa ny fikarohana amin'ny alalan'ny angona tady izany.

Mamorona fanangonana miaraka amin'ny antontan-taratasy lehibe

MongoDB dia faly mampiantrano antontan-taratasy lehibe hatramin'ny 16MB amin'ny fanangonana, ary GridFS Natao ho an'ny antontan-taratasy lehibe mihoatra ny 16 MB. Saingy satria misy antontan-taratasy lehibe azo apetraka ao, ny fitehirizana azy ireo ao dia tsy hevitra tsara. Ny MongoDB dia hiasa tsara indrindra raha mitahiry antontan-taratasy tsirairay izay kilobytes vitsivitsy ny habeny, mitondra azy ireo ho toy ny andalana ao anaty latabatra SQL midadasika. Ireo antontan-taratasy lehibe dia ho loharanon'ny olana vokatra.

Mamorona antontan-taratasy miaraka amin'ny array lehibe

Ny antontan-taratasy dia mety misy array. Tsara raha lavitra ny isa efatra ny isan'ny singa ao amin'ny laharan-kira. Raha ampiana matetika ny singa iray, dia hihoatra ny antontan-taratasy misy azy io ary tsy maintsy ilaina fihetsika, izay midika fa ilaina izany fanavaozana indexes koa. Rehefa mamerina manindrona antontan-taratasy miaraka amin'ny laharan-daza lehibe, dia hosoratana matetika ny fanondroana, satria misy firaketana an-tsoratra, izay mitahiry ny fanondrony. Mitranga koa ity fanondroana indray ity rehefa ampidirina na voafafa ny antontan-taratasy iray.

MongoDB dia manana zavatra antsoina "fill factor", izay manome toerana hitomboan'ny antontan-taratasy mba hanamaivanana ity olana ity.
Mety hieritreritra ianao fa afaka manao tsy misy indexing array. Mampalahelo fa ny tsy fahampian'ny index dia mety hiteraka olana hafa. Satria ny antontan-taratasy dia nojerena hatrany am-piandohana ka hatramin'ny farany, ny fitadiavana ireo singa amin'ny faran'ny laharan-tariby dia haharitra ela kokoa, ary ny ankamaroan'ny asa mifandray amin'ny antontan-taratasy toy izany dia ho MORA.

Aza adino fa zava-dehibe ny filaharan'ny dingana amin'ny fitambarana

Ao amin'ny rafitra angona miaraka amin'ny optimizer fanontaniana, ny fanontaniana soratanao dia fanazavana momba izay tianao ho azo, fa tsy ny fomba hahazoana azy. Ity rafitra ity dia miasa amin'ny alΓ lan'ny fanoharana amin'ny famandrihana ao amin'ny trano fisakafoanana: matetika ianao no manafatra lovia fotsiny, ary tsy manome torolΓ lana amin'ny antsipiriany amin'ny mpahandro.

Ao amin'ny MongoDB, mampianatra ny mpahandro ianao. Ohatra, mila maka antoka ianao fa mandalo ny data reduce haingana araka izay azo atao amin'ny fantsona mampiasa $match ΠΈ $project, ary aorian'izay ihany no misy ny fanasokajiana reduce, ary ny fikarohana dia mitranga amin'ny filaharana tianao indrindra. Mety hanimba anao ny fananana optimizer fanontaniana manafoana ny asa tsy ilaina, mandamina ny dingana amin'ny fomba tsara indrindra ary mifantina karazana fidirana. Miaraka amin'ny MongoDB, manana fifehezana bebe kokoa ianao amin'ny vidiny mora.

Fitaovana toy ny Studio 3T hanamora ny fananganana fanontaniana fanangonana in MongoDB. Ny endri-javatra Aggregation Editor dia ahafahanao mampihatra ny fanambarana fantsona iray isaky ny mandeha, ary manara-maso ny angona fidirana sy famoahana isaky ny dingana mba hanatsorana ny debugging.

Mampiasa Quick Recording

Aza mametraka safidy fanoratana MongoDB mba hanana hafainganam-pandeha ambony nefa azo itokisana ambany. Ity fomba ity "rakitra-ary-adino" toa haingana satria averina alohan'ny fanoratana ny baiko. Raha mianjera ny rafitra alohan'ny hanoratana ny angon-drakitra amin'ny kapila, dia ho very izany ary hiafara amin'ny toe-javatra tsy mifanaraka. Soa ihany fa ny MongoDB 64-bit dia navela ny logging.

Ny milina fitahirizana MMAPv1 sy WiredTiger dia mampiasa logging mba hisorohana izany, na dia afaka miverina amin'ny farany aza ny WiredTiger. teboka fanaraha-maso, raha tsy mandeha ny log.

Ny fanaovana diary dia miantoka fa ny angon-drakitra dia ao anatin'ny toe-javatra tsy miova aorian'ny fanarenana ary mitazona ny angona rehetra mandra-panoratana azy ao amin'ny log. Ny fatran'ny fandraketana dia amboarina amin'ny fampiasana ny paramètre commitIntervalMs.

Mba hahazoana antoka ny fidirana, ataovy azo antoka fa alefa ao amin'ny fisie fanamafisana (storage.journal.enabled), ary ny fahamaroan'ny fandraketana dia mifanandrify amin'ny habetsaky ny fampahalalana azonao omena.

Fanasokajiana tsy misy fanondro

Rehefa mikaroka sy manangom-bokatra dia matetika ilaina ny mandamina angona. Manantena izahay fa vita amin'ny iray amin'ireo dingana farany izany, aorian'ny fanivanana ny vokatra mba hampihenana ny habetsaky ny angona voasokajy. Ary na dia amin'ity tranga ity, ho an'ny fanasokajiana dia mila Fanondroana. Azonao atao ny mampiasa tondro tokana na fitambarana.

Raha tsy misy index sahaza, MongoDB dia hanao raha tsy misy izany. Misy fetra fitadidiana 32 MB amin'ny haben'ny fitambaran'ny antontan-taratasy rehetra ao asa fanasokajiana, ary raha mahatratra io fetra io ny MongoDB, dia mety hanipy fahadisoana na hiverina firaketana foana.

Fikarohana tsy misy fanohanana fanondro

Ny fangatahana fikarohana dia manao asa mitovy amin'ny asa JOIN ao amin'ny SQL. Mba hiasa tsara indrindra dia mila ny fanondroana ny sandan'ny fanalahidy ampiasaina ho fanalahidin'ny vahiny izy ireo. Tsy mazava izany satria tsy hita taratra ny fampiasana azy explain(). Ny indices toy izany dia ankoatra ny index voasoratra ao explain(), izay indray dia ampiasain'ireo mpandraharaha amin'ny fantsona $match ΠΈ $sort, rehefa mihaona amin'ny fiandohan'ny fantsona izy ireo. Afaka mandrakotra ny dingana rehetra izao ny fanondroana fantsona fanangonam-bokatra.

Miala amin'ny fampiasana fanavaozana maro

fomba db.collection.update() ampiasaina hanovana ampahany amin'ny antontan-taratasy efa misy na ny antontan-taratasy manontolo, ka hatramin'ny fanoloana tanteraka, arakaraka ny mari-pamantarana voafaritrao update. Ny tsy dia mazava loatra dia ny hoe tsy handamina ny antontan-taratasy rehetra ao amin'ny fanangonana izy raha tsy mametraka ny safidy multi hanavao ny antontan-taratasy rehetra mahafeno ny fepetra takiana.

Aza adino ny maha-zava-dehibe ny filaharan'ny fanalahidy amin'ny latabatra hash

Ao amin'ny JSON, ny zavatra iray dia misy fitambarana tsy mirindra amin'ny haben'ny aotra na tsiroaroa anarana/sarobidy maro, izay ny anarana dia tady ary ny sanda dia tady, isa, boolean, null, object, na array.

Indrisy anefa fa ny BSON dia manome lanja be ny filaminana rehefa mikaroka. Ao amin'ny MongoDB, ny filaharan'ny fanalahidy ao anatin'ny zavatra namboarina raharaha, i.e. { firstname: "Phil", surname: "factor" } - tsy mitovy amin'ny { { surname: "factor", firstname: "Phil" }. Izany hoe, tsy maintsy mitahiry ny filaharan'ny mpivady anarana/sarobidy ao amin'ny antontan-taratasinao ianao raha te ho azo antoka ny hahita azy ireo.

Aza very hevitra "Tsy misy" ΠΈ "tsy voafaritra"

zava-dehibe "tsy voafaritra" dia tsy manan-kery velively ao amin'ny JSON, araka ny fenitra ofisialy JSON (ECMA-404 Fizarana 5), ​​na dia ampiasaina amin'ny JavaScript aza. Ankoatr'izay, ho an'ny BSON dia lany andro ary avadika ho $null, izay tsy vahaolana tsara foana. Fadio ny mampiasa "tsy voafaritra" ao amin'ny MongoDB.

ny fampiasana ny $limit() tsy misy $sort()

Matetika rehefa mivoatra ao amin'ny MongoDB ianao, dia ilaina ny mijery santionany amin'ny valiny izay haverina avy amin'ny fangatahana na fanangonana. Ho an'ity asa ity dia mila $limit(), fa tsy tokony ho ao amin'ny kaody farany mihitsy izy io raha tsy ampiasainao taloha $sort. Ilaina ity mekanika ity satria raha tsy izany dia tsy afaka miantoka ny filaharan'ny vokatra ianao, ary tsy ho afaka hijery ny angon-drakitra azo antoka ianao. Eo an-tampon'ny valiny dia hahazo fidirana isan-karazany ianao arakaraka ny fanasokajiana. Mba hiasa amim-pahatokiana, ny fanontaniana sy ny fanangonana dia tsy maintsy voafaritra, izany hoe, mamokatra vokatra mitovy isaky ny tanterahana. Code misy $limit(), fa tsia $sort, dia tsy ho tapa-kevitra ary mety hiteraka hadisoana izay ho sarotra ny harahina.

famaranana

Ny hany fomba handiso fanantenana an'i MongoDB dia ny fampitahana azy mivantana amin'ny karazana tahiry hafa, toy ny DBMS, na ny fampiasana azy mifototra amin'ny zavatra andrasana sasany. Toy ny mampitaha ny voasary amin'ny garpu. Ny rafitra database dia manana tanjona manokana. Ny tsara indrindra dia ny mahatakatra sy mankasitraka ireo fahasamihafana ireo ho anao manokana. Mahamenatra ny manery ny mpamorona MongoDB amin'ny lalana iray izay nanery azy ireo hidina amin'ny lalan'ny DBMS. Te-hahita fomba vaovao sy mahaliana aho hamahana ireo olana taloha, toy ny fiantohana ny fahamarinan'ny angon-drakitra sy ny famoronana rafitra data izay mahazaka ny tsy fahombiazana sy ny fanafihana ratsy.

Ny fampidirana MongoDB ny ACID transactionality amin'ny version 4.0 dia ohatra tsara amin'ny fampidirana fanatsarana manan-danja amin'ny fomba vaovao. Ny fifampiraharahana amin'ny antontan-taratasy maro sy fanambarana maro dia atomika ankehitriny. Azo atao ihany koa ny manitsy ny fotoana takiana amin'ny fahazoana hidin-trano sy hampitsaharana ny fifampiraharahana miraikitra, ary koa ny fanovana ny haavon'ny fitokana-monina.

Zavatra 14 tiako ho fantatra alohan'ny hanombohan'ny MongoDB

Hamaky bebe kokoa:

Source: www.habr.com

Add a comment