14 rudan a tha mi airson gum biodh fios agam mus tòisich mi le MongoDB

Chaidh an eadar-theangachadh den artaigil ullachadh air an oidhche ro thoiseach a’ chùrsa "Stòr-dàta neo-cheangailte".

14 rudan a tha mi airson gum biodh fios agam mus tòisich mi le MongoDB

Prìomh thachartasan:

  • Tha e air leth cudromach sgeama a leasachadh ged a tha e roghainneil ann am MongoDB.
  • Mar an ceudna, feumaidh clàran-amais a bhith a rèir do sgeama agus pàtrain ruigsinneachd.
  • Seachain a bhith a’ cleachdadh stuthan mòra agus arrays mòra.
  • Bi faiceallach le roghainnean MongoDB, gu sònraichte nuair a thig e gu tèarainteachd agus earbsachd.
  • Chan eil optimizer ceiste aig MongoDB, mar sin feumaidh tu a bhith faiceallach nuair a bhios tu a’ dèanamh obair ceiste.

Tha mi air a bhith ag obair le stòran-dàta airson ùine mhòr, ach cha do lorg mi MongoDB o chionn ghoirid. Tha beagan rudan ann a bu mhath leam a bhith eòlach air mus do thòisich mi ag obair leis. Nuair a tha eòlas aig neach mu thràth ann an raon sònraichte, tha iad air ro-bheachdachadh air beachdan mu dè a th’ ann an stòran-dàta agus dè bhios iad a’ dèanamh. Le dòchas gum bi e nas fhasa do dhaoine eile a thuigsinn, tha mi a’ taisbeanadh liosta de mhearachdan cumanta.

A 'cruthachadh frithealaiche MongoDB gun dearbhadh

Gu mì-fhortanach, tha MongoDB air a chuir a-steach gun dearbhadh gu bunaiteach. Airson ionad-obrach a gheibhear gu h-ionadail, tha an cleachdadh seo àbhaisteach. Ach leis gur e siostam ioma-chleachdaiche a th’ ann am MongoDB a tha dèidheil air meudan mòra de chuimhne a chleachdadh, bidh e nas fheàrr ma chuireas tu e air frithealaiche le uiread de RAM ’s as urrainn, eadhon ged nach eil thu ach ga chleachdadh airson leasachadh. Faodaidh duilgheadas a bhith ann an stàladh air an fhrithealaiche tron ​​​​phort bunaiteach, gu sònraichte ma ghabhas còd javascript sam bith a chuir an gnìomh san iarrtas (mar eisimpleir, $where mar bheachd airson sgoltadh).

Tha grunn dhòighean dearbhaidh ann, ach is e an dòigh as fhasa ID cleachdaiche / facal-faire a shuidheachadh. Cleachd am beachd seo fhad ‘s a smaoinicheas tu air dearbhadh sùbailte stèidhichte air LDAP. Nuair a thig e gu tèarainteachd, bu chòir MongoDB a bhith air ùrachadh gu cunbhalach, agus bu chòir logaichean a bhith air an sgrùdadh an-còmhnaidh airson ruigsinneachd gun chead. Mar eisimpleir, is toil leam port eadar-dhealaichte a thaghadh mar am port bunaiteach.

Na dìochuimhnich an uachdar ionnsaigh agad a cheangal ri MongoDB

Liosta sgrùdaidh tèarainteachd MongoDB tha molaidhean math ann airson a bhith a’ lughdachadh cunnart sàrachadh lìonra agus aodion dàta. Tha e furasta a chuir dheth agus a ràdh nach eil feum aig frithealaiche leasachaidh air ìre àrd de thèarainteachd. Ach, chan eil e cho sìmplidh sin agus tha seo a’ buntainn ris a h-uile seirbheisiche MongoDB. Gu sònraichte, mura h-eil adhbhar làidir ann airson a chleachdadh mapReduce, group no $ càite, feumaidh tu cleachdadh còd neo-riaghailteach ann an JavaScript a chuir dheth le bhith a’ sgrìobhadh san fhaidhle rèiteachaidh javascriptEnabled:false. Leis nach eil faidhlichean dàta air an cuairteachadh ann am MongoDB àbhaisteach, tha e ciallach MongoDB a ruith le Cleachdaiche Tiomnaichte, aig a bheil làn chothrom air faidhlichean, le ruigsinneachd cuibhrichte a-mhàin air agus an comas smachdan ruigsinneachd faidhle an t-siostam obrachaidh fhèin a chleachdadh.

Thachair mearachd fhad 's a bha sinn a' leasachadh a' chuairte

Cha bhith MongoDB a’ cleachdadh sgeama. Ach chan eil seo a' ciallachadh nach eil feum air an sgeama. Ma tha thu dìreach airson sgrìobhainnean a stòradh gun phàtran cunbhalach sam bith, faodaidh an stòradh a bhith luath agus furasta, ach faodaidh e a bhith duilich an toirt air ais nas fhaide air adhart. dona gu cruaidh.

Artaigil clasaigeach"6 Riaghailtean òrdag airson dealbhadh sgeamaichean MongoDB" Is fhiach a leughadh, agus feartan mar Explorer sgeama anns an inneal treas-phàrtaidh Studio 3T, is fhiach a chleachdadh airson sgrùdaidhean cunbhalach de chuairtean.

Na dì-chuimhnich an òrdugh seòrsachaidh

Le bhith a’ dìochuimhneachadh òrdugh seòrsachaidh faodaidh barrachd sàrachadh adhbhrachadh agus barrachd ùine a chaitheamh na rèiteachadh ceàrr sam bith eile. Gu gnàthach bidh MongoBD a’ cleachdadh seòrsa binary. Ach chan eil e coltach gum bi e feumail do dhuine sam bith. Bhathas den bheachd gu robh seòrsaichean binary mothachail air cùis, mothachail air stràc, nan anachronisms neònach còmhla ri grìogagan, caftan agus mustaches lùbach air ais anns na 80n den linn mu dheireadh. A-nis tha an cleachdadh neo-thròcaireach. Ann am fìor bheatha, tha "baidhsagal-motair" an aon rud ri "Motorcycle". Agus tha “Breatainn” agus “Breatainn” san aon àite. Tha litir bheag dìreach co-ionann ri prìomh litir. Agus na toir orm tòiseachadh air diacritics a sheòrsachadh. Nuair a chruthaicheas tu stòr-dàta ann am MongoDB, cleachd cruinneachadh neo-mhothachail stràc agus clàraich, a fhreagras ris a' chainnt agus cultar luchd-cleachdaidh siostam. Nì seo sgrùdadh tro dhàta sreang gu math nas fhasa.

Cruthaich cruinneachaidhean le sgrìobhainnean mòra

Tha MongoDB toilichte aoigheachd a thoirt do sgrìobhainnean mòra suas gu 16MB ann an cruinneachaidhean, agus GridFS Dealbhaichte airson sgrìobhainnean mòra nas motha na 16 MB. Ach dìreach leis gum faodar sgrìobhainnean mòra a chuir an sin, chan eil deagh bheachd ann gan stòradh. Obraichidh MongoDB nas fheàrr ma stòras tu sgrìobhainnean fa leth a tha beagan kilobytes ann am meud, gan làimhseachadh nas coltaiche ri sreathan ann an clàr farsaing SQL. Bidh sgrìobhainnean mòra nan adhbhar duilgheadasan le cinneasachd.

Cruthachadh sgrìobhainnean le arrays mòra

Faodaidh arrays a bhith ann an sgrìobhainnean. Tha e nas fheàrr ma tha an àireamh de eileamaidean san raon fada bho àireamh ceithir-fhigearach. Ma thèid eileamaidean a chur ri sreath gu tric, fàsaidh e nas àirde na an sgrìobhainn anns a bheil e agus feumaidh e a bhith gluasad, a tha a 'ciallachadh gum bi e riatanach ùrachadh clàran-amais cuideachd. Nuair a bhios tu ag ath-chlàradh sgrìobhainn le raon mòr, bidh na clàran-amais gu tric air an sgrìobhadh thairis air, leis gu bheil inntrigeadh, a tha a’ stòradh a chlàr-amais. Bidh an ath-chlàradh seo cuideachd a’ tachairt nuair a thèid sgrìobhainn a chuir a-steach no a dhubhadh às.

Tha rudeigin ris an canar MongoDB "Factor lìonaidh", a bheir seachad rùm airson sgrìobhainnean fàs gus an duilgheadas seo a lughdachadh.
Is dòcha gu bheil thu a’ smaoineachadh gun urrainn dhut a dhèanamh às aonais clàr-amais array. Gu mì-fhortanach, faodaidh dìth clàran-amais duilgheadasan eile a bhith agad. Leis gu bheil sgrìobhainnean air an sganadh bho thoiseach gu deireadh, bheir e nas fhaide lorg eileamaidean aig deireadh an t-sreath, agus bidh a’ mhòr-chuid de ghnìomhachdan co-cheangailte ri leithid de sgrìobhainn slaodach.

Na dì-chuimhnich gu bheil òrdugh nan ìrean ann an cruinneachadh cudromach

Ann an siostam stòr-dàta le optimizer ceiste, tha na ceistean a sgrìobhas tu nam mìneachadh air na tha thu airson faighinn, chan ann mar a gheibh thu e. Bidh an uidheamachd seo ag obair mar an ceudna ri òrdachadh ann an taigh-bìdh: mar as trice bidh thu dìreach ag òrdachadh biadh, agus na toir stiùireadh mionaideach don chòcaire.

Ann am MongoDB, bheir thu stiùireadh don chòcaire. Mar eisimpleir, feumaidh tu dèanamh cinnteach gu bheil an dàta a 'dol troimhe reduce cho tràth 'sa ghabhas anns an loidhne-phìoban a' cleachdadh $match и $project, agus bidh an seòrsachadh a’ tachairt dìreach às deidh sin reduce, agus gun tachair an rannsachadh san òrdugh cheart a tha thu ag iarraidh. Le bhith a’ faighinn optimizer ceiste a chuireas às do dh’ obair neo-riatanach, a chuireas ceumannan ann an òrdugh nas fheàrr, agus a thaghas seòrsaichean ceangail faodaidh sin do mhilleadh. Le MongoDB, tha barrachd smachd agad air cosgais goireasachd.

Innealan mar Stiùidio 3T nì e sìmplidh air togail cheistean cruinneachaidh ann an MongoDB. Leigidh feart Deasaiche Aggregation leat aithrisean loidhne-phìoban a chuir an sàs aon ìre aig an aon àm, agus sgrùdadh a dhèanamh air dàta cuir a-steach is toraidh aig gach ìre airson dì-bhugachadh nas fhasa.

A’ cleachdadh Clàradh Luath

Na suidhich roghainnean sgrìobhaidh MongoDB a-riamh gus am bi astar àrd ach earbsachd ìosal. Am modh seo "faidhle-is-dìochuimhnich" tha e coltach gu luath oir thèid an àithne a thilleadh mus tachair an sgrìobhadh. Ma thuiteas an siostam mus tèid an dàta a sgrìobhadh gu diosc, thèid a chall agus bidh e ann an staid neo-chunbhalach. Gu fortanach, tha MongoDB 64-bit air logadh a dhèanamh comasach.

Bidh na h-einnseanan stòraidh MMAPv1 agus WiredTiger a’ cleachdadh logadh gus casg a chuir air seo, ged as urrainn dha WiredTiger faighinn air ais chun cho-chòrdail mu dheireadh. puing-smachd, ma tha logadh à comas.

Bidh Journaling a’ dèanamh cinnteach gu bheil an stòr-dàta ann an staid chunbhalach às deidh faighinn air ais agus a’ cumail a h-uile dàta gus an tèid a sgrìobhadh chun log. Tha tricead chlàran air a rèiteachadh a’ cleachdadh am paramadair commitIntervalMs.

Gus a bhith cinnteach mu na h-inntrigidhean, dèan cinnteach gu bheil logadh air a chomasachadh san fhaidhle rèiteachaidh (storage.journal.enabled), agus tha tricead chlàran a 'freagairt ris an uiread fiosrachaidh as urrainn dhut a chall.

Ag òrdachadh gun index

Nuair a thathar a’ lorg agus a’ cruinneachadh, gu tric feumar dàta a sheòrsachadh. Tha sinn an dòchas gun tèid seo a dhèanamh aig aon de na h-ìrean deireannach, às deidh an toradh a shìoladh gus an àireamh de dhàta a thèid a sheòrsachadh a lughdachadh. Agus eadhon anns a 'chùis seo, airson a rèiteachadh bidh feum agad air clàr-amais. Faodaidh tu clàr-amais singilte no coimeasgaichte a chleachdadh.

Mura h-eil clàr-amais iomchaidh ann, nì MongoDB às aonais. Tha crìoch cuimhne de 32 MB air meud iomlan gach sgrìobhainn a-steach gnìomhan seòrsachaidh, agus ma ruigeas MongoDB a’ chrìoch seo, tilgidh e mearachd no tillidh e air ais clàr falamh.

Rannsaich às aonais taic clàr-amais

Bidh ceistean rannsachaidh a’ coileanadh gnìomh coltach ris an obair JOIN ann an SQL. Gus obrachadh nas fheàrr, feumaidh iad clàr-amais luach na h-iuchrach a thathar a’ cleachdadh mar an iuchair chèin. Chan eil seo follaiseach leis nach eil an cleachdadh air a nochdadh ann explain(). Tha clàran-amais mar seo a bharrachd air a’ chlàr-amais a tha sgrìobhte ann explain(), a tha e fhèin air a chleachdadh le luchd-obrachaidh loidhne-phìoban $match и $sort, nuair a choinnicheas iad aig toiseach na loidhne-phìoban. Faodaidh clàran-amais a-nis còmhdach a dhèanamh air ìre sam bith loidhne-phìoban cruinneachaidh.

A 'diùltadh a bhith a' cleachdadh ioma-ùrachaidhean

Modh db.collection.update() air a chleachdadh gus pàirt de sgrìobhainn a th’ ann mar-thà no an sgrìobhainn gu lèir atharrachadh, suas gu fear eile na àite, a rèir a’ pharamadair a shònraicheas tu update. Is e an rud nach eil cho follaiseach nach giullachd e a h-uile sgrìobhainn sa chruinneachadh mura shuidhich thu an roghainn multi ùrachadh a h-uile sgrìobhainn a choinnicheas ri slatan-tomhais an iarrtais.

Na dì-chuimhnich cho cudromach sa tha òrdugh nan iuchraichean ann an clàr hash

Ann an JSON, tha nì a’ gabhail a-steach cruinneachadh neo-òrdaichte de mheud neoni no barrachd paidhrichean ainm/luach, far a bheil ainm mar shreang agus luach mar shreang, àireamh, boolean, null, nì, no sreath.

Gu mì-fhortanach, tha BSON a’ cur tòrr cuideam air òrdugh nuair a thathar a’ rannsachadh. Ann am MongoDB, òrdugh iuchraichean taobh a-staigh nithean togte cùiseani.e. { firstname: "Phil", surname: "factor" } - chan eil seo mar an ceudna { { surname: "factor", firstname: "Phil" }. Is e sin, feumaidh tu òrdugh paidhrichean ainm / luach a stòradh anns na sgrìobhainnean agad ma tha thu airson a bhith cinnteach gun lorg thu iad.

Na bi troimh-chèile "Null" и "neo-mhìnichte"

luach "neo-mhìnichte" cha robh e a-riamh dligheach ann an JSON, a rèir inbhe oifigeil JSON (ECMA-404 Earrann 5), eadhon ged a tha e air a chleachdadh ann am JavaScript. A bharrachd air an sin, airson BSON tha e air a dhol à bith agus air a thionndadh gu $null, nach eil an-còmhnaidh na fhuasgladh math. Seachain a bhith a 'cleachdadh "neo-mhìnichte" ann am MongoDB.

Cleachd $limit() gun $sort()

Gu math tric nuair a bhios tu a’ leasachadh ann am MongoDB, tha e feumail dìreach sampall den toradh fhaicinn a thèid a thilleadh bho cheist no cruinneachadh. Airson an obair seo bidh feum agad air $limit(), ach cha bu chòir dha a bhith sa chòd mu dheireadh mura cleachd thu e roimhe $sort. Tha an meacanaig seo riatanach oir air dhòigh eile chan urrainn dhut gealltainn òrdugh an toraidh, agus cha bhith e comasach dhut an dàta fhaicinn gu earbsach. Aig mullach an toraidh gheibh thu inntrigidhean eadar-dhealaichte a rèir an t-seòrsachaidh. Gus obrachadh gu earbsach, feumaidh ceistean agus co-chruinneachaidhean a bhith cinntiche, is e sin, na h-aon toraidhean a thoirt gu buil a h-uile uair a thèid an cur gu bàs. Còd anns a bheil $limit(), ach chan eil $sort, cha bhith e cinntiche agus dh’ fhaodadh e às deidh sin mearachdan adhbhrachadh a bhios duilich an lorg.

co-dhùnadh

Is e an aon dòigh air a bhith tàmailteach le MongoDB a choimeas gu dìreach ri seòrsa eile de stòr-dàta, leithid DBMS, no tighinn ga chleachdadh stèidhichte air dùilean sònraichte. Tha e coltach ri coimeas a dhèanamh eadar orains agus forc. Bidh siostaman stòr-dàta a’ frithealadh adhbharan sònraichte. Tha e nas fheàrr dìreach na h-eadar-dhealachaidhean sin a thuigsinn agus a mheas dhut fhèin. Bhiodh e tàmailteach cuideam a chuir air luchd-leasachaidh MongoDB thairis air slighe a thug orra sìos slighe DBMS. Tha mi airson dòighean ùra is inntinneach fhaicinn airson fuasgladh fhaighinn air seann dhuilgheadasan, leithid dèanamh cinnteach à ionracas dàta agus cruthachadh siostaman dàta a tha seasmhach an aghaidh fàilligeadh agus ionnsaighean droch-rùnach.

Tha toirt a-steach MongoDB de ghnìomhachd ACID ann an dreach 4.0 na dheagh eisimpleir de bhith a’ toirt a-steach leasachaidhean cudromach ann an dòigh ùr-ghnàthach. Tha gnothaichean ioma-sgrìobhainn agus ioma-aithris a-nis atamach. Tha e comasach cuideachd an ùine a dh’ fheumar gus glasan fhaighinn agus crìoch a chuir air gnothaichean glaiste, a bharrachd air an ìre aonaranachd atharrachadh.

14 rudan a tha mi airson gum biodh fios agam mus tòisich mi le MongoDB

Leugh tuilleadh:

Source: www.habr.com

Cuir beachd ann