Kas MongoDB oli ĂŒldse Ă”ige valik?

Hiljuti sain teada, et Red Hat eemaldab MongoDB toe Satellite'ist (öeldakse, et litsentsimuudatuste tĂ”ttu). See pani mind mĂ”tlema, et viimastel aastatel olen nĂ€inud hulgaliselt artikleid selle kohta, kui kohutav on MongoDB ja et keegi ei tohiks seda kunagi kasutada. Kuid selle aja jooksul on MongoDB muutunud palju kĂŒpsemaks tooteks. Mis siis juhtus? Kas kogu see viha on tĂ”esti seotud varajaste turundusvigadega? VĂ”i kasutavad inimesed MongoDB-d lihtsalt valedes kohtades?

Kui teil tundub, et ma kaitsen MongoDB-d, lugege palun eemaldatud artikli lÔpus.

Uus suundumus

Olen töötanud tarkvaraarenduse valdkonnas kauem, kui on viisakas rÀÀkida, kuid selle aja jooksul on mind tabanud vaid vÀike osa meie valdkonda mÔjutanud suundumustest. Olen olnud tunnistajaks 4GL, AOP, Agile, SOA, Web 2.0, AJAX, blokchaini... loetelu on lÔputu. Iga aasta tulevad vÀlja uued suundumused. Osa neist hajub kiiresti, samas kui teised muudavad oluliselt tarkvaraarenduse viise.

Iga uue suundumuse ĂŒmber tekib mingi ĂŒldine elevus: inimesed kas hĂŒppavad ise paati vĂ”i nĂ€evad teistelt tekkinud mĂŒra ja jĂ€rgivad rahvamassi. Seda protsessi kodeeris ettevĂ”te Gartner hype'i tsĂŒklis. Kuigi see on vaieldav, kirjeldab see graafik umbes seda, mis igasugustega tehnoloogiatega juhtub, enne kui need saavad lĂ”puks kasutamiseks kasulikuks.

Kuid aeg-ajalt ilmub (vĂ”i toimub teine tulemine, nagu sel juhul) uus innovatsioon, mille motiveerib ainult ĂŒks konkreetne rakendus. NoSQL hype'it mÀÀratses tugevalt MongoDB kiire tĂ”us. Mitte MongoDB alustas seda trendi: tegelikult tekkisid suurtes internetifirmades probleemid suurte andmemahtude töötlemisega, mis tĂ”i tagasi mitte-relatsioonilised andmebaasid. Üldine liikumine algas selliste projektidega nagu Google'i Bigtable ja Facebooki Cassandra, kuid just MongoDB-st sai kĂ”ige tuntum ja kergemini ligipÀÀsetav NoSQL andmebaasi rakendus, millega enamik arendajatest sai töötada.

MĂ€rkus: vĂ”ite mĂ”elda, et segan dokumentide andmebaase veergude andmebaaside, vĂ”tme-vÀÀrtuse ladude vĂ”i paljude teiste andmelaod tĂŒĂŒpiliste NoSQL mÀÀratlemise alla. Ja teil on Ă”igus. Kuid toona valitses segadus. KĂ”ik oli NoSQL-i fĂ€nnid ja see muutus absoluutseks on vajalik, kuigi paljud ei ole tehnoloogiate vahel erinevusi nĂ€inud. Paljudele on MongoDB saanud sĂŒnonĂŒĂŒmiks NoSQL-ile.

Ja arendajad rĂŒndasid seda. Idee skeemivabast andmebaasist, mis maagiliselt skaleerub kĂ”ikide probleemide lahendamiseks, oli piisavalt ahvatlev. Umbes 2014. aastal nĂ€is, et igas kohas, kus veel aasta tagasi kasutati relatsioonilist andmebaasi, nagu MySQL, Postgres vĂ”i SQL Server, hakati kasutama MongoDB-sid. KĂŒsimusele miks, vĂ”isite saada vastuse alates lihtsast „see on veebiskaal” kuni lĂ€bimĂ”elduma „mu andmed on vĂ€ga halvasti struktureeritud ja sobivad hĂ€sti skeemivabasse andmebaasi”.

Oluline on meeles pidada, et MongoDB ja dokumendipÔhised andmebaasid lahendavad teatud probleeme traditsiooniliste relatsiooniliste andmebaasidega:

  • Range skeem: relatsioonilise andmebaasi puhul, kui teil on dĂŒnaamiliselt loodud andmed, peate kas looma hulga juhuslikke "erinevaid" andmesambasid, pressima sinna andmepunkte vĂ”i kasutama konfiguratsiooni EAV... kĂ”ikidel sellel on olulised puudused.
  • Skaalamisvaev: kui andmeid on nii palju, et need ei mahu ĂŒhele serverile, pakkus MongoDB mehhanisme, mis vĂ”imaldasid neid skaleerida mitmele masinale.
  • Skeemi keerulised muutused: mingeid migreerimisi! Relatsioonilises andmebaasis andmebaasi struktuuri muutmine vĂ”ib olla suur probleem (eriti kui andmeid on tĂ”eliselt palju). MongoDB suutis protsessi oluliselt lihtsustada. Ja tegi selle nii lihtsaks, et saate lihtsalt skeemi jooksvalt uuendada ja vĂ€ga kiiresti edasi minna.
  • KirjutamisvĂ”imekus: MongoDB jĂ”udlus oli hea, eriti korraliku seadistuse korral. I even MongoDB out-of-the-box configuration, for which it was often criticized, demonstrated some impressive performance metrics.

KÔik riskid on teie peal.

MongoDB potentsiaalsed eelised olid tohutud, eriti teatud probleemide klasside jaoks. Kui lugeda ĂŒlaltoodud loetelu ilma konteksti mĂ”istmata ja kogemusteta, vĂ”ib tekkida mulje, et MongoDB on tĂ”eliselt revolutsiooniline andme­baasi­haldus­sĂŒsteem. Ainus probleem oli see, et eespool nimetatud eelised kaasnesid hulga mĂ€rgustega, millest mĂ”ned on allpool toodud.

Aus Ă”igusemĂ”istmise nimel, keegi 10gen/MongoDB Inc.-is ei ĂŒtle, et alljĂ€rgnev pole tĂ”si, need on lihtsalt kompromissid.

  • Tehingute kaotus: tehingud on paljude relatsiooniliste andmebaaside (mitte kĂ”ikide, kuid enamik) pĂ”hijoon. Tehingulisus tĂ€hendab, et saate teostada mitu operatsiooni aatomaaridena ja vĂ”ite tagada, et andmed jÀÀvad kooskĂ”lla. Loomulikult vĂ”ib NoSQL andmebaasis tehingulisus olla ĂŒhe dokumendi piires vĂ”i vĂ”ite kasutada kahefaasilisi kinnitusi, et saavutada tehinguline semantika. Kuid peate selle funktsionaalsuse ise rakendama... mis vĂ”ib olla keeruline ja aeganĂ”udev ĂŒlesanne. Sageli ei teadvusta te probleeme enne kui nĂ€ete, et andmed andmebaasis satuvad lubamatutesse olekutesse, sest operatsioonide aatomaarset tagamist ei saa garanteerida. MĂ€rkus: paljud on mulle teatanud, et eelmisel aastal ilmus MongoDB 4.0-s tehingud, kuid mitmete piirangutega. Artikli jĂ€reldus jÀÀb endiseks: hindage, kui hĂ€sti tehnoloogia vastab teie vajadustele.
  • Relatsiooni terviklikkuse kaotus (vĂ€lishiid): kui teie andmetes on suhted, peate neid rakenduses rakendama. Sukeldumine andmebaasi, mis jĂ€rgib neid suhteid, vĂ€hendab mĂ€rkimisvÀÀrselt töökoormust rakendusel ja seega ka teie arendajatele.
  • Andmestruktuuri rakendamise puudumine: ranged skeemid vĂ”ivad mĂ”nikord osutuda suureks probleemiks, kuid need on ka vĂ”imas mehhanism andmete korralikuks struktureerimiseks, kui neid Ă”igesti kasutada. Dokumentide andmebaasid, nagu MongoDB, pakuvad uskumatut skeemi paindlikkust, kuid see paindlikkus vabastab vastutuse andmete sĂ€ilitamise eest korralikult. Kui te nende eest ei hooli, peate lĂ”puks rakenduses kirjutama palju koodi, et arvestada andmetega, mis on salvestatud teie ootustele mittevastavas vormis. Nagu meie ettevĂ”ttes Simple Thread sageli öeldakse
 rakendus kirjutatakse kunagi ĂŒmber, kuid andmed elavad igavesti. MĂ€rkus: MongoDB toetab skeemide kontrollimist: see on kasulik, kuid ei paku samu garantiisid kui relationaalne andmebaas. Esiteks, skeemide kontrollimise lisamine vĂ”i muutmine ei mĂ”juta olemasolevaid andmeid kogus. Te peaksite ise veenduma, et vĂ€rskendate andmeid vastavalt uuele skeemile. Otsustage ise, kas see on teie vajaduste jaoks piisav.
  • Omandatud pĂ€ringukeel / ökosĂŒsteemi tööriistade kaotus: SQL-i ilmumine oli absoluutne revolution, ning sellest ajast alates ei ole midagi muutunud. See on uskumatult vĂ”imas keel, kuid ka ĂŒsna keeruline. Tehniliselt on uusi pĂ€ringute koostamine andmebaasi uue keele abil, mis koosneb JSON-i fragmentidest, inimestele, kellel on SQL-i kogemus, suur tagasilangemine. SQL-andmebaasidega töötamiseks on terve universum tööriistu: alates IDE-dest kuni aruandlustööriistadeni. Andmebaasi ĂŒleminek, mis ei toeta SQL-i, tĂ€hendab, et te ei saa kasutada enamikku neist tööriistadest vĂ”i peate oma andmed SQL-i viima, et neid kasutada, ja see vĂ”ib osutuda keerulisemaks, kui arvate.

Paljud arendajad, kes pöördusid MongoDB poole, ei mĂ”istnud vĂ€ga hĂ€sti kompromisse ja sageli hĂŒppasid nad pea ees sisse, seadistades selle peamiseks andmesalvestuseks. PĂ€rast seda oli sageli uskumatult keeruline tagasi tulla.

Mida oleks saanud teisiti teha?

KĂ”ik ei hĂŒpanud peadpidi ning ei paisanud end pĂ”hja. Kuid paljusid projekte seadistati MongoDB-se, kuhu see lihtsalt ei sobinud - ja nad peavad sellega veel palju aastaid elama. Kui need organisatsioonid oleksid veetnud natuke aega ja mĂ”elnud sĂŒsteemselt tehnoloogia valikule, oleks paljud teinud teistsuguse valiku.

Kuidas valida sobiv tehnoloogia? Oli mitmeid katse, et luua sĂŒsteemne raamistik tehnoloogiate hindamiseks, nagu „Raamistik tehnoloogiate rakendamiseks tarkvarorganisatsioonides“ ja „Raamistik tarkvaratehnoloogiate hindamiseks“, kuid mulle tundub, et see on ĂŒlemÀÀrane keerukus.

Paljusid tehnoloogiaid saab mĂ”istlikult hinnata, esitamata vaid kahte peamist kĂŒsimust. Probleem seisneb selles, et leida inimesi, kes saavad vastutustundlikult vastata, kulutades aega vastuste leidmiseks ja ilma eelarvamusteta.

Kui te ei seisate silmitsi mingi probleemiga, ei vajate uut tööriista. Punkt.

KĂŒsimus 1: Milliseid probleeme ma pĂŒĂŒan lahendada?

Kui te ei kohta mingit probleemi, ei vaja te uut tööriista. LĂ”pp. Pole mĂ”tet otsida lahendust ja seejĂ€rel vĂ€lja mĂ”elda probleem. Kui te ei ole silmitsi probleemiga, mille uus tehnoloogia lahendab oluliselt paremini kui teie olemasolev tehnoloogia, siis siin pole midagi arutada. Kui kaalute selle tehnoloogia kasutuselevĂ”ttu, kuna olete nĂ€inud, kuidas teised seda kasutavad, siis mĂ”elge, milliste probleemidega nad silmitsi seisavad, ja kĂŒsige endalt, kas teil on sarnaseid probleeme. On lihtne omaks vĂ”tta tehnoloogiat, kuna teised seda kasutavad, kuid raskus seisneb selles, et mĂ”ista, kas olete silmitsi samade probleemidega.

KĂŒsimus 2: Millest ma loobun?

See on kindlasti raskem kĂŒsimus, sest tuleb sĂŒveneda ja hĂ€sti mĂ”ista nii vana kui ka uut tehnoloogiat. MĂ”nikord ei saa te uut tĂ”eliselt mĂ”ista, kuni ei ehita midagi selle abil vĂ”i kuni teil ei ole töötajat, kellel on selline kogemus.

Kui teil ei ole ei ĂŒhtegi ega teist, siis on mĂ”istlik mĂ”elda minimaalsetele investeeringutele, et kindlaks teha selle tööriista vÀÀrtus. Ja kui teete investeeringud, kui raske on otsus tagasi vĂ”tta?

Inimesed rikuvad alati kÔik Àra

PĂŒĂŒdes nendel kĂŒsimustele vastata vĂ”imalikult objektiivselt, pidage meeles ĂŒhte asja: peate vĂ”itlema inimloomusega. On mitmeid kognitiivseid vÀÀrarusaamu, millele tuleb ĂŒle saada, et tehnoloogiat tĂ”husalt hinnata. Siin on vaid mĂ”ned:

  • MĂŒĂŒgipooluse effekt — kĂ”ik teavad sellest, kuid sellega on ikkagi raske vĂ”idelda. Veenduge, et tehnoloogia rahuldab teie tegelikke vajadusi.
  • Uudsuse effekt — paljud arendajad kipuvad alahindama tehnoloogiaid, millega nad on pikka aega töötanud, ja ĂŒlehindama uue tehnoloogia eeliseid. Mitte ainult programmeerijad, vaid kĂ”ik on sellele kognitiivsele vÀÀrarusaamale vastuvĂ”tlikud.
  • Positiivsete omaduste effekt — me kipume nĂ€gema seda, mis on olemas, ja unustame, mis puudub. See vĂ”ib koos uudsuse effektiga viia segadusse, kuna te mitte ainult ei alahinda uut tehnoloogiat, vaid ignoreerite ka selle puudusi..

Objektiivne hinnang pole kerge, kuid peamiste kognitiivsete vÀÀrarusaamade mÔistmine aitab teha ratsionaalsemaid otsuseid.

Elulookirjeldus

Kui ilmub mingi uuendus, tuleb vĂ€ga ettevaatlikult vastata kahele kĂŒsimusele:

  • Kas see tööriist lahendab reaalse probleemi?
  • Kas me mĂ”istame kompromisse piisavalt hĂ€sti?

Kui te ei suuda neile kahele kĂŒsimusele kindlalt vastata, astuge paar sammu tagasi ja mĂ”elge.

Kas MongoDB oli tĂ”epoolest Ă”ige valik? Loomulikult jah; nagu paljude inseneritehnoloogiate puhul, sĂ”ltub see paljuski erinevatest teguritest. Paljude seas, kes vastasid neile kahele kĂŒsimusele, on mitmed saanud MongoDB-st kasu ja saavad seda endiselt. Loodetavasti need, kes ei saanud, Ă”ppisid vÀÀrtusliku ja mitte liiga valusa Ă”ppetunni hĂŒppe tsĂŒkli kĂ€igus.

MĂ€rkus

Tahan selgitada, et ma ei tunne ei armastust ega vihkamist MongoDB vastu. Lihtsalt meil polnud selliseid probleeme, mille jaoks MongoDB oleks parim lahendus. Tean, et 10gen/MongoDB Inc. tegutses alguses vÀga julgesti, seades ebaturvalised vaikevÀÀrtused ja edendades MongoDB-d igal pool (eriti hackathon'idelt) universaalse lahendusena kÔigi andmete töötlemiseks. See oli ilmselt vale otsus. Kuid see kinnitab siin kirjeldatud lÀhenemist: neid probleeme oleks saanud tuvastada vÀga kiiresti isegi pindmise tehnoloogia hindamise korral.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster