14 rud ba mhaith liom a bheith ar eolas agam sular thosaigh mé le MongoDB

Ullmhaíodh aistriúchán an ailt ar an oíche roimh thús an chúrsa "Bunachair shonraí neamhghaolmhara".

14 rud ba mhaith liom a bheith ar eolas agam sular thosaigh mé le MongoDB

Buaicphointí:

  • Tá sé thar a bheith tábhachtach scéimre a fhorbairt cé go bhfuil sé roghnach i MongoDB.
  • Ar an gcaoi chéanna, caithfidh innéacsanna teacht le do scéimre agus patrúin rochtana.
  • Seachain rudaí móra agus eagair mhóra a úsáid.
  • Bí cúramach le socruithe MongoDB, go háirithe nuair a thagann sé le slándáil agus iontaofacht.
  • Níl optimizer fiosrúcháin ag MongoDB, mar sin ní mór duit a bheith cúramach agus oibríochtaí fiosrúcháin á ndéanamh agat.

Tá mé ag obair le bunachair shonraí le fada an lá, ach níor aimsíodh MongoDB le déanaí. Tá cúpla rud ar mhaith liom a bheith ar eolas agam sular thosaigh mé ag obair leis. Nuair a bhíonn taithí ag duine cheana féin i réimse áirithe, tá tuairimí réamhcheaptha acu faoi cad is bunachair shonraí ann agus cad a dhéanann siad. Agus súil agam é a dhéanamh níos fusa do dhaoine eile a thuiscint, cuirim liosta de bhotúin choitianta i láthair.

Freastalaí MongoDB a chruthú gan fíordheimhniú

Ar an drochuair, tá MongoDB suiteáilte gan fíordheimhniú de réir réamhshocraithe. Maidir le stáisiún oibre a bhfuil rochtain air go háitiúil, is gnáth an cleachtas seo. Ach ós rud é gur córas il-úsáideoir é MongoDB ar maith leis méideanna móra cuimhne a úsáid, beidh sé níos fearr má chuireann tú é ar fhreastalaí leis an oiread RAM agus is féidir, fiú mura bhfuil tú chun é a úsáid ach le haghaidh forbartha. Is féidir fadhbanna a bheith ag baint le suiteáil ar an bhfreastalaí tríd an bport réamhshocraithe, go háirithe más féidir aon chód javascript a chur i bhfeidhm san iarratas (mar shampla, $where mar smaoineamh le haghaidh instealltaí).

Tá go leor modhanna fíordheimhnithe ann, ach is é an ceann is éasca ID úsáideora / pasfhocal a shocrú. Bain úsáid as an smaoineamh seo agus tú ag smaoineamh ar fhíordheimhniú mhaisiúil bunaithe ar LDAP. Nuair a thagann sé le slándáil, ba cheart MongoDB a nuashonrú i gcónaí, agus ba cheart logaí a sheiceáil i gcónaí le haghaidh rochtain neamhúdaraithe. Mar shampla, is maith liom calafort difriúil a roghnú mar an gcalafort réamhshocraithe.

Ná déan dearmad an dromchla ionsaí a cheangal le MongoDB

Seicliosta Slándála MongoDB tá leideanna maithe ann chun an riosca go gcuirfear isteach ar an ngréasán agus go sceitheadh ​​sonraí a laghdú. Is furasta é a scuabadh agus a rá nach bhfuil ardleibhéal slándála ag teastáil ó fhreastalaí forbartha. Mar sin féin, níl sé chomh simplí sin agus baineann sé seo le gach freastalaithe MongoDB. Go háirithe, mura bhfuil aon chúis láidir le húsáid mapReduce, group$cá, ní mór duit úsáid cód treallach i JavaScript a dhíchumasú trí scríobh sa chomhad cumraíochta javascriptEnabled:false. Ós rud é nach bhfuil comhaid sonraí criptithe i MongoDB caighdeánach, tá sé ciallmhar MongoDB a rith leis Úsáideoir Tiomnaithe, a bhfuil rochtain iomlán aige ar chomhaid, le rochtain theoranta amháin air agus an cumas rialuithe rochtana comhaid an chórais oibriúcháin féin a úsáid.

Earráid agus an ciorcad á fhorbairt

Ní úsáideann MongoDB scéimre. Ach ní chiallaíonn sé seo nach bhfuil gá leis an scéim. Más mian leat ach doiciméid a stóráil gan aon phatrún comhsheasmhach, is féidir iad a stóráil go tapa agus éasca, ach is féidir go mbeadh sé deacair iad a aisghabháil níos déanaí. diabhal crua.

alt clasaiceach"6 Rialacha Ordóg do Dhearadh Scéimre MongoDB" Is fiú é a léamh, agus gnéithe cosúil le Taiscéalaí Scéimre san uirlis tríú páirtí Stiúideo 3T, is fiú a úsáid le haghaidh seiceálacha rialta ar chiorcaid.

Ná déan dearmad ar an sórtáil

Féadann níos mó frustrachais a bheith mar thoradh ar dearmad a dhéanamh ar ordú sórtála agus níos mó ama a chur amú ná aon chumraíocht mhícheart eile. De réir réamhshocraithe úsáideann MongoBD sórt dénártha. Ach ní dócha go mbeidh sé úsáideach do dhuine ar bith. Measadh go raibh cineál dénártha íogair de chás-íogair, íogair ó thaobh blas de, ina anacronism aisteach mar aon le coirníní, caiféanna agus mustaches chatach siar sna 80idí den chéid seo caite. Anois tá a n-úsáid unforgivable. Sa saol fíor, tá "gluaisrothar" mar an gcéanna le "Gluaisrothar". Agus is iad “an Bhreatain” agus “an Bhreatain” an áit chéanna. Is ionann litir chás íochtair agus an choibhéis i gcás mór de cheannlitir. Agus ná cuir tús le diacritics a shórtáil. Agus bunachar sonraí á chruthú i MongoDB, bain úsáid as comhthiomsú blas-neamhíogair agus cláraigh, a fhreagraíonn don teanga agus cultúr úsáideoirí córais. Déanfaidh sé seo cuardach trí shonraí teaghrán i bhfad níos éasca.

Cruthaigh bailiúcháin le doiciméid mhóra

Tá MongoDB sásta doiciméid mhóra suas le 16MB a óstáil i mbailiúcháin, agus GreilleFS Deartha do dhoiciméid mhóra níos mó ná 16 MB. Ach toisc gur féidir doiciméid mhóra a chur ann, ní smaoineamh maith iad a stóráil. Oibreoidh MongoDB is fearr má stórálann tú doiciméid aonair atá cúpla cilibheart i méid, ag caitheamh leo níos mó cosúil le sraitheanna i dtábla SQL leathan. Beidh doiciméid mhóra ina bhfoinse fadhbanna le táirgiúlacht.

Doiciméid a chruthú le eagair mhóra

Is féidir eagair a bheith sna doiciméid. Is fearr líon na ndúl san eagar a bheith i bhfad ó uimhir ceithre dhigit. Má chuirtear gnéithe le sraith go minic, beidh sé níos mó ná an doiciméad ina bhfuil sé agus beidh gá leis bogadh, rud a chiallaíonn go mbeidh sé riachtanach innéacsanna a nuashonrú freisin. Nuair a ath-innéacsaítear doiciméad le sraith mhór, is minic a fhorscríobhfar na hinnéacsanna, ós rud é go bhfuil taifead, a stórálann a innéacs. Tarlaíonn an t-ath-innéacsú seo freisin nuair a chuirtear isteach nó nuair a scriostar doiciméad.

Tá rud éigin ar a dtugtar ag MongoDB "Fachtóir líonadh", a thugann spás do dhoiciméid fás chun an fhadhb seo a íoslaghdú.
B'fhéidir go gceapfá gur féidir leat a dhéanamh gan innéacsú eagair. Ar an drochuair, d'fhéadfadh easpa innéacsanna a bheith ina chúis le fadhbanna eile a bheith agat. Ós rud é go ndéantar doiciméid a scanadh ó thús go deireadh, tógfaidh sé níos faide cuardach a dhéanamh ar eilimintí ag deireadh an eagar, agus déanfar an chuid is mó de na hoibríochtaí a bhaineann le doiciméad den sórt sin mall.

Ná déan dearmad go bhfuil tábhacht le hord na gcéimeanna sa chomhiomlánú

I gcóras bunachar sonraí le huasmhéadóir fiosrúcháin, is míniú iad na ceisteanna a scríobhann tú ar cad ba mhaith leat a fháil, ní conas é a fháil. Oibríonn an mheicníocht seo de réir analaí le hordú i mbialann: de ghnáth ní ordaíonn tú ach mias, agus ní thugann tú treoracha mionsonraithe don chócaire.

I MongoDB, tugann tú treoir don chócaire. Mar shampla, ní mór duit a chinntiú go dtéann na sonraí tríd reduce chomh luath agus is féidir sa phíblíne ag baint úsáide as $match и $project, agus ní tharlaíonn sórtáil ach amháin tar éis reduce, agus go dtarlaíonn an cuardach san ord go díreach atá uait. Má bhíonn optimizer fiosrúcháin agat a chuireann deireadh le hobair neamhriachtanach, a sheicheamhaíonn céimeanna ar an mbealach is fearr is féidir, agus a roghnaíonn cineálacha ceangail, is féidir leat do mhilleadh. Le MongoDB, tá níos mó smachta agat ar chostas áise.

Uirlisí cosúil le Stiúideo 3T déanfaidh sé tógáil ceisteanna comhiomlánaithe a shimpliú i MongoDB. Ceadaíonn an ghné Eagarthóir Comhiomlánaithe duit ráitis phíblíne a chur i bhfeidhm céim amháin ag an am, agus sonraí ionchuir agus aschuir a iniúchadh ag gach céim chun dífhabhtú a shimpliú.

Ag baint úsáide as Taifeadadh Tapa

Ná socraigh roghanna scríobh MongoDB riamh le go mbeidh ardluais ach iontaofacht íseal. An mód seo "comhad-agus-dearmad" cosúil go tapa toisc go gcuirtear an t-ordú ar ais sula dtarlaíonn an scríobh. Má thiteann an córas sula scríobhtar na sonraí ar diosca, caillfear é agus beidh sé ar neamhréir. Ar ámharaí an tsaoil, tá an logáil cumasaithe ag MongoDB 64-giotán.

Úsáideann na hinnill stórála MMAPv1 agus WiredTiger logáil chun é seo a chosc, cé gur féidir le WiredTiger aisghabháil go dtí an comhsheasamh deiridh pointe rialaithe, má tá logáil díchumasaithe.

Cinntíonn Journaling go bhfuil an bunachar sonraí i riocht comhsheasmhach tar éis é a ghnóthú agus coimeádann sé na sonraí go léir go dtí go scríobhtar chuig an loga é. Tá minicíocht na dtaifeadtaí cumraithe ag baint úsáide as an bparaiméadar commitIntervalMs.

Le bheith cinnte de na hiontrálacha, déan cinnte go bhfuil logáil cumasaithe sa chomhad cumraíochta (storage.journal.enabled), agus comhfhreagraíonn minicíocht na dtaifeadtaí leis an méid faisnéise is féidir leat a chailleadh.

Sórtáil gan innéacs

Nuair a dhéantar cuardach agus comhiomlánú, is minic go mbíonn gá le sonraí a shórtáil. Tá súil againn go ndéanfar é seo ag ceann de na céimeanna deiridh, tar éis an toradh a scagadh chun an méid sonraí atá á sórtáil a laghdú. Agus fiú sa chás seo, le haghaidh sórtáil beidh ort innéacs. Is féidir leat innéacs singil nó cumaisc a úsáid.

Mura bhfuil innéacs oiriúnach ann, déanfaidh MongoDB gan é. Tá teorainn chuimhne de 32 MB ar mhéid iomlán na ndoiciméad go léir i oibríochtaí sórtála, agus má shroicheann MongoDB an teorainn seo, ansin déanfaidh sé earráid nó filleadh taifead folamh.

Cuardaigh gan tacaíocht innéacs

Feidhmíonn ceisteanna cuardaigh feidhm cosúil leis an oibríocht JOIN in SQL. Chun an obair is fearr a dhéanamh, teastaíonn uathu innéacs luach na heochrach a úsáidtear mar an eochair choigríche. Níl sé seo soiléir toisc nach bhfuil an úsáid léirithe i explain(). Tá innéacsanna den sórt sin sa bhreis ar an innéacs atá scríofa i explain(), a úsáideann oibreoirí píblíne ar a seal $match и $sort, nuair a bhíonn siad le chéile ag tús na píblíne. Is féidir le hinnéacsanna aon chéim a chlúdach anois píblíne comhiomlánaithe.

Diúltú as il-nuashonruithe a úsáid

Modh db.collection.update() a úsáidtear chun cuid de dhoiciméad atá ann cheana féin nó den doiciméad iomlán a athrú, suas go dtí ceann eile a athchur, ag brath ar an bparaiméadar a shonraíonn tú update. Is é an rud nach bhfuil chomh soiléir sin ná nach bpróiseálfaidh sé gach doiciméad sa bhailiúchán mura bhfuil an rogha socraithe agat multi na doiciméid go léir a chomhlíonann na critéir iarratais a nuashonrú.

Ná déan dearmad ar an tábhacht a bhaineann leis an ord na heochracha i tábla hash

In JSON, is éard atá i réad ná bailiúchán neamhordaithe de mhéid náid nó níos mó péirí ainm/luacha, áit ar sreang é an t-ainm agus is teaghrán, uimhir, Boole, null, réad nó eagar é luach.

Ar an drochuair, cuireann BSON go leor béime ar ord agus é á chuardach. I MongoDB, ord na n-eochracha laistigh de réada ionsuite nithei.e. { firstname: "Phil", surname: "factor" } - ní hionann é seo agus { { surname: "factor", firstname: "Phil" }. Is é sin, ní mór duit ord na mbeirteanna ainm/luacha a stóráil i do dhoiciméid más mian leat a bheith cinnte go bhfaighidh tú iad.

Ná bíodh mearbhall ort "Neamh" и "neamhshainithe"

Luach "neamhshainithe" ní raibh sé bailí riamh i JSON, de réir caighdeán oifigiúil JSON (ECMA-404 Alt 5), cé go n-úsáidtear é i JavaScript. Ina theannta sin, i gcás BSON tá sé imithe i léig agus déantar é a thiontú go $null, nach bhfuil i gcónaí ar réiteach maith. Seachain úsáid a bhaint as "neamhshainithe" i MongoDB.

Úsáid $limit() без $sort()

Go minic agus tú ag forbairt i MongoDB, tá sé úsáideach sampla den toradh a fheiceáil a thabharfar ar ais ó cheist nó ó chomhiomlánú. Chun an tasc seo beidh ort $limit(), ach níor cheart go mbeadh sé sa chód deiridh mura n-úsáideann tú é roimhe seo $sort. Tá an meicneoir seo riachtanach mar ní féidir leat ordú an toraidh a ráthú, agus ní bheidh tú in ann féachaint ar na sonraí go hiontaofa. Ag barr an toraidh gheobhaidh tú iontrálacha éagsúla ag brath ar an sórtáil. Chun oibriú go hiontaofa, ní mór fiosrúcháin agus comhiomláin a bheith cinntitheach, is é sin, na torthaí céanna a tháirgeadh gach uair a dhéantar iad. Cód ina bhfuil $limit(), ach níl $sort, ní bheidh sé cinntitheach agus d'fhéadfadh sé a bheith ina chúis le hearráidí a bheidh deacair a rianú síos.

Conclúid

Is é an t-aon bhealach le bheith díomá le MongoDB ná é a chur i gcomparáid go díreach le cineál eile bunachar sonraí, mar shampla DBMS, nó teacht chun é a úsáid bunaithe ar ionchais áirithe. Tá sé cosúil le oráiste a chur i gcomparáid le forc. Freastalaíonn córais bunachar sonraí ar chuspóirí sonracha. Is fearr na difríochtaí seo a thuiscint agus a thuiscint duit féin. Bheadh ​​​​sé ina náire brú a chur ar fhorbróirí MongoDB thar chosán a chuir iallach orthu síos cosán DBMS. Ba mhaith liom bealaí nua agus suimiúla a fheiceáil chun seanfhadhbanna a réiteach, amhail sláine sonraí a chinntiú agus córais sonraí a chruthú atá athléimneach in aghaidh teip agus ionsaithe mailíseacha.

Is sampla maith é tabhairt isteach MongoDB ar idirbheartaíocht ACID i leagan 4.0 d'fheabhsuithe tábhachtacha a thabhairt isteach ar bhealach nuálaíoch. Tá idirbhearta ildhoiciméad agus ilráitis anois adamhach. Is féidir freisin an t-am a theastaíonn chun glais a fháil agus idirbhearta bhfostú a fhoirceannadh, chomh maith leis an leibhéal leithlis a athrú.

14 rud ba mhaith liom a bheith ar eolas agam sular thosaigh mé le MongoDB

Leigh Nios mo:

Foinse: will.com

Add a comment