Èske MongoDB te jeneralman bon chwa a?

Mwen fèk dekouvri sa Red Hat retire sipò MongoDB nan Satellite (yo di akòz chanjman lisans). Sa a te fè m 'reflechi paske nan dènye ane yo mwen te wè yon tòn atik sou ki jan terib MongoDB se ak ki jan pèsonn pa ta dwe janm sèvi ak li. Men, pandan tan sa a, MongoDB te vin tounen yon pwodwi pi plis matirite. sak pase? Èske tout rayisman an reyèlman akòz erè nan maketing la byen bonè nan yon nouvo DBMS? Oswa èske moun yo jis itilize MongoDB nan move kote?

Si w santi m ap defann MongoDB, tanpri li egzijans responsablite nan fen atik la.

Nouvo tandans

Mwen te travay nan endistri lojisyèl pou plis ane ke mwen ka di, men mwen te toujou sèlman te ekspoze a yon ti pòsyon nan tandans yo ki te frape endistri nou an. Mwen te temwen ogmantasyon nan 4GL, AOP, Agile, SOA, Web 2.0, AJAX, Blockchain ... lis la se kontinuèl. Chak ane, nouvo tandans parèt. Gen kèk byen vit fennen lwen, pandan ke lòt yo fondamantalman chanje fason yo devlope lojisyèl an.

Chak nouvo tandans kreye yon eksitasyon jeneral: moun swa sote sou tablo, oswa wè bri lòt moun yo pwodwi epi swiv foul moun yo. Pwosesis sa a kodifye pa Gartner nan sik battage. Malgre ke kontwovèsyal, delè sa a apeprè dekri sa k ap pase nan teknoloji anvan yo evantyèlman vin itil.

Men, de tan zan tan yon nouvo inovasyon parèt (oswa gen yon dezyèm vini, tankou nan ka sa a) kondwi pa sèlman yon aplikasyon espesifik. Nan ka a nan NoSQL, battage a te lou kondwi pa Aparisyon an ak ogmantasyon meteyorik nan MongoDB. MongoDB pa t 'kòmanse tandans sa a: an reyalite, gwo konpayi entènèt yo te kòmanse gen pwoblèm trete gwo kantite done, ki te mennen nan retounen nan baz done ki pa relasyon. Mouvman an jeneral te kòmanse ak pwojè tankou Google a Bigtable ak Facebook a Cassandra, men se MongoDB ki te vin aplikasyon baz done NoSQL ki pi koni ak aksesib ke pifò devlopè yo te gen aksè a.

Remak: Ou ka panse ke mwen konfonn baz done dokiman ak baz done kolòn, magazen kle/valè, oswa nenpòt nan anpil lòt kalite magazen done ki tonbe anba definisyon jeneral NoSQL. Epi ou gen rezon. Men, nan moman sa a dezòd te gouvènen. Tout moun obsede ak NoSQL, li te vin tout moun absoliman nesesè, byenke anpil pa t 'wè diferans ki genyen nan diferan teknoloji. Pou anpil moun, MongoDB te vin tounen sinonim NoSQL.

Ak devlopè yo pounced sou li. Lide a nan yon baz done schemaless ki majik echèl yo rezoud nenpòt pwoblèm te byen tante. Anviwon 2014, li te sanble ke tout kote ke yon ane de sa te itilize yon baz done relasyon tankou MySQL, Postgres oswa SQL sèvè te kòmanse deplwaye baz done MongoDB. Lè yo te mande poukisa, ou ta ka jwenn yon repons soti nan ordinèr "sa a se echèl la nan entènèt la" nan plis reflechi "done yo trè lach estriktire ak adapte byen nan yon baz done san yon chema."

Li enpòtan sonje ke MongoDB, ak baz done dokiman an jeneral, rezoud yon kantite pwoblèm ak baz done relasyon tradisyonèl yo:

  • Konplo strik: Avèk yon baz done relasyon, si ou gen done dinamikman jenere, ou oblije swa kreye yon pakèt kolòn done "divè" o aza, mete ti gout nan done, oswa itilize konfigirasyon. EAV... tout bagay sa yo gen dezavantaj enpòtan.
  • Difikilte pou dekale: Si gen anpil done ke li pa anfòm sou yon sèl sèvè, MongoDB ofri mekanis pou pèmèt li echèl atravè plizyè machin.
  • Modifikasyon sikwi konplèks: pa gen migrasyon! Nan yon baz done relasyon, chanje estrikti baz done a ka yon gwo pwoblèm (sitou lè gen anpil done). MongoDB te kapab senplifye pwosesis la anpil. Epi li te fè li tèlman fasil ke ou ka jis mete ajou kous la pandan w ap ale epi kontinye trè vit.
  • Anrejistreman pèfòmans: Pèfòmans MongoDB te bon, sitou lè byen configuré. Menm konfigirasyon MongoDB ki soti nan bwat la, pou ki li te souvan kritike, te montre kèk nimewo pèfòmans enpresyonan.

Tout risk yo sou ou

Benefis potansyèl MongoDB yo te menmen, espesyalman pou sèten klas pwoblèm. Si ou li lis ki anwo a san ou pa konprann kontèks la ak san eksperyans, ou ka jwenn enpresyon ke MongoDB se vrèman yon DBMS revolisyonè. Pwoblèm nan sèlman se ke benefis ki nan lis pi wo a te vini ak yon kantite opozisyon, kèk nan yo ki nan lis anba a.

Pou nou jis, pa gen moun nan 10gen/MongoDB Inc. pa pral di ke sa ki annapre yo se pa vre, sa yo se jis konpwomi.

  • Pèdi tranzaksyon yo: Tranzaksyon yo se yon karakteristik debaz nan anpil baz done relasyon (se pa tout, men pifò). Tranzaksyon vle di ke ou ka fè plizyè operasyon atomik epi ou ka asire ke done yo rete konsistan. Natirèlman, ak yon baz done NoSQL, tranzaksyonalite ka nan yon sèl dokiman, oswa ou ka itilize komèt de-faz pou jwenn semantik tranzaksyon. Men, ou pral oblije aplike fonksyonalite sa a tèt ou ... ki ka yon travay difisil ak tan konsome. Souvan ou pa reyalize ke gen yon pwoblèm jiskaske ou wè done yo nan baz done a fini nan eta envalid paske atomite operasyon yo pa ka garanti. Remak: Anpil moun te di m ke MongoDB 4.0 prezante tranzaksyon ane pase a, men ak kèk limit. Takeaway nan atik la rete menm jan an: evalye kouman teknoloji a satisfè bezwen ou yo.
  • Pèt entegrite relasyon (kle etranje): Si done ou yo gen relasyon, Lè sa a, ou pral oblije aplike yo nan aplikasyon an. Èske w gen yon baz done ki respekte relasyon sa yo pral pran yon anpil nan travay la nan aplikasyon an ak Se poutèt sa pwogramasyon ou yo.
  • Mank kapasite pou aplike estrikti done: Chema strik yo ka pafwa yon gwo pwoblèm, men yo tou se yon mekanis pwisan pou estrikti done bon si yo itilize sajès. Baz done dokiman tankou MongoDB bay fleksibilite schema enkwayab, men fleksibilite sa a retire responsablite pou kenbe done yo pwòp. Si ou pa okipe yo, ou pral fini ekri anpil kòd nan aplikasyon w lan pou kont pou done ki pa estoke nan fòm ou espere a. Kòm nou souvan di nan konpayi nou an Simple Thread... aplikasyon an pral yon jou reekri, men done yo ap viv pou tout tan. Remak: MongoDB sipòte chèk chema: li itil, men li pa bay garanti menm jan ak nan yon baz done relasyon. Premye a tout, ajoute oswa chanje yon chèk chema pa afekte done ki egziste deja nan koleksyon an. Se ou menm ki pou asire ke ou mete ajou done yo dapre nouvo chema a. Deside pou tèt ou si sa a ase pou bezwen ou yo.
  • Lang rekèt natif natal / pèt ekosistèm zouti: avènement SQL se te yon revolisyon absoli e pa gen anyen ki chanje depi lè sa a. Li se yon lang ekstrèmman pwisan, men tou, byen konplèks. Bezwen pou konstwi demann baz done nan yon nouvo lang ki gen fragman JSON konsidere kòm yon gwo etap bak pa moun ki gen eksperyans travay ak SQL. Gen yon linivè antye nan zouti ki kominike avèk baz done SQL, soti nan IDE yo nan zouti rapò. Deplase nan yon baz done ki pa sipòte SQL vle di ou pa ka sèvi ak pi fò nan zouti sa yo oswa ou dwe tradwi done yo nan SQL yo sèvi ak yo, ki ka pi difisil pase ou panse.

Anpil devlopè ki te tounen vin jwenn MongoDB pa t 'reyèlman konprann konpwomi yo, e souvan plonje tèt premye nan enstale li kòm magazen done prensipal yo. Apre sa, li te souvan ekstrèmman difisil yo tounen.

Ki sa ki te kapab fè yon lòt jan?

Se pa tout moun ki te sote tèt e yo te frape anba a. Men, anpil pwojè te enstale MongoDB nan kote li tou senpleman pa t 'anfòm - epi yo pral gen pou viv ak li pou anpil ane kap vini. Si òganizasyon sa yo te pase kèk tan ak metodikman te panse nan chwa teknoloji yo, anpil moun ta fè chwa diferan.

Ki jan yo chwazi bon teknoloji a? Te gen plizyè tantativ pou kreye yon kad sistematik pou evalyasyon teknoloji, tankou "Kad pou entwodwi teknoloji nan òganizasyon lojisyèl" и "Kad pou evalye teknoloji lojisyèl", men li sanble ke sa a se konpleksite nesesè.

Anpil teknoloji ka evalye entèlijans lè yo poze jis de kesyon debaz yo. Pwoblèm nan se jwenn moun ki ka reponn yo yon fason responsab, pran tan pou jwenn repons yo epi san patipri.

Si ou pa fè fas a nenpòt pwoblèm, ou pa bezwen yon nouvo zouti. Dot.

Kesyon 1: Ki pwoblèm mwen ap eseye rezoud?

Si ou pa fè fas a nenpòt pwoblèm, ou pa bezwen yon nouvo zouti. Dot. Pa gen okenn nesesite pou chèche yon solisyon ak Lè sa a, envante yon pwoblèm. Sòf si ou te rankontre yon pwoblèm ke nouvo teknoloji a rezoud siyifikativman pi byen pase teknoloji ki deja egziste, pa gen anyen yo diskite isit la. Si w ap konsidere itilize teknoloji sa a paske ou te wè lòt moun sèvi ak li, reflechi sou ki pwoblèm yo fè fas a epi mande si ou genyen pwoblèm sa yo. Li fasil pou aksepte yon teknoloji paske lòt moun ap itilize li, defi a se konprann si ou fè fas a menm pwoblèm yo.

Kesyon 2: Kisa mwen manke?

Sa a se definitivman yon kesyon ki pi difisil paske ou pral oblije fouye nan epi gen yon bon konpreyansyon sou tou de ansyen ak nouvo teknoloji a. Pafwa ou pa ka vrèman konprann yon nouvo jiskaske ou te bati yon bagay ak li oswa ou gen yon moun ki gen eksperyans sa a.

Si ou pa gen ni, lè sa a li fè sans pou panse osijè de minimòm envèstisman posib pou detèmine valè enstriman sa a. Ak yon fwa ou fè envestisman an, ki jan difisil li pral ranvèse desizyon an?

Moun toujou kraze tout bagay

Pandan w ap eseye reponn kesyon sa yo san patipri ke posib, sonje yon bagay: w ap oblije goumen kont nati imen. Gen yon kantite prejije kognitif ki dwe simonte pou byen evalye teknoloji. Men jis kèk:

  • Efè rantre nan majorite a - tout moun konnen sou li, men li toujou difisil pou goumen ak li. Jis asire w ke teknoloji a aktyèlman matche ak bezwen aktyèl ou yo.
  • Efè nouvote — Anpil devlopè gen tandans souzèstime teknoloji yo te travay avèk yo pou yon tan long ak ègzajere benefis ki genyen nan nouvo teknoloji. Li pa sèlman pwogramasyon, tout moun se sansib a patipri mantal sa a.
  • Efè karakteristik pozitif - Nou gen tandans wè sa ki la epi pèdi nan je sa ki manke. Sa a ka mennen nan dezòd lè yo konbine avèk efè a kado, kòm ou pa sèlman natirèlman twòp valè nouvo teknoloji, men tou, inyore enpèfeksyon li yo..

Evalyasyon objektif pa fasil, men konprann prejije mantal ki kache yo pral ede w pran desizyon ki pi rasyonèl.

Rezime

Chak fwa yon inovasyon parèt, yo dwe reponn de kesyon ak anpil atansyon:

  • Èske zouti sa a rezoud yon pwoblèm reyèl?
  • Èske nou konprann konpwomi yo byen?

Si w pa ka reponn de kesyon sa yo avèk konfyans, fè kèk etap tounen epi reflechi.

Se konsa, MongoDB te menm bon chwa a? Natirèlman wi; Menm jan ak pifò teknoloji jeni, sa depann de anpil faktè. Pami moun ki te reponn de kesyon sa yo, anpil moun te benefisye de MongoDB e yo kontinye fè sa. Pou moun ki pa t ', mwen espere ou te aprann yon leson ki gen anpil valè epi ki pa twò douloure sou deplase nan sik la battage.

Limit responsabilite nou

Mwen vle klarifye ke mwen pa gen ni yon relasyon renmen ni rayi ak MongoDB. Nou jis pa gen kalite pwoblèm ke MongoDB pi byen adapte pou rezoud. Mwen konnen ke 10gen/MongoDB Inc. te trè fonse nan premye, mete default ensekirite ak fè pwomosyon MongoDB toupatou (espesyalman nan hackathon) kòm yon solisyon inivèsèl pou travay ak nenpòt done. Se te pwobableman yon move desizyon. Men, li konfime apwòch ki dekri isit la: pwoblèm sa yo ka detekte trè vit menm avèk yon evalyasyon supèrfisyèl nan teknoloji a.

Sous: www.habr.com

Add nouvo kòmantè