Wergera gotarê di êvara destpêkirina kursê de hat amadekirin
Nîşaneyên balkêş:
- Her çend ew di MongoDB de vebijarkî be jî pêşvebirina nexşeyek zehf girîng e.
- Bi vî rengî, pêdivî ye ku pêdekek bi şema û şêwazên gihîştina we re têkildar be.
- Ji karanîna tiştên mezin û rêzikên mezin dûr bixin.
- Bi mîhengên MongoDB re hişyar bin, nemaze dema ku ew bi ewlehî û pêbaweriyê tê.
- MongoDB xwedan optimîzatorek pirsê nîne, ji ber vê yekê divê hûn gava ku hûn karên pirsnameyê dikin baldar bin.
Ez demek pir dirêj bi databasan re dixebitim, lê tenê vê dawiyê MongoDB keşif kir. Çend tişt hene ku ez dixwazim berî ku ez bi wê re dest bi xebatê bikim bizanim. Gava ku kesek berê xwedan ezmûnek di qadekî diyarkirî de ye, ew di derheqê databasan de çi ne û ew çi dikin têgînên pêşîn hene. Bi hêviya ku ez ji yên din re hêsantir fêm bikim, ez navnîşek xeletiyên hevpar pêşkêşî dikim.
Afirandina serverek MongoDB bêyî pejirandinê
Mixabin, MongoDB bêyî pejirandinê ji hêla xwerû ve hatî saz kirin. Ji bo stasyonek xebatê ya ku bi herêmî tê gihîştin, ev pratîk normal e. Lê ji ber ku MongoDB pergalek pir-bikarhêner e ku hez dike mîqdarên mezin ên bîranînê bikar bîne, heke hûn wê bi qasî ku gengaz be li ser serverek bi RAM-ê bi qasî ku pêkan e, çêtir be, hetta hûn ê tenê wê ji bo pêşkeftinê bikar bînin. Sazkirina li ser serverê bi riya porta xwerû dikare pirsgirêk be, nemaze heke kodek javascript dikare di daxwazê de were darve kirin (mînak, $where
wekî ramanek ji bo
Gelek rêbazên erêkirinê hene, lê ya herî hêsan ev e ku meriv ID / şîfreyek bikarhênerek saz bike. Vê ramanê bikar bînin dema ku hûn li ser bingeha pejirandina xeyalî difikirin
Ji bîr nekin ku rûyê êrîşê bi MongoDB ve girêdin
,
an
. Ji ber ku pelên daneyê di MongoDB standard de ne şîfrekirî ne, maqûl e ku meriv MongoDB bi rêve bibe
Di dema pêşdebirina çerxê de çewtî
MongoDB nexşeyek bikar tîne. Lê ev nayê wê wateyê ku plan ne hewce ye. Heke hûn tenê dixwazin belgeyan bêyî şêwazek domdar hilînin, hilanîna wan dikare zû û hêsan be, lê paşde kişandina wan dikare dijwar be.
Gotara klasîk "
Rêbaza celebê ji bîr nekin
Jibîrkirina rêzika cûrbecûr dikare ji her mîhengên din ên nerast zêdetir bibe sedema xemgîniyê û windakirina demê. Bi xwerû MongoBD bikar tîne
Bi belgeyên mezin berhevokan biafirînin
MongoDB kêfxweş e ku belgeyên mezin heya 16MB di berhevokan de mêvandar dike, û
Afirandina belgeyan bi rêzikên mezin
Belgeyên dikarin array hene. Baştir e ku hejmara hêmanên di rêzê de ji jimareyek çar-reqemî dûr be. Ger hêmanên pir caran li rêzikekê werin zêdekirin, ew ê ji belgeya ku tê de ye mezintir bibe û pêdivî ye ku bibe
MongoDB tiştek jê re tê gotin
Hûn dikarin bifikirin ku hûn dikarin bêyî nîşankirina array bikin. Mixabin, nebûna indexan dibe ku hûn bibin sedema pirsgirêkên din. Ji ber ku belge ji destpêkê heya dawiyê têne skankirin, lêgerîna hêmanên li dawiya rêzê dê demek dirêj dirêj bike, û piraniya operasyonên ku bi belgeyek weha re têkildar in dê bibin
Ji bîr nekin ku rêza qonaxên di kombûnê de girîng e
Di pergalek databasê de bi optimîzatorek pirsê re, pirsên ku hûn dinivîsin ravekirina tiştên ku hûn dixwazin bistînin ne, ne ku meriv wê çawa bigire. Ev mekanîzma bi fermankirina li xwaringehekê re bi analogî dixebite: bi gelemperî hûn tenê xwarinek ferman dikin, û rêwerzên berfireh nadin aşpêj.
Di MongoDB de, hûn şîretan didin xwarinçêker. Mînakî, hûn hewce ne ku pê ewle bin ku dane derbas dibin reduce
wek zû di boriyê de bi kar tînin $match
и $project
, û veqetandin tenê piştî pêk tê reduce
, û ku lêgerîn tam bi rêza ku hûn dixwazin pêk tê. Xwedî optimîzatorek pirsê ya ku xebata nehewce ji holê radike, gavan bi rengek çêtirîn rêz dike, û celebên tevlêbûnê hildibijêre dikare we xera bike. Bi MongoDB re, hûn bi lêçûna rehetiyê bêtir xwedan kontrol in.
Amûrên mîna
Bikaranîna Tomarkirina Bilez
Tu carî vebijarkên nivîsandinê yên MongoDB destnîşan nekin ku xwedî leza bilind lê pêbaweriya hindik bin. Ev mode "pel-û-jibîrkirin" zû xuya dike ji ber ku ferman berî nivîsandinê tê vegerandin. Ger pergal berî ku dane li ser dîskê were nivîsandin têk bibe, ew ê winda bibe û di rewşek nelihev de bimîne. Xwezî, 64-bit MongoDB têketin çalak kiriye.
Motorên hilanînê MMAPv1 û WiredTiger ji bo pêşîlêgirtina vê yekê têketinê bikar tînin, her çend WiredTiger dikare heya domdariya paşîn vegere.
Rojnamegerî piştrast dike ku databas piştî başbûnê di rewşek domdar de ye û hemî daneyan digire heya ku ew li têketinê were nivîsandin. Frekansa tomarkirinê bi karanîna parametreyê ve tê mîheng kirin
.
Ji bo ku hûn ji navnîşan piştrast bibin, pê ewle bine ku têketin di pelê veavakirinê de çalak e
, û frekansa tomarkirinê bi qasî agahdariya ku hûn dikarin winda bikin re têkildar e.
Rêzkirina bê index
Dema ku lêgerîn û berhev kirin, pir caran hewcedarî bi rêzkirina daneyan heye. Em hêvî dikin ku ev yek di yek ji qonaxên paşîn de, piştî fîlterkirina encamê, ji bo kêmkirina mîqdara daneyên ku têne veqetandin, were kirin. Û tewra di vê rewşê de, ji bo dabeşkirinê hûn ê hewce bibin
Ger navnîşek maqûl tune, MongoDB dê bêyî wê bike. Li ser mezinahiya giştî ya hemî belgeyên tê de sînorek bîranînê 32 MB heye
Lêgerîna bêyî piştgiriya index
Pirsên lêgerînê fonksiyonek mîna operasyona JOIN di SQL de pêk tînin. Ji bo ku çêtirîn bixebitin, hewcedariya wan bi nîşaneya nirxa mifteya ku wekî mifteya biyanî tê bikar anîn heye. Ev ne diyar e ji ber ku karanîna di nav de nayê xuyang kirin explain()
. Nîşaneyên weha ji bilî îndeksa ku tê de hatî nivîsandin hene explain()
, ku di encamê de ji hêla operatorên lûleyê ve tê bikar anîn $match
и $sort
, gava ku ew di destpêka boriyê de dicivin. Endeks êdî dikarin her qonaxekê veşêrin
Vejirandina ji karanîna pir-nûvekirinên
Rêbaz
ji bo guheztina beşek ji belgeyek heyî an tevahiya belgeyê, heya bi tevahî veguheztin, li gorî pîvana ku hûn diyar dikin tê bikar anîn.
. Tiştê ku ne ew qas eşkere ye ev e ku ew ê hemî belgeyên di berhevokê de pêvajo neke heya ku hûn vebijarkê destnîşan nekin
ji bo nûvekirina hemî belgeyên ku pîvanên daxwaznameyê bicîh dikin.
Girîngiya rêza kilîtan di tabloyek haş de ji bîr nekin
Di JSON de, hêmanek ji berhevokek ne rêzkirî ya mezinahiya sifir an jî zêdetir cotên nav/nirx pêk tê, ku nav rêzek e û nirx rêzek, hejmar, boolean, null, tişt, an rêzek e.
Mixabin, BSON di dema lêgerînê de gelek giraniyê dide rêzê. Di MongoDB de, rêza bişkokan di nav tiştên çêkirî de { firstname: "Phil", surname: "factor" }
- ev ne wek hev e { { surname: "factor", firstname: "Phil" }
. Ango, heke hûn dixwazin ji dîtina wan piştrast bin, divê hûn rêza cotên nav / nirxê di belgeyên xwe de hilînin.
Ne şaş be "Null" и "nedîyar"
nirxê "nedîyar" Li gorî, di JSON de qet derbas nebû $null
, ku her gav ne çareseriyek baş e.
Bikar bînin $limit()
bêyî $sort()
Pir caran gava ku hûn li MongoDB pêşve diçin, kêrhatî ye ku meriv tenê nimûneyek encama ku dê ji pirsek an berhevokek vegere were dîtin. Ji bo vê peywirê hûn ê hewce bibin $limit()
, lê divê ew çu carî di koda paşîn de nebe heya ku hûn berê wê bikar neynin $sort
. Ev mekanîka pêdivî ye ji ber ku wekî din hûn nekarin rêza encamê garantî bikin, û hûn ê nikaribin bi pêbawer daneyan bibînin. Li jorê encamê hûn ê li gorî rêzkirinê navnîşên cûda bistînin. Ji bo ku bi pêbawer bixebitin, pirs û kombûn divê diyarker bin, ango her gava ku têne darve kirin heman encaman derxînin. Koda ku tê de heye $limit()
, lê na $sort
, dê ne diyarker be û dibe ku paşê bibe sedema xeletiyên ku peydakirina wan dijwar be.
encamê
Awayê yekane ku meriv ji MongoDB bêhêvî dibe ev e ku meriv wê rasterast bi celebek din a databasê, wek DBMS-ê, berhev bike, an jî li ser bingeha hin hêviyên wê bikar bîne. Mîna berawirdkirina pirteqalekê û çilmisê ye. Pergalên databasê ji armancên taybetî re xizmetê dikin. Çêtir e ku meriv van cûdahiyan ji xwe re bi tenê fêm bike û binirxîne. Dê şerm be ku meriv zextê li pêşdebirên MongoDB bike li ser rêyek ku wan neçar kir ku rêça DBMS dakevin. Ez dixwazim rêyên nû û balkêş ji bo çareserkirina pirsgirêkên kevin bibînim, wek mînak misogerkirina yekparebûna daneyê û afirandina pergalên daneyê yên ku li hember têkçûn û êrişên xerab berxwedêr in.
Danasîna MongoDB ya danûstendina ACID-ê di guhertoya 4.0 de mînakek baş e ji bo danasîna pêşkeftinên girîng bi rengek nûjen. Danûstandinên pir-belge û pir-daxuyan êdî atomî ne. Di heman demê de gengaz e ku meriv wextê ku ji bo bidestxistina qefleyan û bidawîkirina danûstendinên asê maye, û her weha asta îzolasyonê biguhezîne.
Zêdetir bixwînin:
Source: www.habr.com