Оё MongoDB умуман интихоби дуруст буд?

Ман ба наздикӣ фаҳмидам Red Hat дастгирии MongoDB-ро аз моҳвора хориҷ мекунад (бигӯед, бинобар тағир додани иҷозатнома). Ин маро водор кард, ки дар чанд соли охир ман як қатор мақолаҳоро дидаам, ки чӣ қадар даҳшатноки MongoDB аст ва ҳеҷ кас набояд онро истифода барад. Аммо дар ин муддат, MongoDB ба маҳсулоти хеле баркамолтар табдил ёфт. Чӣ гап шуд? Оё ҳама нафрат дар ҳақиқат аз хатогиҳо дар оғози маркетинги DBMS нав аст? Ё одамон танҳо MongoDB-ро дар ҷои нодуруст истифода мебаранд?

Агар шумо ногаҳон эҳсос кунед, ки ман MongoDB-ро ҳимоя карда истодаам, лутфан хонед радд дар охири мақола.

РСРѕРІС <Р№ С,ЪμРЅРґ

Ман солҳои зиёд дар соҳаи нармафзор будам, ки гуфтан мумкин аст, аммо ба ҳар ҳол ман танҳо як қисми тамоюлҳое будам, ки ба саноати мо таъсир мерасонанд. Ман шоҳиди болоравии 4GL, AOP, Agile, SOA, Web 2.0, AJAX, blockchain будам… рӯйхат беохир аст. Ҳар сол тамоюлҳои нав пайдо мешаванд. Баъзеҳо зуд пажмурда мешаванд, дар ҳоле ки дигарон тарзи таҳияи нармафзорро ба куллӣ тағир медиҳанд.

Дар атрофи ҳар як тамоюли нав як ҳаяҷони муайяни умумӣ ба вуҷуд меояд: одамон ё худашон ба қаиқ мепаранд, ё садои аз ҷониби дигарон тавлидшударо мебинанд ва ба издиҳом пайравӣ мекунанд. Ин раванд аз ҷониби Gartner дар кодификатсия шудааст Сикли гиперишора. Гарчанде ки баҳсбарангез аст, ин график тақрибан тавсиф мекунад, ки бо технологияҳо пеш аз он ки онҳо барои истифода муфид шаванд, чӣ рӯй медиҳад.

Аммо гоҳ-гоҳ ба вуҷуд меояд (ё пайдоиши дуюм, ба монанди ин ҳолат) як навоварии нав, ки танҳо аз як амали мушаххаси он бармеояд. Дар мавриди NoSQL, шӯхӣ аз ҷониби пайдоиш ва болоравии метеорикии MongoDB ба амал омад. MongoDB ин тамоюлро оғоз накард: воқеан, ширкатҳои бузурги интернетӣ бо коркарди миқдори зиёди додаҳо мушкилот доштанд, ки боиси баргардонидани пойгоҳи додаҳои ғайрирасмӣ гардид. Ҳаракати умумӣ бо лоиҳаҳое ба мисли Bigtable-и Google ва Facebook-и Кассандра оғоз ёфт, аммо ин MongoDB буд, ки татбиқи машҳуртарин ва дастраси махзани NoSQL гардид, ки аксари таҳиягарон ба он дастрасӣ доштанд.

Эзоҳ: Шояд шумо фикр кунед, ки ман пойгоҳи додаҳои ҳуҷҷатҳоро бо пойгоҳи додаҳои сутун, мағозаҳои калидӣ/арзиш ё ҳама гуна намудҳои дигари анборҳои маълумот, ки ба таърифи умумии NoSQL дохил мешаванд, омехта мекунам. Ва шумо ҳақ ҳастед. Аммо дар он вакт бесарусомонй хукмрон буд. Ҳама ба NoSQL майл доранд, он ҳама чиз шудааст комилан зарур аст, гарчанде ки бисёриҳо фарқияти технологияҳои гуногунро надида буданд. Барои бисёриҳо, MongoDB табдил ёфтааст муродиф бо NoSQL.

Ва таҳиягарон ба он ҷаҳишиданд. Идеяи як пойгоҳи додаҳои схемавӣ, ки барои ҳалли ҳама гуна мушкилот ба таври ҷодугарӣ васеъ карда мешавад, хеле ҷолиб буд. Тақрибан дар соли 2014 ба назар чунин менамуд, ки дар ҳама ҷо як пойгоҳи додаҳои релятсионӣ ба монанди MySQL, Postgres ё SQL Server як сол пеш истифода мешуд, пойгоҳи додаҳои MongoDB ҷойгир карда мешуданд. Вақте ки чаро пурсиданд, шумо метавонед аз "ин миқёси веб аст" ба андешаи бештар "маълумоти ман хеле суст сохтор шудааст ва дар пойгоҳи додаҳо бидуни схема хуб мувофиқат мекунад" ҷавоб гиред.

Дар хотир доштан муҳим аст, ки MongoDB ва пойгоҳи додаҳои ҳуҷҷат дар маҷмӯъ як қатор мушкилотро бо пойгоҳи додаҳои анъанавии релятсионӣ ҳал мекунанд:

  • Схемаи сахт: бо пойгоҳи додаҳои релятсионӣ, агар шумо маълумоти динамикӣ тавлидшуда дошта бошед, шумо маҷбур мешавед, ки як қатор сутунҳои тасодуфии "гуногун"-и маълумотро эҷод кунед, блокҳои маълумотро дар он ҷо тела диҳед ё конфигуратсияро истифода баред EAV... хамаи ин камбудихои калон дорад.
  • Мушкилии андозагирӣ: Агар он қадар маълумот мавҷуд бошад, ки он дар як сервер мувофиқат накунад, MongoDB механизмҳоеро пешниҳод мекунад, ки ба он имкон медиҳад, ки дар байни мошинҳои гуногун васеъ карда шавад.
  • Тағйироти мураккаби схема: Муҳоҷират нест! Дар пойгоҳи додаҳои релятсионӣ, тағир додани сохтори пойгоҳи дода метавонад як мушкилии бузург бошад (хусусан вақте ки маълумоти зиёд вуҷуд дорад). MongoDB тавонист ин равандро хеле содда кунад. Ва онро чунон осон кард, ки шумо метавонед схемаро дар роҳ навсозӣ кунед ва воқеан зуд ҳаракат кунед.
  • Навиштани иҷроиш: Фаъолияти MongoDB хуб буд, махсусан ҳангоми танзими дуруст. Ҳатто конфигуратсияи берун аз қуттии MongoDB, ки барои он аксар вақт танқид карда мешуд, баъзе рақамҳои таъсирбахши иҷроишро нишон дод.

Ҳама хатарҳо бар шумо ҳастанд

Манфиатҳои эҳтимолии MongoDB, махсусан барои синфҳои муайяни мушкилот хеле бузург буданд. Агар шумо рӯйхати дар боло зикршударо бидуни фаҳмидани контекст хонед ва таҷриба надошта бошед, шумо метавонед таассуроте пайдо кунед, ки MongoDB воқеан як DBMS инқилобист. Ягона мушкилот дар он буд, ки манфиатҳои дар боло номбаршуда бо як қатор огоҳиҳо омадаанд, ки баъзеи онҳо дар зер оварда шудаанд.

Барои адолат, ҳеҷ кас дар 10gen/MongoDB Inc. намегӯяд, ки гуфтаҳои зерин дуруст нест, инҳо танҳо созиш мебошанд.

  • Аз даст додани транзаксияҳоҶавоб: Муомилаҳо як хусусияти асосии бисёр пойгоҳи додаҳои релятсионӣ мебошанд (на ҳама, балки аксарият). Амалиёт маънои онро дорад, ки шумо метавонед якчанд амалиётро ба таври атомӣ иҷро кунед ва боварӣ ҳосил кунед, ки маълумот пайваста боқӣ мемонад. Албатта, бо пойгоҳи додаҳои NoSQL, транзаксия метавонад дар як ҳуҷҷат бошад ё шумо метавонед ӯҳдадориҳои думарҳиларо барои ба даст овардани семантикаи транзаксия истифода баред. Аммо ба шумо лозим меояд, ки ин функсияро худатон амалӣ кунед... ки ин метавонад кори душвор ва вақтталаб бошад. Аксар вақт шумо мушкилотро дарк намекунед, то он даме, ки маълумот дар пойгоҳи додаҳо ба ҳолати беэътибор ворид нашавед, зеро кафолат додани атомии амалиёт ғайриимкон аст. Эзоҳ: Бисёриҳо ба ман гуфтанд, ки транзаксияҳо дар MongoDB 4.0 соли гузашта ҷорӣ карда шуданд, аммо бо баъзе маҳдудиятҳо. Хулосаи мақола бетағйир боқӣ мемонад: арзёбӣ кунед, ки технология ба ниёзҳои шумо чӣ гуна мувофиқат мекунад.
  • Аз даст додани якпорчагии муносибатҳо (калидҳои хориҷӣ): агар маълумоти шумо робита дошта бошад, пас шумо бояд онҳоро дар барнома татбиқ кунед. Доштани пойгоҳи додаҳо, ки ин муносибатҳоро эҳтиром мекунад, кори зиёдеро аз барнома ва аз ин рӯ барномасозони шумо талаб мекунад.
  • Қобилияти татбиқи сохтори додаҳо: Схемаҳои қатъӣ баъзан метавонанд мушкилоти калон бошанд, аммо онҳо инчунин як механизми пурқувват барои сохтори хуби додаҳо мебошанд, агар оқилона истифода шаванд. Пойгоҳи додаҳои ҳуҷҷатҳо ба монанди MongoDB чандирии бебаҳои схемаро таъмин мекунанд, аммо ин чандирӣ масъулияти тоза нигоҳ доштани маълумотро бар дӯш мегирад. Агар шумо ба онҳо ғамхорӣ накунед, шумо дар аризаи худ барои ҳисоб кардани маълумоте, ки дар шакли интизории шумо нигоҳ дошта нашудаанд, коди зиёде менависед. Тавре ки онҳо аксар вақт дар ширкати мо мегӯянд Simple Thread… замима рӯзе аз нав навишта мешавад, аммо маълумот то абад зинда хоҳад монд. Эзоҳ: MongoDB тасдиқи схемаро дастгирӣ мекунад, ки муфид аст, аммо ҳамон кафолатҳоро ҳамчун пойгоҳи додаҳои релятсионӣ таъмин намекунад. Пеш аз ҳама, илова ё тағир додани тасдиқи схема ба маълумоти мавҷуда дар коллексия таъсир намерасонад. Шумо бояд боварӣ ҳосил кунед, ки маълумотро мувофиқи схемаи нав навсозӣ мекунед. Худатон қарор кунед, ки оё ин барои эҳтиёҷоти шумо кофӣ аст.
  • Забони дархости худ / гум кардани экосистемаи асбоб: Пайдоиши SQL инқилоби мутлақ буд ва аз он вақт ҳеҷ чиз тағйир наёфтааст. Ин як забони бениҳоят тавоно, вале хеле мураккаб аст. Зарурати сохтани дархостҳои пойгоҳи додаҳо бо забони нав, ки аз порчаҳои JSON иборат аст, аз ҷониби одамоне, ки бо SQL таҷриба доранд, ҳамчун як қадами бузург ба ақиб мерасанд. Як олами тамоми абзорҳо мавҷуд аст, ки бо пойгоҳи додаҳои SQL, аз IDE то абзорҳои гузоришдиҳӣ ҳамкорӣ мекунанд. Гузариш ба пойгоҳи додаҳо, ки SQL-ро пуштибонӣ намекунад, маънои онро дорад, ки шумо аксари ин абзорҳоро истифода бурда наметавонед ё шумо бояд маълумотро ба SQL табдил диҳед, то ки онҳоро истифода баред, ки ин метавонад назар ба гумони шумо душвортар бошад.

Бисёре аз таҳиягароне, ки ба MongoDB муроҷиат кардаанд, аслан муомилаҳоро намефаҳмиданд ва аксар вақт ба таъсиси он ҳамчун анбори асосии додаҳои худ ғарқ мешуданд. Пас аз он, баргаштан аксар вақт бениҳоят душвор буд.

Чиро дигар хел кардан мумкин буд?

На ҳама аввал сар ҷаҳида, ба поин бархӯрданд. Аммо чанде аз лоиҳаҳо пойгоҳи MongoDB-ро насб карданд, ки он танҳо мувофиқ набуд - ва онҳо бояд солҳои зиёд бо он зиндагӣ кунанд. Агар ин созмонҳо барои ба таври методӣ баррасии интихоби технологияи худ каме вақт ҷудо мекарданд, бисёриҳо интихоби дигар мекарданд.

Чӣ тавр интихоб кардани технологияи дуруст? Якчанд кӯшишҳо барои эҷоди чаҳорчӯбаи систематикӣ барои арзёбии технологӣ, ба монанди "Чорчӯбаи татбиқи технологияҳо дар созмонҳои нармафзор" и "Framefork барои арзёбии технологияҳои нармафзор", вале ба назари ман, ин як мураккабии нодаркор аст.

Бисёр технологияҳоро метавон ба таври оқилона баҳо дод, ки танҳо ду саволи асосӣ дода шавад. Мушкилот дар пайдо кардани одамоне мебошад, ки ба онҳо масъулиятшиносона ҷавоб диҳанд, вақт ҷудо карда, ҷавобҳо ва бидуни ғаразро пайдо кунанд.

Агар шумо бо ягон мушкилот дучор нашавед, ба шумо асбоби нав лозим нест. Нуқта.

Саволи 1: Ман кадом мушкилотро ҳал карданӣ ҳастам?

Агар шумо бо ягон мушкилот дучор нашавед, ба шумо асбоби нав лозим нест. Нуқта. Ҳеҷ зарурате нест, ки роҳи ҳалро ҷустуҷӯ кунед ва баъд мушкилот пайдо кунед. Агар шумо бо мушкилоте рӯ ба рӯ нашавед, ки технологияи нав нисбат ба технологияи мавҷудаи шумо ба таври назаррас беҳтар ҳалли худро наёбад, дар ин ҷо чизе барои муҳокима нест. Агар шумо дар бораи истифодаи ин технология фикр кунед, зеро дидаед, ки дигарон аз он истифода мебаранд, дар бораи мушкилоте, ки онҳо доранд, фикр кунед ва пурсед, ки оё шумо ин мушкилотро доред. Қабули технология осон аст, зеро дигарон аз он истифода мебаранд, мушкил ин аст, ки шумо бо ҳамон мушкилот рӯ ба рӯ мешавед.

Саволи 2: Ман чиро гум кардаам?

Ин бешубҳа саволи мушкилтар аст, зеро шумо бояд ҳам технологияи кӯҳна ва ҳам навро хуб кобед ва дарк кунед. Баъзан шумо наметавонед чизи навро дарк кунед, то он даме, ки бо он чизе насозед ё ҳамтои ин таҷриба надошта бошед.

Агар шумо ҳам надошта бошед, пас барои муайян кардани арзиши ин асбоб дар бораи ҳадди ақали сармоягузории имконпазир фикр кардан маъно дорад. Ва агар шумо сармоягузорӣ кунед, тағир додани қарор то чӣ андоза душвор хоҳад буд?

Одамон ҳамеша ҳама чизро вайрон мекунанд

Ҳангоми кӯшиши ба ин саволҳо то ҳадди имкон беғаразона ҷавоб додан, як чизро дар хотир доред: шумо бояд бо табиати инсонӣ мубориза баред. Як қатор ғаразҳои маърифатӣ мавҷуданд, ки барои баҳодиҳии самараноки технология бояд бартараф карда шаванд. Дар ин ҷо танҳо чанде ҳастанд:

  • Таъсири пайвастан ба аксарият Дар бораи ӯ ҳама медонанд, аммо бо ӯ мубориза бурдан душвор аст. Танҳо боварӣ ҳосил кунед, ки технология воқеан ба ниёзҳои воқеии шумо мувофиқ аст.
  • таъсири навоварӣ Бисёре аз таҳиягарон одатан технологияҳоеро, ки бо онҳо муддати тӯлонӣ кор мекунанд, нодида мегиранд ва бартариҳои технологияи навро аз ҳад зиёд арзёбӣ мекунанд. На танҳо барномасозон, ҳама ба ин ғарази маърифатӣ дучор мешаванд.
  • Таъсири аттрибутҳои мусбӣ Мо майл дорем, ки чиро бубинем ва чизеро аз даст медиҳем. Ин метавонад боиси бесарусомонӣ дар якҷоягӣ бо таъсири навоварӣ гардад, зеро шумо на танҳо ба технологияи нав баҳои баланд медиҳед, балки камбудиҳои онро низ сарфи назар мекунед..

Арзёбии объективӣ осон нест, аммо фаҳмидани ғаразҳои когнитивӣ ба шумо кӯмак мекунад, ки қарорҳои оқилонатар қабул кунед.

Натиҷа

Вақте ки як навоварӣ пайдо мешавад, ба ду савол бояд бодиққат ҷавоб дода шавад:

  • Оё ин восита мушкилоти воқеиро ҳал мекунад?
  • Оё мо дар фаҳмидани муомилот хуб ҳастем?

Агар шумо ба ин ду савол дилпурона ҷавоб дода натавонед, чанд қадам ба ақиб равед ва фикр кунед.

Пас оё la MongoDB умуман интихоби дуруст буд? Албатта ҳа; мисли аксари технологияҳои муҳандисӣ, аз бисёр омилҳо вобаста аст. Дар байни онҳое, ки ба ин ду савол ҷавоб доданд, бисёриҳо аз MongoDB баҳра бурданд ва идома медиҳанд. Барои касоне аз шумо, ки надидаед, ман умедворам, ки шумо дар бораи гузаштан дар давраи ҳайп дарси пурарзиш ва на он қадар дарднок омӯхтед.

Радди масъулият

Ман мехоҳам фаҳмонам, ки ман MongoDB-ро на дӯст медорам ва на нафрат дорам. Мо танҳо чунин мушкилот надоштем, ки MongoDB барои ҳалли онҳо беҳтарин аст. Ман медонам, ки 10gen/MongoDB Inc. дар аввал хеле далерона амал карда, пешфарзҳои ноамнро муқаррар кард ва MongoDB-ро дар ҳама ҷо (хусусан дар хакатон) ҳамчун як ҳалли ягона барои кор бо ҳама гуна маълумот пешбарӣ кард. Эҳтимол ин як қарори бад буд. Аммо он равиши дар ин ҷо тавсифшударо тасдиқ мекунад: ин мушкилотро ҳатто бо арзёбии рӯякии технология хеле зуд ошкор кардан мумкин аст.

Манбаъ: will.com

Илова Эзоҳ