Paratowyd y cyfieithiad o'r erthygl ar y noson cyn dechrau'r cwrs
Uchafbwyntiau:
- Mae'n hynod bwysig datblygu sgema er ei fod yn ddewisol yn MongoDB.
- Yn yr un modd, rhaid i fynegeion gyd-fynd â'ch sgema a'ch patrymau mynediad.
- Ceisiwch osgoi defnyddio gwrthrychau mawr ac araeau mawr.
- Byddwch yn ofalus gyda gosodiadau MongoDB, yn enwedig o ran diogelwch a dibynadwyedd.
- Nid oes gan MongoDB optimizer ymholiad, felly rhaid i chi fod yn ofalus wrth berfformio gweithrediadau ymholiad.
Rwyf wedi bod yn gweithio gyda chronfeydd data ers amser maith, ond dim ond yn ddiweddar y darganfuwyd MongoDB. Mae yna ychydig o bethau yr hoffwn pe bawn i'n eu gwybod cyn i mi ddechrau gweithio gydag ef. Pan fydd gan berson brofiad mewn maes penodol eisoes, mae ganddo ragdybiaethau ynghylch beth yw cronfeydd data a beth mae'n ei wneud. Yn y gobaith o'i gwneud hi'n haws i eraill ddeall, rwy'n cyflwyno rhestr o gamgymeriadau cyffredin.
Creu gweinydd MongoDB heb ddilysu
Yn anffodus, mae MongoDB wedi'i osod heb ddilysu yn ddiofyn. Ar gyfer gweithfan y ceir mynediad iddi'n lleol, mae'r arfer hwn yn normal. Ond gan fod MongoDB yn system aml-ddefnyddiwr sy'n hoffi defnyddio llawer iawn o gof, bydd yn well ei roi ar weinydd gyda chymaint o RAM â phosib, hyd yn oed os mai dim ond ar gyfer datblygu y byddwch chi'n ei ddefnyddio. Gall gosod ar y gweinydd trwy'r porth rhagosodedig fod yn broblemus, yn enwedig os gellir gweithredu unrhyw god javascript yn y cais (er enghraifft, $where
fel syniad ar gyfer
Mae yna sawl dull dilysu, ond yr hawsaf yw gosod ID defnyddiwr / cyfrinair. Defnyddiwch y syniad hwn wrth i chi feddwl am ddilysu ffansi yn seiliedig ar
Peidiwch ag anghofio rhwymo'r wyneb ymosod i MongoDB
,
neu
. Gan nad yw ffeiliau data wedi'u hamgryptio yn MongoDB safonol, mae'n gwneud synnwyr rhedeg MongoDB gyda nhw
Gwall wrth ddatblygu'r gylched
Nid yw MongoDB yn defnyddio sgema. Ond nid yw hyn yn golygu nad oes angen y cynllun. Os ydych chi eisiau storio dogfennau heb unrhyw batrwm cyson, gall eu storio fod yn gyflym ac yn hawdd, ond gall fod yn anodd eu hadalw yn ddiweddarach.
Erthygl glasurol "
Peidiwch ag anghofio y drefn
Gall anghofio trefn ddidoli achosi mwy o rwystredigaeth a gwastraffu mwy o amser nag unrhyw ffurfweddiad anghywir arall. Yn ddiofyn mae MongoBD yn defnyddio
Creu casgliadau gyda dogfennau mawr
Mae MongoDB yn hapus i gynnal dogfennau mawr hyd at 16MB mewn casgliadau, a
Creu dogfennau gydag araeau mawr
Gall dogfennau gynnwys araeau. Mae'n well os yw nifer yr elfennau yn yr arae ymhell o fod yn rhif pedwar digid. Os caiff elfennau eu hychwanegu at arae yn aml, bydd yn tyfu'n rhy fawr i'r ddogfen sy'n ei chynnwys a bydd angen iddi fod
Mae gan MongoDB rywbeth o'r enw
Efallai y byddwch chi'n meddwl y gallwch chi wneud heb fynegeio arae. Yn anffodus, gall diffyg mynegeion achosi problemau eraill i chi. Gan fod dogfennau'n cael eu sganio o'r dechrau i'r diwedd, bydd chwilio am elfennau ar ddiwedd yr arae yn cymryd mwy o amser, a bydd y rhan fwyaf o weithrediadau sy'n gysylltiedig â dogfen o'r fath yn
Peidiwch ag anghofio bod trefn y camau mewn cydgrynhoi yn bwysig
Mewn system cronfa ddata gydag optimizer ymholiad, mae'r ymholiadau rydych chi'n eu hysgrifennu yn esboniadau o'r hyn rydych chi am ei gael, nid sut i'w gael. Mae'r mecanwaith hwn yn gweithio trwy gyfatebiaeth ag archebu mewn bwyty: fel arfer rydych chi'n archebu pryd yn unig, ac nid yw'n rhoi cyfarwyddiadau manwl i'r cogydd.
Yn MongoDB, rydych chi'n cyfarwyddo'r cogydd. Er enghraifft, mae angen i chi sicrhau bod y data'n mynd drwodd reduce
cyn gynted â phosibl ar y gweill gan ddefnyddio $match
и $project
, a didoli yn digwydd dim ond ar ôl reduce
, a bod y chwiliad yn digwydd yn yr union drefn rydych chi ei eisiau. Gall cael optimizer ymholiad sy'n dileu gwaith diangen, yn dilyniannu camau yn y ffordd orau bosibl, ac yn dewis mathau o uno eich difetha. Gyda MongoDB, mae gennych fwy o reolaeth ar gost hwylustod.
Offer fel
Defnyddio Recordio Cyflym
Peidiwch byth â gosod opsiynau ysgrifennu MongoDB i gael cyflymder uchel ond dibynadwyedd isel. Y modd hwn "ffeil-ac-anghofio" ymddangos yn gyflym oherwydd bod y gorchymyn yn cael ei ddychwelyd cyn i'r ysgrifennu ddigwydd. Os bydd y system yn chwalu cyn i'r data gael ei ysgrifennu ar ddisg, bydd yn cael ei golli ac yn y pen draw mewn cyflwr anghyson. Yn ffodus, mae MongoDB 64-bit wedi galluogi logio.
Mae'r peiriannau storio MMAPv1 a WiredTiger yn defnyddio logio i atal hyn, er y gall WiredTiger adfer i'r cysonyn olaf
Mae cyfnodolion yn sicrhau bod y gronfa ddata mewn cyflwr cyson ar ôl ei hadfer ac yn cadw'r holl ddata nes iddo gael ei ysgrifennu i'r dyddlyfr. Mae amlder recordiadau yn cael ei ffurfweddu gan ddefnyddio'r paramedr
.
I fod yn sicr o'r cofnodion, gwnewch yn siŵr bod mewngofnodi wedi'i alluogi yn y ffeil ffurfweddu
, ac mae amlder y recordiadau yn cyfateb i faint o wybodaeth y gallwch fforddio ei golli.
Didoli heb fynegai
Wrth chwilio a chydgrynhoi, yn aml mae angen didoli data. Gobeithio y gwneir hyn yn un o'r camau olaf, ar ôl hidlo'r canlyniad er mwyn lleihau faint o ddata sy'n cael ei ddidoli. A hyd yn oed yn yr achos hwn, ar gyfer didoli bydd angen ichi
Os nad oes mynegai addas, bydd MongoDB yn gwneud hebddo. Mae terfyn cof o 32 MB ar gyfanswm maint yr holl ddogfennau yn
Chwilio heb gefnogaeth mynegai
Mae ymholiadau chwilio yn cyflawni swyddogaeth debyg i'r gweithrediad JOIN yn SQL. Er mwyn gweithio orau, mae angen mynegai gwerth yr allwedd a ddefnyddir fel yr allwedd dramor arnynt. Nid yw hyn yn amlwg oherwydd nid yw'r defnydd yn cael ei adlewyrchu yn explain()
. Mae mynegeion o'r fath yn ychwanegol at y mynegai a ysgrifennwyd ynddo explain()
, sydd yn ei dro yn cael ei ddefnyddio gan weithredwyr piblinellau $match
и $sort
, pan fyddant yn cyfarfod ar ddechrau'r biblinell. Gall mynegeion yn awr gwmpasu unrhyw gam
Optio allan o ddefnyddio aml-ddiweddariadau
Dull
a ddefnyddir i newid rhan o ddogfen bresennol neu'r ddogfen gyfan, hyd at un newydd yn ei lle, yn dibynnu ar y paramedr a nodir gennych
. Yr hyn sydd ddim mor amlwg yw na fydd yn prosesu pob dogfen yn y casgliad oni bai eich bod yn gosod yr opsiwn
diweddaru'r holl ddogfennau sy'n bodloni'r meini prawf cais.
Peidiwch ag anghofio pwysigrwydd trefn yr allweddi mewn tabl hash
Yn JSON, mae gwrthrych yn cynnwys casgliad heb ei drefnu o faint sero neu fwy o barau enw/gwerth, lle mae enw yn llinyn a gwerth yn llinyn, rhif, boolean, nwl, gwrthrych, neu arae.
Yn anffodus, mae BSON yn rhoi llawer o bwyslais ar drefn wrth chwilio. Yn MongoDB, trefn yr allweddi o fewn gwrthrychau adeiledig { firstname: "Phil", surname: "factor" }
- nid yw hyn yr un peth â { { surname: "factor", firstname: "Phil" }
. Hynny yw, mae'n rhaid i chi storio trefn y parau enw/gwerth yn eich dogfennau os ydych am fod yn sicr o ddod o hyd iddynt.
Peidiwch â drysu "Null" и "anniffiniedig"
Gwerth "anniffiniedig" erioed yn ddilys yn JSON, yn ôl $null
, nad yw bob amser yn ateb da.
Defnyddio $limit()
без $sort()
Yn aml iawn pan fyddwch chi'n datblygu yn MongoDB, mae'n ddefnyddiol gweld sampl o'r canlyniad a fydd yn cael ei ddychwelyd o ymholiad neu gydgrynhoad. Ar gyfer y dasg hon bydd angen $limit()
, ond ni ddylai byth fod yn y cod terfynol oni bai eich bod yn ei ddefnyddio o'r blaen $sort
. Mae'r mecanig hwn yn angenrheidiol oherwydd fel arall ni allwch warantu trefn y canlyniad, ac ni fyddwch yn gallu gweld y data yn ddibynadwy. Ar frig y canlyniad fe gewch chi gofnodion gwahanol yn dibynnu ar y didoli. Er mwyn gweithio'n ddibynadwy, rhaid i ymholiadau a chydgrynhoi fod yn benderfynyddol, hynny yw, cynhyrchu'r un canlyniadau bob tro y cânt eu gweithredu. Cod sy'n cynnwys $limit()
, ond na $sort
, ni fydd yn benderfyniaethol a gall wedyn achosi gwallau a fydd yn anodd eu holrhain.
Casgliad
Yr unig ffordd i fod yn siomedig â MongoDB yw ei gymharu'n uniongyrchol â math arall o gronfa ddata, fel DBMS, neu ddod i'w ddefnyddio yn seiliedig ar rai disgwyliadau. Mae fel cymharu oren i fforc. Mae systemau cronfa ddata yn gwasanaethu dibenion penodol. Mae'n well deall a gwerthfawrogi'r gwahaniaethau hyn drosoch eich hun. Byddai'n drueni rhoi pwysau ar ddatblygwyr MongoDB dros lwybr a oedd yn eu gorfodi i lawr llwybr DBMS. Rwyf am weld ffyrdd newydd a diddorol o ddatrys hen broblemau, megis sicrhau cywirdeb data a chreu systemau data sy'n gallu gwrthsefyll methiant ac ymosodiadau maleisus.
Mae cyflwyniad MongoDB o drafodion ACID yn fersiwn 4.0 yn enghraifft dda o gyflwyno gwelliannau pwysig mewn ffordd arloesol. Mae trafodion aml-ddogfen ac aml-ddatganiad bellach yn atomig. Mae hefyd yn bosibl addasu'r amser sydd ei angen i gaffael cloeon a therfynu trafodion sownd, yn ogystal â newid y lefel ynysu.
Darllen mwy:
Ffynhonnell: hab.com