Ang MongoDB ba kasagaran ang husto nga pagpili?

Bag-o lang nako nahibal-an kana Gikuha sa Red Hat ang suporta sa MongoDB gikan sa Satellite (ingon nila tungod sa mga pagbag-o sa lisensya). Nakahunahuna ko niini tungod kay sa miaging pipila ka tuig nakakita ako usa ka tonelada nga mga artikulo bahin sa kung unsa ka makalilisang ang MongoDB ug kung giunsa nga wala’y bisan kinsa nga mogamit niini. Apan niining panahona, ang MongoDB nahimong mas hamtong nga produkto. Unsay nahitabo? Ang tanan ba nga pagdumot tungod ba sa mga sayup sa sayo nga pagpamaligya sa usa ka bag-ong DBMS? O ang mga tawo ba naggamit lang sa MongoDB sa sayup nga mga lugar?

Kung gibati nimo nga gidepensahan nako ang MongoDB, palihug basaha disclaimer sa katapusan sa artikulo.

Bag-ong uso

Nagtrabaho ako sa industriya sa software sa daghang mga tuig kaysa sa akong masulti, apan naladlad lang gihapon ako sa gamay nga bahin sa mga uso nga naigo sa among industriya. Akong nasaksihan ang pagsaka sa 4GL, AOP, Agile, SOA, Web 2.0, AJAX, Blockchain... ang listahan walay katapusan. Matag tuig bag-ong mga uso makita. Ang uban dali nga mawala, samtang ang uban sa sukaranan nagbag-o sa paagi sa paghimo sa software.

Ang matag bag-ong uso nagmugna og usa ka kinatibuk-ang kahinam: ang mga tawo mahimong molukso, o makakita sa kasaba nga namugna sa uban ug mosunod sa panon. Kini nga proseso gi-codify ni Gartner sa siklo sa hype. Bisan kung kontrobersyal, kini nga timeline halos naghulagway kung unsa ang mahitabo sa mga teknolohiya sa wala pa kini mahimong mapuslanon.

Apan matag karon ug unya usa ka bag-ong inobasyon ang makita (o adunay ikaduha nga pag-anhi, sama sa kini nga kaso) nga gimaneho sa usa lamang ka piho nga pagpatuman. Sa kaso sa NoSQL, ang hype gidasig pag-ayo sa pagtungha ug meteoric nga pagtaas sa MongoDB. Ang MongoDB wala magsugod niini nga uso: sa pagkatinuod, ang dagkong mga kompanya sa Internet nagsugod sa mga problema sa pagproseso sa daghang mga datos, nga misangpot sa pagbalik sa mga non-relational nga mga database. Ang kinatibuk-ang kalihukan nagsugod sa mga proyekto sama sa Google's Bigtable ug Facebook's Cassandra, apan kini ang MongoDB nga nahimong labing inila ug accessible nga pagpatuman sa database sa NoSQL nga kadaghanan sa mga developers adunay access sa.

Mubo nga sulat: Mahimong maghunahuna ka nga gilibog nako ang mga database sa dokumento nga adunay mga database sa kolumnar, mga tindahan sa yawe/bili, o bisan unsa sa daghang uban pang mga lahi sa mga tindahan sa datos nga nahulog sa ilawom sa kinatibuk-ang kahulugan sa NoSQL. Ug husto ka. Apan niadtong panahona naghari ang kagubot. Ang tanan nahingangha sa NoSQL, nahimo kini nga tanan hingpit nga gikinahanglan, bisan tuod daghan ang wala makakita sa mga kalainan sa lain-laing mga teknolohiya. Alang sa kadaghanan, ang MongoDB nahimo na magkatulad NoSQL.

Ug ang mga nag-develop misulay niini. Ang ideya sa usa ka schemaless database nga magical scales aron masulbad ang bisan unsang problema medyo makatintal. Sa palibot sa 2014, ingon og bisan asa nga usa ka tuig na ang milabay gigamit ang usa ka relational database sama sa MySQL, Postgres o SQL Server nagsugod sa pag-deploy sa mga database sa MongoDB. Kung gipangutana kung ngano, mahimo ka makakuha usa ka tubag gikan sa banal nga "kini ang sukod sa web" hangtod sa labi ka mahunahunaon nga "ang akong datos haw-ang kaayo nga pagkahan-ay ug mohaum pag-ayo sa usa ka database nga wala’y schema."

Importante nga hinumdoman nga ang MongoDB, ug mga database sa dokumento sa kinatibuk-an, makasulbad sa daghang mga problema sa tradisyonal nga relational database:

  • Estrikto nga laraw: Uban sa usa ka relational database, kung ikaw adunay dinamikong namugna nga datos, mapugos ka sa paghimo sa usa ka hugpong sa mga random nga "miscellaneous" nga mga kolum sa datos, pagduso sa mga blobs sa datos didto, o paggamit sa configuration EAV... kining tanan adunay mahinungdanong mga kakulian.
  • Kalisud sa pag-scale: Kung adunay daghan kaayo nga datos nga dili kini mohaum sa usa ka server, ang MongoDB mitanyag ug mga mekanismo aron tugotan kini sa pagsukod sa daghang mga makina.
  • Komplikado nga mga pagbag-o sa sirkito: walay paglalin! Sa usa ka relational database, ang pagbag-o sa istruktura sa database mahimong usa ka dako nga problema (ilabi na kung adunay daghang datos). Ang MongoDB nakahimo sa pagpayano pag-ayo sa proseso. Ug kini naghimo niini nga sayon ​​​​nga mahimo nimo nga i-update ang sirkito samtang ikaw moadto ug magpadayon sa paspas kaayo.
  • Pagrekord sa performance: Maayo ang pasundayag sa MongoDB, labi na kung husto ang pag-configure. Bisan ang out-of-the-box nga pag-configure sa MongoDB, diin kini kanunay nga gisaway, nagpakita sa pipila ka impresibo nga mga numero sa pasundayag.

Ang tanang risgo anaa kanimo

Ang mga potensyal nga benepisyo sa MongoDB dako kaayo, labi na alang sa pipila nga mga klase sa mga problema. Kung gibasa nimo ang lista sa ibabaw nga wala makasabut sa konteksto ug wala’y kasinatian, mahimo nimong makuha ang impresyon nga ang MongoDB tinuod nga usa ka rebolusyonaryo nga DBMS. Ang bugtong problema mao nga ang mga benepisyo nga gilista sa ibabaw nag-uban sa daghang mga caveat, ang pipila niini gilista sa ubos.

Aron patas, walay usa sa 10gen/MongoDB Inc. dili moingon nga ang mosunod dili tinuod, kini mga pagkompromiso lamang.

  • Nawala nga mga transaksyon: Ang mga transaksyon usa ka kinauyokan nga bahin sa daghang relational database (dili tanan, apan kadaghanan). Ang transaksiyon nagpasabot nga makahimo ka ug daghang operasyon sa atomiko ug makaseguro nga ang datos magpabilin nga makanunayon. Siyempre, sa usa ka database sa NoSQL, ang transactionality mahimong sulod sa usa ka dokumento, o mahimo nimong gamiton ang duha ka hugna nga commit aron makakuha og transactional semantics. Apan kinahanglan nimo nga ipatuman kini nga pagpaandar sa imong kaugalingon ... nga mahimo’g usa ka lisud ug makahurot nga buluhaton. Kasagaran dili nimo maamgohan nga adunay problema hangtod makita nimo ang datos sa database nga natapos sa dili balido nga mga estado tungod kay ang atomicity sa mga operasyon dili masiguro. Hinumdomi: Daghang mga tawo ang nagsulti kanako nga ang MongoDB 4.0 nagpaila sa mga transaksyon sa miaging tuig, apan adunay pipila nga mga limitasyon. Ang takeaway gikan sa artikulo nagpabilin nga pareho: pagtimbang-timbang kung unsa ka maayo ang teknolohiya sa pagtagbo sa imong mga panginahanglan.
  • Pagkawala sa relational nga integridad (mga langyaw nga yawe): Kung ang imong data adunay mga relasyon, nan kinahanglan nimo nga i-apply kini sa aplikasyon. Ang pagbaton og database nga nagtahod niini nga mga relasyon magkinahanglan og daghang trabaho sa aplikasyon ug busa ang imong mga programmer.
  • Kakulang sa abilidad sa paggamit sa istruktura sa datos: Ang estrikto nga mga schema usahay mahimong dako nga problema, apan kini usa usab ka gamhanan nga mekanismo alang sa maayo nga pag-istruktura sa datos kon gamiton sa maalamon nga paagi. Ang mga database sa dokumento sama sa MongoDB naghatag og talagsaon nga pagka-flexible sa schema, apan kini nga pagka-flexible nagtangtang sa responsibilidad sa pagpabilin nga limpyo sa datos. Kung dili nimo sila atimanon, mahuman nimo ang pagsulat sa daghang code sa imong aplikasyon aron i-account ang mga datos nga wala gitipig sa porma nga imong gipaabut. Sama sa kanunay namong isulti sa among kompanya nga Simple Thread... ang aplikasyon sa umaabot nga adlaw masulat pag-usab, apan ang datos mabuhi hangtod sa hangtod. Mubo nga sulat: Gisuportahan sa MongoDB ang pagsusi sa eskema: kini mapuslanon, apan wala maghatag parehas nga garantiya sama sa usa ka database nga relational. Una sa tanan, ang pagdugang o pag-ilis sa schema check dili makaapekto sa kasamtangan nga datos sa koleksyon. Anaa kanimo ang pagsiguro nga imong i-update ang datos sumala sa bag-ong schema. Desisyuni sa imong kaugalingon kung igo na ba kini sa imong mga panginahanglan.
  • Lumad nga pangutana nga pinulongan / pagkawala sa ekosistema sa himan: Ang pag-abot sa SQL usa ka hingpit nga rebolusyon ug walay nausab sukad niadto. Kini usa ka labi ka kusgan nga sinultian, apan labi ka komplikado. Ang panginahanglan sa paghimo sa mga pangutana sa database sa usa ka bag-ong lengguwahe nga naglangkob sa mga tipik sa JSON giisip nga usa ka dako nga lakang nga paatras sa mga tawo nga adunay kasinatian sa pagtrabaho sa SQL. Adunay usa ka tibuuk nga uniberso sa mga himan nga nakig-uban sa mga database sa SQL, gikan sa mga IDE hangtod sa mga himan sa pagreport. Ang pagbalhin sa usa ka database nga wala nagsuporta sa SQL nagpasabut nga dili nimo magamit ang kadaghanan sa kini nga mga himan o kinahanglan nimo nga hubaron ang datos sa SQL aron magamit kini, nga mahimong labi ka lisud kaysa sa imong gihunahuna.

Daghang mga developers nga midangop sa MongoDB wala kaayo makasabut sa mga trade-off, ug kanunay nga nag-dive sa una sa pag-instalar niini isip ilang nag-unang data store. Pagkahuman niini kanunay nga lisud kaayo ang pagbalik.

Unsa man unta ang mahimo nga lahi?

Dili tanan ang unang milukso ug naigo sa ubos. Apan daghang mga proyekto ang nag-install sa MongoDB sa mga lugar nga dili gyud angay - ug kinahanglan nila nga magpuyo uban niini sa daghang mga tuig nga moabut. Kon kini nga mga organisasyon migahin ug pipila ka panahon ug paagi sa paghunahuna pinaagi sa ilang mga pagpili sa teknolohiya, daghan unta ang mohimo ug lain-laing mga pagpili.

Unsaon pagpili sa husto nga teknolohiya? Adunay ubay-ubay nga mga pagsulay sa paghimo og sistematikong gambalay alang sa pagtasa sa teknolohiya, sama sa "Framework alang sa pagpaila sa mga teknolohiya ngadto sa mga organisasyon sa software" и "Framework alang sa pagsusi sa mga teknolohiya sa software", apan alang kanako kini dili kinahanglan nga pagkakomplikado.

Daghang mga teknolohiya ang mahimong maalamon nga masusi pinaagi sa pagpangutana lamang sa duha ka sukaranan nga mga pangutana. Ang problema mao ang pagpangita sa mga tawo nga makatubag kanila nga responsable, paggahin og panahon sa pagpangita sa mga tubag ug walay pagpihig.

Kung wala ka nag-atubang sa bisan unsang problema, dili nimo kinahanglan ang usa ka bag-ong himan. Dot.

Pangutana 1: Unsang mga problema ang akong gisulayan nga sulbaron?

Kung wala ka nag-atubang sa bisan unsang problema, dili nimo kinahanglan ang usa ka bag-ong himan. Dot. Dili na kinahanglan pangitaon ug solusyon ug unya mag-imbento ug problema. Gawas kung nakasugat ka og problema nga mas maayo nga nasulbad sa bag-ong teknolohiya kaysa sa imong naglungtad nga teknolohiya, wala’y bisan unsa nga hisgutan dinhi. Kung naghunahuna ka nga gamiton kini nga teknolohiya tungod kay nakita nimo nga gigamit kini sa uban, hunahunaa kung unsang mga problema ang ilang giatubang ug pangutana kung naa ka ba sa mga problema. Sayon ra ang pagdawat sa usa ka teknolohiya tungod kay ang uban naggamit niini, ang hagit mao ang pagsabut kung parehas ba ang imong giatubang nga mga problema.

Pangutana 2: Unsay kulang nako?

Kini siguradong usa ka mas lisud nga pangutana tungod kay kinahanglan nimo nga magkalot ug adunay maayo nga pagsabut sa daan ug bag-ong teknolohiya. Usahay dili gyud nimo masabtan ang usa ka bag-o hangtod nga nakatukod ka usa ka butang uban niini o adunay usa nga adunay kana nga kasinatian.

Kung wala ka, nan makatarunganon nga hunahunaon ang labing gamay nga posible nga pagpamuhunan aron mahibal-an ang kantidad sa kini nga instrumento. Ug sa higayon nga makahimo ka sa pagpamuhunan, unsa ka lisud nga balihon ang desisyon?

Ang mga tawo kanunay nga nagdaot sa tanan

Sa imong pagsulay sa pagtubag niini nga mga pangutana nga walay pagpihig kutob sa mahimo, hinumdomi ang usa ka butang: kinahanglan nimo nga pakigbatokan ang kinaiya sa tawo. Adunay daghang mga pagpihig sa panghunahuna nga kinahanglan mabuntog aron epektibo nga masusi ang teknolohiya. Ania ang pipila lang:

  • Ang epekto sa pag-apil sa kadaghanan - nahibal-an sa tanan ang bahin kaniya, apan lisud gihapon ang pagpakig-away kaniya. Siguruha lang nga ang teknolohiya mohaum gyud sa imong aktwal nga mga panginahanglan.
  • Bag-o nga epekto — Daghang mga developers lagmit nga momenos sa mga teknolohiya nga ilang gitrabahoan sa dugay nga panahon ug magpasobra sa mga benepisyo sa bag-ong teknolohiya. Dili lang kini mga programmer, ang tanan dali nga maapektuhan sa kini nga pagpihig sa panghunahuna.
  • Epekto sa positibo nga mga kinaiya - Kita adunay tendensya nga makita kung unsa ang naa ug makalimtan kung unsa ang kulang. Mahimo kini nga hinungdan sa kagubot kung inubanan sa bag-ong epekto, tungod kay dili lamang nimo gipalabi ang pagpabili sa bag-ong teknolohiya, apan gibalewala usab ang mga kakulangan niini..

Dili sayon ​​ang pagtan-aw sa tumong, apan ang pagsabot sa nagpahiping mga pagpihig sa panghunahuna makatabang kanimo sa paghimo og mas makatarunganon nga mga desisyon.

Sumaryo

Sa matag higayon nga makita ang usa ka kabag-ohan, duha ka pangutana ang kinahanglan nga tubagon uban ang pag-amping:

  • Nakasulbad ba kini nga himan sa usa ka tinuod nga problema?
  • Nakasabot ba kita og maayo sa mga trade-off?

Kung dili ka masaligon nga makatubag niining duha ka mga pangutana, balik og pipila ka mga lakang ug hunahunaa.

Mao ba ang MongoDB bisan ang husto nga kapilian? Siyempre oo; Sama sa kadaghanan sa mga teknolohiya sa engineering, nagdepende kini sa daghang mga hinungdan. Taliwala sa mga mitubag niining duha ka pangutana, daghan ang nakabenepisyo sa MongoDB ug nagpadayon sa pagbuhat niini. Alang niadtong wala, nanghinaut ko nga nakakat-on ka og usa ka bililhon ug dili kaayo sakit nga leksyon mahitungod sa paglihok sa hype cycle.

Disclaimer

Gusto nakong ipatin-aw nga wala koy gugma o pagdumot nga relasyon sa MongoDB. Wala pa kami adunay klase sa mga problema nga labing haum nga sulbaron sa MongoDB. Nahibal-an ko nga ang 10gen/MongoDB Inc. maisogon kaayo sa sinugdanan, nagbutang ug mga insecure nga default ug nagpasiugda sa MongoDB bisan asa (ilabi na sa hackathon) isip usa ka unibersal nga solusyon sa pagtrabaho sa bisan unsang datos. Tingali usa kini ka dili maayo nga desisyon. Apan gipamatud-an niini ang pamaagi nga gihulagway dinhi: kini nga mga problema dali nga makit-an bisan sa usa ka taphaw nga pagsusi sa teknolohiya.

Source: www.habr.com

Idugang sa usa ka comment