Ai MongoDB oedd y dewis cywir yn gyffredinol?

Cefais wybod hynny yn ddiweddar Mae Red Hat yn tynnu cefnogaeth MongoDB o Satellite (maen nhw'n dweud oherwydd newidiadau trwydded). Gwnaeth hyn i mi feddwl oherwydd yn ystod yr ychydig flynyddoedd diwethaf rwyf wedi gweld tunnell o erthyglau am ba mor ofnadwy yw MongoDB a sut na ddylai neb byth ei ddefnyddio. Ond yn ystod yr amser hwn, mae MongoDB wedi dod yn gynnyrch llawer mwy aeddfed. Beth ddigwyddodd? Ai camgymeriadau wrth farchnata DBMS newydd yn gynnar sy'n gyfrifol am yr holl gasineb mewn gwirionedd? Neu a yw pobl yn defnyddio MongoDB yn y lleoedd anghywir yn unig?

Os ydych chi'n teimlo fy mod i'n amddiffyn MongoDB, darllenwch ymwadiad ar ddiwedd yr erthygl.

Tuedd newydd

Rwyf wedi bod yn gweithio yn y diwydiant meddalwedd am fwy o flynyddoedd nag y gallaf ei ddweud, ond dim ond cyfran fach o'r tueddiadau sydd wedi taro ein diwydiant yr wyf wedi bod yn agored iddynt o hyd. Rwyf wedi gweld cynnydd 4GL, AOP, Agile, SOA, Web 2.0, AJAX, Blockchain ... mae'r rhestr yn ddiddiwedd. Bob blwyddyn mae tueddiadau newydd yn ymddangos. Mae rhai yn diflannu'n gyflym, tra bod eraill yn newid yn sylfaenol y ffordd y mae meddalwedd yn cael ei ddatblygu.

Mae pob tueddiad newydd yn creu cyffro cyffredinol: mae pobl naill ai'n neidio ar fwrdd y llong, neu'n gweld y sŵn a gynhyrchir gan eraill ac yn dilyn y dorf. Mae'r broses hon wedi'i chodeiddio gan Gartner yn cylch hype. Er ei fod yn ddadleuol, mae'r llinell amser hon yn disgrifio'n fras yr hyn sy'n digwydd i dechnolegau cyn iddynt ddod yn ddefnyddiol yn y pen draw.

Ond o bryd i'w gilydd mae arloesedd newydd yn ymddangos (neu mae ganddo ail ddyfodiad, fel yn yr achos hwn) wedi'i ysgogi gan un gweithrediad penodol yn unig. Yn achos NoSQL, roedd y hype yn cael ei yrru'n drwm gan ymddangosiad a chynnydd meteorig MongoDB. Ni ddechreuodd MongoDB y duedd hon: mewn gwirionedd, dechreuodd cwmnïau Rhyngrwyd mawr gael problemau prosesu symiau mawr o ddata, a arweiniodd at ddychwelyd cronfeydd data nad ydynt yn perthyn. Dechreuodd y symudiad cyffredinol gyda phrosiectau fel Google's Bigtable a Facebook's Cassandra, ond MongoDB a ddaeth yn weithrediad cronfa ddata NoSQL mwyaf adnabyddus a hygyrch yr oedd gan y mwyafrif o ddatblygwyr fynediad iddo.

Sylwer: Efallai eich bod yn meddwl fy mod yn drysu cronfeydd data dogfen gyda chronfeydd data colofnol, storfeydd allwedd / gwerth, neu unrhyw un o'r mathau niferus eraill o storfeydd data sy'n dod o dan ddiffiniad cyffredinol NoSQL. Ac rydych chi'n iawn. Ond y pryd hwnnw teyrnasodd anhrefn. Mae gan bawb obsesiwn â NoSQL, mae wedi dod yn bawb hollol angenrheidiol, er nad oedd llawer yn gweld y gwahaniaethau mewn technolegau gwahanol. I lawer, mae MongoDB wedi dod yn gyfystyr â NoSQL.

Ac mae'r datblygwyr yn neidio arno. Roedd y syniad o gronfa ddata heb sgema sy'n graddio'n hudol i ddatrys unrhyw broblem yn eithaf demtasiwn. Tua 2014, roedd yn ymddangos bod cronfa ddata berthynol fel MySQL, Postgres neu SQL Server ym mhobman flwyddyn yn ôl wedi dechrau defnyddio cronfeydd data MongoDB. Pan ofynnwyd pam, gallech gael ateb o'r banal “dyma raddfa'r we” i'r un mwy meddylgar “mae fy nata wedi'i strwythuro'n llac iawn ac yn cyd-fynd yn dda â chronfa ddata heb sgema.”

Mae'n bwysig cofio bod MongoDB, a chronfeydd data dogfen yn gyffredinol, yn datrys nifer o broblemau gyda chronfeydd data perthynol traddodiadol:

  • Cynllun caeth: Gyda chronfa ddata berthynol, os ydych wedi cynhyrchu data yn ddeinamig, fe'ch gorfodir i naill ai greu criw o golofnau data "amrywiol" ar hap, gwthio smotiau o ddata i mewn yno, neu ddefnyddio ffurfweddiad EAV...mae gan hyn oll anfanteision sylweddol.
  • Anhawster graddio: Os oes cymaint o ddata nad yw'n ffitio ar un gweinydd, cynigiodd MongoDB fecanweithiau i'w alluogi i raddfa ar draws peiriannau lluosog.
  • Addasiadau cylched cymhleth: dim mudo! Mewn cronfa ddata berthynol, gall newid strwythur y gronfa ddata fod yn broblem enfawr (yn enwedig pan fo llawer o ddata). Roedd MongoDB yn gallu symleiddio'r broses yn fawr. Ac fe'i gwnaeth mor hawdd fel y gallwch chi ddiweddaru'r gylched wrth i chi fynd a symud ymlaen yn gyflym iawn.
  • Recordio perfformiad: Roedd perfformiad MongoDB yn dda, yn enwedig pan gafodd ei ffurfweddu'n iawn. Roedd hyd yn oed cyfluniad y tu allan i'r bocs MongoDB, y cafodd ei feirniadu'n aml amdano, yn dangos rhai niferoedd perfformiad trawiadol.

Mae pob risg arnoch chi

Roedd manteision posibl MongoDB yn enfawr, yn enwedig ar gyfer rhai dosbarthiadau o broblemau. Os darllenwch y rhestr uchod heb ddeall y cyd-destun a heb brofiad, efallai y cewch yr argraff bod MongoDB yn wirioneddol yn DBMS chwyldroadol. Yr unig broblem oedd bod y buddion a restrir uchod yn dod gyda nifer o gafeatau, y rhestrir rhai ohonynt isod.

A bod yn deg, does neb yn 10gen/MongoDB Inc. Ni fydd yn dweud nad yw'r canlynol yn wir, dim ond cyfaddawdau yw'r rhain.

  • Trafodion coll: Mae trafodion yn nodwedd graidd llawer o gronfeydd data perthynol (nid pob un, ond y rhan fwyaf). Mae trafodion yn golygu y gallwch chi gyflawni gweithrediadau lluosog yn atomig a gall sicrhau bod y data'n aros yn gyson. Wrth gwrs, gyda chronfa ddata NoSQL, gall trafodion fod o fewn un ddogfen, neu gallwch ddefnyddio ymrwymiad dau gam i gael semanteg trafodaethol. Ond bydd yn rhaid i chi weithredu'r swyddogaeth hon eich hun ... a all fod yn dasg anodd a llafurus. Yn aml, nid ydych chi'n sylweddoli bod yna broblem nes i chi weld y data yn y gronfa ddata yn y pen draw mewn cyflwr annilys oherwydd ni ellir gwarantu atomigedd gweithrediadau. Nodyn: Dywedodd llawer o bobl wrthyf fod MongoDB 4.0 wedi cyflwyno trafodion y llynedd, ond gyda rhai cyfyngiadau. Mae'r tecawê o'r erthygl yn aros yr un fath: gwerthuswch pa mor dda y mae'r dechnoleg yn cwrdd â'ch anghenion.
  • Colli cywirdeb perthynol (allweddi tramor): Os oes gan eich data berthnasoedd, yna bydd yn rhaid i chi eu cymhwyso yn y cais. Bydd cael cronfa ddata sy'n parchu'r perthnasoedd hyn yn cymryd llawer o'r gwaith oddi ar y rhaglen ac felly eich rhaglenwyr.
  • Diffyg gallu i gymhwyso strwythur data: Weithiau gall sgemâu caeth fod yn broblem fawr, ond maent hefyd yn fecanwaith pwerus ar gyfer strwythuro data da os cânt eu defnyddio'n ddoeth. Mae cronfeydd data dogfen fel MongoDB yn darparu hyblygrwydd sgema anhygoel, ond mae'r hyblygrwydd hwn yn dileu'r cyfrifoldeb am gadw'r data'n lân. Os na fyddwch chi'n gofalu amdanyn nhw, byddwch chi'n ysgrifennu llawer o god yn eich cais i gyfrif am ddata nad yw'n cael ei storio yn y ffurf rydych chi'n ei ddisgwyl. Fel y dywedwn yn aml yn ein cwmni Simple Thread ... bydd y cais yn cael ei ailysgrifennu rywbryd, ond bydd y data'n byw am byth. Nodyn: Mae MongoDB yn cefnogi gwirio sgema: mae'n ddefnyddiol, ond nid yw'n darparu'r un gwarantau ag mewn cronfa ddata berthynol. Yn gyntaf oll, nid yw ychwanegu neu newid gwiriad sgema yn effeithio ar ddata presennol yn y casgliad. Eich cyfrifoldeb chi yw sicrhau eich bod yn diweddaru'r data yn ôl y sgema newydd. Penderfynwch drosoch eich hun a yw hyn yn ddigon ar gyfer eich anghenion.
  • Iaith ymholiad brodorol / colli ecosystem offer: Roedd dyfodiad SQL yn chwyldro llwyr ac nid oes dim wedi newid ers hynny. Mae'n iaith anhygoel o bwerus, ond hefyd yn eithaf cymhleth. Mae'r angen i adeiladu ymholiadau cronfa ddata mewn iaith newydd sy'n cynnwys darnau JSON yn cael ei ystyried yn gam mawr yn ôl gan bobl sydd â phrofiad o weithio gyda SQL. Mae yna fydysawd cyfan o offer sy'n rhyngweithio â chronfeydd data SQL, o DRhA i offer adrodd. Mae symud i gronfa ddata nad yw'n cefnogi SQL yn golygu na allwch ddefnyddio'r rhan fwyaf o'r offer hyn neu mae'n rhaid i chi gyfieithu'r data i SQL i'w defnyddio, a all fod yn anoddach nag yr ydych chi'n meddwl.

Nid oedd llawer o ddatblygwyr a drodd at MongoDB yn deall y cyfaddawdau mewn gwirionedd, ac yn aml fe wnaethant blymio'n gyntaf i'w osod fel eu prif storfa ddata. Ar ôl hyn roedd yn aml yn anhygoel o anodd dod yn ôl.

Beth allai fod wedi ei wneud yn wahanol?

Ni neidiodd pawb yn gyntaf a tharo'r gwaelod. Ond mae llawer o brosiectau wedi gosod MongoDB mewn mannau lle nad oedd yn ffitio - a bydd yn rhaid iddynt fyw gydag ef am flynyddoedd lawer i ddod. Pe bai'r sefydliadau hyn wedi treulio peth amser ac wedi meddwl yn drefnus am eu dewisiadau technoleg, byddai llawer wedi gwneud dewisiadau gwahanol.

Sut i ddewis y dechnoleg gywir? Bu sawl ymgais i greu fframwaith systematig ar gyfer asesu technoleg, megis "Fframwaith ar gyfer cyflwyno technolegau i sefydliadau meddalwedd" и "Fframwaith ar gyfer asesu technolegau meddalwedd", ond mae’n ymddangos i mi mai cymhlethdod diangen yw hwn.

Gellir asesu llawer o dechnolegau yn ddeallus trwy ofyn dau gwestiwn sylfaenol yn unig. Y broblem yw dod o hyd i bobl a all eu hateb yn gyfrifol, cymryd yr amser i ddod o hyd i'r atebion a heb ragfarn.

Os nad ydych chi'n wynebu unrhyw broblem, nid oes angen teclyn newydd arnoch chi. Dot.

Cwestiwn 1: Pa broblemau ydw i'n ceisio eu datrys?

Os nad ydych chi'n wynebu unrhyw broblem, nid oes angen teclyn newydd arnoch chi. Dot. Nid oes angen chwilio am ateb ac yna dyfeisio problem. Oni bai eich bod wedi dod ar draws problem y mae'r dechnoleg newydd yn ei datrys yn sylweddol well na'ch technoleg bresennol, nid oes dim i'w drafod yma. Os ydych chi'n ystyried defnyddio'r dechnoleg hon oherwydd eich bod chi wedi gweld eraill yn ei defnyddio, meddyliwch pa broblemau maen nhw'n eu hwynebu a gofynnwch a oes gennych chi'r problemau hynny. Mae'n hawdd derbyn technoleg oherwydd bod eraill yn ei defnyddio, yr her yw deall a ydych chi'n wynebu'r un problemau.

Cwestiwn 2: Beth ydw i ar goll?

Mae hwn yn bendant yn gwestiwn anoddach oherwydd bydd yn rhaid i chi gloddio i mewn a chael dealltwriaeth dda o'r dechnoleg hen a newydd. Weithiau ni allwch ddeall un newydd mewn gwirionedd nes eich bod wedi adeiladu rhywbeth ag ef neu gael rhywun â'r profiad hwnnw.

Os nad oes gennych y naill na'r llall, yna mae'n gwneud synnwyr i feddwl am y buddsoddiad lleiaf posibl i bennu gwerth yr offeryn hwn. Ac ar ôl i chi wneud y buddsoddiad, pa mor anodd fydd hi i wrthdroi'r penderfyniad?

Mae pobl bob amser yn difetha popeth

Wrth i chi geisio ateb y cwestiynau hyn mor ddiduedd â phosibl, cofiwch un peth: bydd yn rhaid i chi ymladd y natur ddynol. Mae yna nifer o ragfarnau gwybyddol y mae'n rhaid eu goresgyn er mwyn gwerthuso technoleg yn effeithiol. Dyma ychydig yn unig:

  • Effaith ymuno â'r mwyafrif - mae pawb yn gwybod amdano, ond mae'n dal yn anodd ymladd ag ef. Gwnewch yn siŵr bod y dechnoleg yn cyd-fynd â'ch anghenion gwirioneddol.
  • Effaith newydd-deb — Mae llawer o ddatblygwyr yn tueddu i danamcangyfrif y technolegau y maent wedi gweithio gyda nhw ers amser maith a goramcangyfrif manteision technoleg newydd. Nid rhaglenwyr yn unig mohono, mae pawb yn agored i'r duedd wybyddol hon.
  • Effaith nodweddion cadarnhaol - Tueddir ni i weld beth sydd yno a cholli golwg ar yr hyn sydd ar goll. Gall hyn arwain at anhrefn o'i gyfuno â'r effaith newydd-deb, gan eich bod nid yn unig yn gorbrisio technoleg newydd yn gynhenid, ond hefyd yn anwybyddu ei diffygion.

Nid yw asesu gwrthrychol yn hawdd, ond bydd deall y tueddiadau gwybyddol sylfaenol yn eich helpu i wneud penderfyniadau mwy rhesymegol.

Crynodeb

Pryd bynnag y bydd arloesedd yn ymddangos, rhaid ateb dau gwestiwn yn ofalus iawn:

  • A yw'r offeryn hwn yn datrys problem wirioneddol?
  • A ydym yn deall y cyfaddawdu yn dda?

Os na allwch ateb y ddau gwestiwn hyn yn hyderus, cymerwch ychydig o gamau yn ôl a meddyliwch.

Felly ai MongoDB oedd y dewis cywir hyd yn oed? Wrth gwrs ie; Fel gyda'r rhan fwyaf o dechnolegau peirianneg, mae hyn yn dibynnu ar lawer o ffactorau. Ymhlith y rhai a atebodd y ddau gwestiwn hyn, mae llawer wedi elwa o MongoDB ac yn parhau i wneud hynny. I'r rhai na wnaeth, gobeithio eich bod wedi dysgu gwers werthfawr a heb fod yn rhy boenus am symud trwy'r cylch hype.

Ymwadiad

Rwyf am egluro nad oes gennyf gariad na pherthynas casineb â MongoDB. Nid ydym wedi cael y math o broblemau y mae MongoDB yn fwyaf addas i'w datrys. Gwn fod 10gen/MongoDB Inc. yn feiddgar iawn ar y dechrau, gan osod diffygion ansicr a hyrwyddo MongoDB ym mhobman (yn enwedig mewn hacathons) fel ateb cyffredinol ar gyfer gweithio gydag unrhyw ddata. Mae'n debyg ei fod yn benderfyniad gwael. Ond mae'n cadarnhau'r dull a ddisgrifir yma: gellid canfod y problemau hyn yn gyflym iawn hyd yn oed gydag asesiad arwynebol o'r dechnoleg.

Ffynhonnell: hab.com

Ychwanegu sylw