Njẹ MongoDB paapaa yiyan ti o tọ?

Mo laipe ri jade wipe Pupa Hat yọ atilẹyin MongoDB kuro lati Satẹlaiti (wọn sọ nitori awọn iyipada iwe-aṣẹ). Eyi jẹ ki n ronu nitori ni awọn ọdun diẹ sẹhin Mo ti rii pupọ ti awọn nkan nipa bii MongoDB ṣe buru ati bii ẹnikan ko gbọdọ lo. Ṣugbọn lakoko yii, MongoDB ti di ọja ti o dagba pupọ diẹ sii. Kini o ti ṣẹlẹ? Ṣe gbogbo ikorira ni otitọ nitori awọn aṣiṣe ni titaja ibẹrẹ ti DBMS tuntun kan? Tabi awọn eniyan n lo MongoDB ni awọn aaye ti ko tọ?

Ti o ba lero pe Mo n gbeja MongoDB, jọwọ ka disclaimer ni opin ti awọn article.

titun aṣa

Mo ti n ṣiṣẹ ni ile-iṣẹ sọfitiwia fun ọdun diẹ sii ju Mo le sọ, ṣugbọn Mo tun ti ṣafihan nikan si apakan kekere ti awọn aṣa ti o ti kọlu ile-iṣẹ wa. Mo ti jẹri igbega ti 4GL, AOP, Agile, SOA, Web 2.0, AJAX, Blockchain ... atokọ naa ko ni ailopin. Ni gbogbo ọdun awọn aṣa tuntun han. Diẹ ninu awọn ni kiakia ipare kuro, nigba ti awon miran ibere yi awọn ọna software ti wa ni idagbasoke.

Gbogbo aṣa tuntun ṣẹda idunnu gbogbogbo: eniyan boya fo lori ọkọ, tabi wo ariwo ti awọn miiran ṣe ati tẹle ogunlọgọ naa. Ilana yii jẹ codified nipasẹ Gartner in aruwo ọmọ. Botilẹjẹpe ariyanjiyan, Ago yii ni aijọju ṣapejuwe ohun ti o ṣẹlẹ si awọn imọ-ẹrọ ṣaaju ki wọn to wulo.

Sugbon lati akoko si akoko a titun ĭdàsĭlẹ han (tabi ni a keji bọ, bi ninu apere yi) ìṣó nipa nikan kan pato imuse. Ninu ọran ti NoSQL, aruwo naa ti ni idari pupọ nipasẹ ifarahan ati dide meteoric ti MongoDB. MongoDB ko bẹrẹ aṣa yii: ni otitọ, awọn ile-iṣẹ Intanẹẹti nla bẹrẹ si ni awọn iṣoro sisẹ data nla, eyiti o yori si ipadabọ ti awọn apoti isura data ti kii ṣe ibatan. Iṣipopada gbogbogbo bẹrẹ pẹlu awọn iṣẹ akanṣe bii Google's Bigtable ati Facebook's Cassandra, ṣugbọn MongoDB ni o di olokiki olokiki julọ ati imuse data NoSQL ti ọpọlọpọ awọn olupilẹṣẹ ni iwọle si.

Akiyesi: O le ro pe Mo n rudurudu awọn apoti isura infomesonu iwe pẹlu awọn apoti isura infomesonu columnar, awọn ile itaja bọtini/iye, tabi eyikeyi ninu ọpọlọpọ awọn iru ile itaja data miiran ti o ṣubu labẹ asọye NoSQL gbogbogbo. Ati pe o tọ. Sugbon ni akoko ti Idarudapọ jọba. Gbogbo eniyan ni ifẹ afẹju pẹlu NoSQL, o ti di gbogbo eniyan Egba pataki, botilẹjẹpe ọpọlọpọ ko rii awọn iyatọ ninu awọn imọ-ẹrọ oriṣiriṣi. Fun ọpọlọpọ, MongoDB ti di bakannaa NoSQL.

Ati awọn Difelopa pounced lori o. Ero ti data data ti ko ni ero ti o ni iwọn idan lati yanju iṣoro eyikeyi jẹ idanwo pupọ. Ni ayika 2014, o dabi enipe nibi gbogbo pe ọdun kan sẹyin lo aaye data ibatan gẹgẹbi MySQL, Postgres tabi SQL Server bẹrẹ lati ran awọn apoti isura data MongoDB lọ. Nigbati a beere idi rẹ, o le gba idahun lati banal “Eyi ni iwọn ti oju opo wẹẹbu” si ironu diẹ sii “data mi ti ni eto ti o rọrun pupọ ati pe o baamu daradara sinu aaye data laisi ero.”

O ṣe pataki lati ranti pe MongoDB, ati awọn apoti isura infomesonu ni gbogbogbo, yanju nọmba awọn iṣoro pẹlu awọn apoti isura data ibatan ibile:

  • Ilana to muna: Pẹlu ibi ipamọ data ibatan, ti o ba ni data ti o ni agbara, o fi agbara mu lati ṣẹda opo kan ti awọn ọwọn data “oriṣiriṣi” ti aileto, ṣabọ awọn abawọn data ninu ibẹ, tabi lo iṣeto ni EAV... gbogbo awọn ti yi ni o ni significant drawbacks.
  • Iṣoro igbelosoke: Ti data ba wa pupọ ti ko baamu lori olupin kan, MongoDB funni ni awọn ọna ṣiṣe lati jẹ ki o ṣe iwọn kọja awọn ero pupọ.
  • Complex Circuit iyipada: ko si awọn ijira! Ninu aaye data ibatan, yiyipada ipilẹ data le jẹ iṣoro nla kan (paapaa nigbati data pupọ ba wa). MongoDB ni anfani lati jẹ ki ilana naa rọrun pupọ. Ati pe o jẹ ki o rọrun pupọ pe o le kan ṣe imudojuiwọn Circuit bi o ṣe lọ ati tẹsiwaju ni iyara pupọ.
  • Gbigbasilẹ išẹ: Iṣe MongoDB dara, paapaa nigbati a tunto daradara. Paapaa iṣeto ni ita-apoti MongoDB, fun eyiti o jẹ atako nigbagbogbo, ṣafihan diẹ ninu awọn nọmba iṣẹ ṣiṣe iwunilori.

Gbogbo awọn ewu wa lori rẹ

Awọn anfani ti o pọju ti MongoDB jẹ nla, pataki fun awọn kilasi awọn iṣoro kan. Ti o ba ka atokọ ti o wa loke laisi agbọye ọrọ-ọrọ ati laisi iriri, o le ni imọran pe MongoDB jẹ DBMS rogbodiyan nitootọ. Iṣoro kan nikan ni pe awọn anfani ti a ṣe akojọ loke wa pẹlu nọmba awọn akiyesi, diẹ ninu eyiti a ṣe akojọ si isalẹ.

Lati ṣe deede, ko si ẹnikan ni 10gen/MongoDB Inc. kii yoo sọ pe atẹle naa kii ṣe otitọ, iwọnyi jẹ awọn adehun nikan.

  • Awọn iṣowo ti o padanuAwọn iṣowo jẹ ẹya pataki ti ọpọlọpọ awọn apoti isura infomesonu ibatan (kii ṣe gbogbo, ṣugbọn pupọ julọ). Idunadura tumọ si pe o le ṣe awọn iṣẹ lọpọlọpọ atomically ati pe o le rii daju pe data naa wa ni ibamu. Nitoribẹẹ, pẹlu aaye data NoSQL kan, iṣowo le wa laarin iwe kan, tabi o le lo awọn adehun ipele-meji lati gba awọn atunmọ idunadura. Ṣugbọn iwọ yoo ni lati ṣe iṣẹ ṣiṣe yii funrararẹ… eyiti o le jẹ iṣẹ ṣiṣe ti o nira ati ti n gba akoko. Nigbagbogbo o ko mọ pe iṣoro kan wa titi ti o fi rii data ninu ibi ipamọ data pari ni awọn ipinlẹ aiṣedeede nitori atomity ti awọn iṣẹ ko le ṣe iṣeduro. Akiyesi: Ọpọlọpọ eniyan sọ fun mi pe MongoDB 4.0 ṣafihan awọn iṣowo ni ọdun to kọja, ṣugbọn pẹlu awọn idiwọn diẹ. Ilọkuro lati nkan naa jẹ kanna: ṣe iṣiro bawo ni imọ-ẹrọ ṣe ba awọn iwulo rẹ daradara.
  • Pipadanu iduroṣinṣin ibatan (awọn bọtini ajeji): Ti data rẹ ba ni awọn ibatan, lẹhinna o yoo ni lati lo wọn ninu ohun elo naa. Nini data data ti o bọwọ fun awọn ibatan wọnyi yoo gba ọpọlọpọ iṣẹ kuro ninu ohun elo naa ati nitori naa awọn olupilẹṣẹ rẹ.
  • Aini ti agbara lati kan data be: Awọn eto ti o muna le jẹ iṣoro nla nigbakan, ṣugbọn wọn tun jẹ ilana ti o lagbara fun iṣeto data to dara ti o ba lo ọgbọn. Awọn apoti isura infomesonu bii MongoDB n pese irọrun ero iyalẹnu, ṣugbọn irọrun yii yọ ojuse fun mimu data di mimọ. Ti o ko ba tọju wọn, iwọ yoo pari kikọ ọpọlọpọ koodu ninu ohun elo rẹ lati ṣe akọọlẹ fun data ti ko tọju ni fọọmu ti o nireti. Gẹgẹbi a ti n sọ nigbagbogbo ni ile-iṣẹ Irọrun Irọrun… ohun elo naa yoo tun kọ ni ọjọ kan, ṣugbọn data naa yoo wa laaye lailai. Akiyesi: MongoDB ṣe atilẹyin ṣiṣe ayẹwo ero: o wulo, ṣugbọn ko pese awọn iṣeduro kanna bi ninu aaye data ibatan. Ni akọkọ, fifi kun tabi yiyipada ayẹwo eto ko ni ipa lori data to wa ninu gbigba. O wa si ọ lati rii daju pe o ṣe imudojuiwọn data ni ibamu si ero tuntun naa. Pinnu fun ara rẹ boya eyi to fun awọn aini rẹ.
  • Ede ibeere abinibi / isonu ti ilolupo irinṣẹ: Awọn dide ti SQL je ohun idi Iyika ati ohunkohun ti yi pada niwon lẹhinna. O jẹ ede ti o lagbara ti iyalẹnu, ṣugbọn o tun jẹ eka pupọ. Iwulo lati kọ awọn ibeere data ni ede titun ti o ni awọn ajẹkù JSON ni a gba bi igbesẹ nla sẹhin nipasẹ awọn eniyan ti o ni iriri ṣiṣẹ pẹlu SQL. Gbogbo agbaye ti awọn irinṣẹ wa ti o nlo pẹlu awọn apoti isura data SQL, lati awọn IDE si awọn irinṣẹ ijabọ. Lilọ si ibi ipamọ data ti ko ṣe atilẹyin SQL tumọ si pe o ko le lo pupọ julọ awọn irinṣẹ wọnyi tabi o ni lati tumọ data si SQL lati lo wọn, eyiti o le nira ju bi o ti ro lọ.

Ọpọlọpọ awọn olupilẹṣẹ ti o yipada si MongoDB ko loye awọn iṣowo-pipade gaan, ati nigbagbogbo ṣabọ headfirst sinu fifi sori ẹrọ bi ile itaja data akọkọ wọn. Lẹhin ti yi o je igba ti iyalẹnu soro lati pada wa.

Kini o le ti ṣe yatọ si?

Ko gbogbo eniyan fo headfirst o si lu isalẹ. Ṣugbọn ọpọlọpọ awọn iṣẹ akanṣe ti fi sori ẹrọ MongoDB ni awọn aaye nibiti o rọrun ko baamu - ati pe wọn yoo ni lati gbe pẹlu rẹ fun ọpọlọpọ ọdun ti mbọ. Ti awọn ile-iṣẹ wọnyi ba ti lo akoko diẹ ati ronu ni ọna nipasẹ awọn yiyan imọ-ẹrọ wọn, ọpọlọpọ yoo ti ṣe awọn yiyan oriṣiriṣi.

Bawo ni lati yan imọ-ẹrọ to tọ? Awọn igbiyanju pupọ ti wa lati ṣẹda ilana eto fun igbelewọn imọ-ẹrọ, bii "Ilana fun iṣafihan awọn imọ-ẹrọ sinu awọn ẹgbẹ sọfitiwia” и "Ilana fun iṣiro awọn imọ-ẹrọ sọfitiwia”, ṣugbọn o dabi si mi pe eyi jẹ idiju ti ko wulo.

Ọpọlọpọ awọn imọ-ẹrọ ni a le ṣe ayẹwo ni oye nipa bibeere awọn ibeere ipilẹ meji nikan. Iṣoro naa ni wiwa awọn eniyan ti o le dahun wọn ni ifojusọna, mu akoko lati wa awọn idahun ati laisi abosi.

Ti o ko ba koju eyikeyi iṣoro, iwọ ko nilo ohun elo tuntun kan. Dot.

Ibeere 1: Awọn iṣoro wo ni MO n gbiyanju lati yanju?

Ti o ko ba koju eyikeyi iṣoro, iwọ ko nilo ohun elo tuntun kan. Dot. Ko si ye lati wa ojutu kan ati lẹhinna ṣẹda iṣoro kan. Ayafi ti o ba ti dojuko iṣoro kan ti imọ-ẹrọ tuntun yanju ni pataki dara julọ ju imọ-ẹrọ ti o wa tẹlẹ, ko si nkankan lati jiroro nibi. Ti o ba n ronu nipa lilo imọ-ẹrọ yii nitori pe o ti rii pe awọn miiran lo, ronu awọn iṣoro wo ni wọn koju ki o beere boya o ni awọn iṣoro yẹn. O rọrun lati gba imọ-ẹrọ kan nitori pe awọn miiran nlo rẹ, ipenija ni oye boya o dojuko awọn iṣoro kanna.

Ibeere 2: Kini mo sonu?

Eyi jẹ dajudaju ibeere ti o nira diẹ sii nitori iwọ yoo ni lati ma wà sinu ati ni oye ti o dara ti mejeeji atijọ ati imọ-ẹrọ tuntun. Nigba miiran o ko le loye tuntun kan titi ti o fi kọ nkan pẹlu rẹ tabi ni ẹnikan ti o ni iriri yẹn.

Ti o ko ba ni bẹni, lẹhinna o jẹ oye lati ronu nipa idoko-owo ti o kere ju lati pinnu iye ohun elo yii. Ati ni kete ti o ba ṣe idoko-owo naa, bawo ni yoo ṣe ṣoro lati yi ipinnu pada?

Eniyan nigbagbogbo ba ohun gbogbo jẹ

Bi o ṣe n gbiyanju lati dahun awọn ibeere wọnyi ni aiṣojusọna bi o ti ṣee ṣe, ranti ohun kan: iwọ yoo ni lati ja ẹda eniyan ja. Nọmba awọn aiṣedeede oye ti o gbọdọ bori lati ṣe iṣiro imọ-ẹrọ ni imunadoko. Eyi ni diẹ diẹ:

  • Awọn ipa ti dida awọn poju - gbogbo eniyan mọ nipa rẹ, ṣugbọn o tun soro lati ja a. Kan rii daju pe imọ-ẹrọ ni ibamu pẹlu awọn iwulo gangan rẹ.
  • Ipa aratuntun - Ọpọlọpọ awọn olupilẹṣẹ ṣọ lati ṣe aibikita awọn imọ-ẹrọ ti wọn ti ṣiṣẹ pẹlu igba pipẹ ati apọju awọn anfani ti imọ-ẹrọ tuntun. Kii ṣe awọn olupilẹṣẹ nikan, gbogbo eniyan ni ifaragba si aiṣedeede imọ yii.
  • Ipa ti awọn abuda rere - A ṣọ lati wo ohun ti o wa ati ki o padanu oju ohun ti o padanu. Eyi le ja si rudurudu nigbati o ba ni idapo pẹlu ipa aratuntun, nitori kii ṣe pe iwọ nikan ni imọ-jinlẹ bori imọ-ẹrọ tuntun, ṣugbọn tun foju kọju awọn aito rẹ.

Iwadii idi ko rọrun, ṣugbọn agbọye awọn aiṣedeede oye ti o wa ni ipilẹ yoo ṣe iranlọwọ fun ọ lati ṣe awọn ipinnu onipin diẹ sii.

Akopọ

Nigbakugba ti imotuntun ba han, awọn ibeere meji gbọdọ wa ni idahun pẹlu iṣọra nla:

  • Ṣe ọpa yii yanju iṣoro gidi kan?
  • Njẹ a loye awọn iṣowo-owo daradara?

Ti o ko ba le ni igboya dahun awọn ibeere meji wọnyi, ṣe awọn igbesẹ diẹ sẹhin ki o ronu.

Nitorinaa MongoDB paapaa yiyan ti o tọ? Dajudaju bẹẹni; Gẹgẹbi ọpọlọpọ awọn imọ-ẹrọ imọ-ẹrọ, eyi da lori ọpọlọpọ awọn ifosiwewe. Lara awọn ti o dahun awọn ibeere meji wọnyi, ọpọlọpọ ti ni anfani lati MongoDB ati tẹsiwaju lati ṣe bẹ. Fun awọn ti ko ṣe, Mo nireti pe o kọ ẹkọ ti o niyelori ati pe ko ni irora pupọ nipa gbigbe nipasẹ ọna aruwo.

AlAIgBA

Mo fẹ lati ṣalaye pe Emi ko ni ifẹ tabi ibatan ikorira pẹlu MongoDB. A ko tii ni iru awọn iṣoro ti MongoDB dara julọ lati yanju. Mo mọ pe 10gen/MongoDB Inc. jẹ igboya pupọ ni akọkọ, ṣeto awọn aṣiṣe ti ko ni aabo ati igbega MongoDB nibi gbogbo (paapaa ni awọn hackathons) bi ojutu gbogbo agbaye fun ṣiṣẹ pẹlu eyikeyi data. O ṣee ṣe ipinnu buburu kan. Ṣugbọn o jẹrisi ọna ti a ṣalaye nibi: awọn iṣoro wọnyi le ṣee wa-ri ni iyara paapaa pẹlu igbelewọn elege ti imọ-ẹrọ.

orisun: www.habr.com

Fi ọrọìwòye kun