Naha MongoDB mangrupikeun pilihan anu leres?

Abdi nembe terang éta Red Hat ngaleungitkeun dukungan MongoDB tina Satelit (aranjeunna nyebutkeun alatan parobahan lisénsi). Ieu ngajantenkeun kuring mikir sabab dina sababaraha taun ka pengker kuring ningali seueur tulisan ngeunaan kumaha dahsyat MongoDB sareng kumaha teu aya anu kedah nganggo éta. Tapi salami ieu, MongoDB parantos janten produk anu langkung dewasa. Aya naon? Naha sagala hatred bener alatan kasalahan dina pamasaran awal DBMS anyar? Atanapi jalma ngan ukur nganggo MongoDB di tempat anu salah?

Upami anjeun ngarasa kuring ngabela MongoDB, mangga baca bantahan dina tungtung artikel.

Trend anyar

Kuring geus digawé di industri software pikeun leuwih taun ti bisa disebutkeun, tapi kuring masih ngan geus kakeunaan sabagian leutik tina tren anu geus pencét industri urang. Kuring geus nyaksian kebangkitan 4GL, AOP, tangkas, SOA, Web 2.0, AJAX, Blockchain ... daftar téh sajajalan. Unggal taun, tren anyar muncul. Sababaraha gancang luntur, sedengkeun anu sanésna ngarobih cara parangkat lunak dikembangkeun.

Unggal trend anyar nyiptakeun pikagumbiraeun umum: jalma boh luncat kana kapal, atawa ningali noise dihasilkeun ku batur tur turutan riungan. Prosés ieu dikodifikasi ku Gartner di siklus hype. Sanajan kontroversial, timeline ieu kasarna ngajelaskeun naon kajadian ka téhnologi saméméh maranéhna ahirna jadi mangpaat.

Tapi ti jaman ka jaman muncul inovasi anyar (atawa datang kadua, saperti dina hal ieu) didorong ku ngan hiji palaksanaan husus. Dina kasus NoSQL, hype didorong pisan ku mecenghulna sareng kebangkitan meteorik MongoDB. MongoDB henteu ngamimitian trend ieu: kanyataanna, pausahaan Internet badag mimiti ngalaman masalah ngolah jumlah badag data, nu ngarah ka balikna database non-relational. Gerakan sakabéhna dimimitian ku proyék-proyék sapertos Google Bigtable sareng Facebook's Cassandra, tapi éta MongoDB anu janten palaksanaan database NoSQL anu paling terkenal sareng tiasa diaksés anu paling diaksés ku pangembang.

Catetan: Anjeun panginten panginten kuring ngabingungkeun pangkalan data dokumen sareng pangkalan data kolom, toko konci / nilai, atanapi salah sahiji seueur jinis toko data anu sanés dina definisi NoSQL umum. Sareng anjeun leres. Tapi dina waktos éta huru-hara ngarajaan. Sarerea obsessed jeung NoSQL, geus jadi dulur leres pisan perlu, sanajan loba teu ningali béda dina téhnologi béda. Pikeun seueur, MongoDB parantos janten sinonim jeung NoSQL.

Jeung pamekar ponced dinya. Gagasan database schemaless anu sacara magis skala pikeun ngabéréskeun masalah naon waé cukup pikabitaeun. Kira-kira taun 2014, sigana di mana waé yén sataun katukang nganggo database relasional sapertos MySQL, Postgres atanapi SQL Server mimiti nyebarkeun basis data MongoDB. Nalika ditaroskeun kunaon, anjeun tiasa nampi jawaban tina "ieu skala wéb" ka anu langkung wijaksana "data kuring terstruktur pisan sareng pas kana pangkalan data tanpa skéma."

Penting pikeun émut yén MongoDB, sareng pangkalan data dokumén sacara umum, ngarengsekeun sababaraha masalah sareng basis data hubungan tradisional:

  • Skéma ketat: Kalawan database relational, lamun geus dinamis dihasilkeun data, anjeun kapaksa boh nyieun kebat acak "sagala-gala" kolom data, shove blobs data di dinya, atawa ngagunakeun konfigurasi. EAV... kabeh ieu boga drawbacks signifikan.
  • Kasesahan skala: Lamun aya jadi loba data nu teu cocog dina hiji server, MongoDB ditawarkeun mékanisme pikeun ngidinan ka skala sakuliah sababaraha mesin.
  • modifikasi sirkuit kompléks: euweuh migrasi! Dina database relational, ngarobah struktur database bisa jadi masalah badag (utamana lamun aya loba data). MongoDB tiasa nyederhanakeun prosésna. Sarta eta dijieun jadi gampang nu ngan bisa ngamutahirkeun sirkuit anjeun balik sarta ngaléngkah pisan gancang.
  • Prestasi ngarékam: kinerja MongoDB éta alus, utamana lamun ngonpigurasi leres. Malah konfigurasi out-of-the-box MongoDB, anu sering dikritik, nunjukkeun sababaraha angka kinerja anu pikaresepeun.

Sadaya resiko aya dina anjeun

Mangpaat poténsial MongoDB ageung pisan, khususna pikeun sababaraha kelas masalah. Upami anjeun maca daptar di luhur tanpa ngartos kontéks sareng tanpa pangalaman, anjeun tiasa nampi kesan yén MongoDB saleresna mangrupikeun DBMS revolusioner. Hiji-hijina masalah nyaéta yén kauntungan anu didaptarkeun di luhur sumping sareng sababaraha guha, sababaraha di antarana dibéréndélkeun di handap.

Janten adil, teu saurang ogé di 10gen/MongoDB Inc. moal nyebutkeun yén handap teu bener, ieu ngan compromises.

  • Transaksi leungit: Transaksi mangrupakeun fitur inti loba database relational (teu kabeh, tapi paling). Transactional hartina anjeun bisa ngalakukeun sababaraha operasi atom sarta bisa mastikeun yén data tetep konsisten. Tangtosna, kalayan database NoSQL, transactionality tiasa aya dina hiji dokumen, atanapi anjeun tiasa nganggo komitmen dua fase pikeun meunangkeun semantik transaksional. Tapi anjeun kedah ngalaksanakeun fungsi ieu nyalira ... anu tiasa janten tugas anu sesah sareng nyéépkeun waktos. Sering anjeun henteu sadar aya masalah dugi ka ningali data dina pangkalan data ditungtungan dina kaayaan anu teu sah sabab atomicity operasi teu tiasa dijamin. Catetan: Seueur jalma nyarios ka kuring yén MongoDB 4.0 ngenalkeun transaksi taun ka tukang, tapi kalayan sababaraha watesan. The takeaway tina artikel tetep sarua: evaluate kumaha ogé téhnologi meets kabutuhan Anjeun.
  • Leungitna integritas relasional (konci asing): Upami data anjeun gaduh hubungan, maka anjeun kedah nerapkeunana dina aplikasi. Ngagaduhan database anu ngahormatan hubungan ieu bakal nyandak seueur padamelan tina aplikasi sareng ku kituna programer anjeun.
  • Kurangna kamampuh pikeun nerapkeun struktur data: Skéma ketat kadang bisa jadi masalah badag, Tapi aranjeunna oge mékanisme kuat pikeun structuring data alus lamun dipaké neuleu. Basis data dokumén sapertos MongoDB nyayogikeun kalenturan skéma anu luar biasa, tapi kalenturan ieu ngaleungitkeun tanggung jawab pikeun ngajaga data bersih. Upami anjeun henteu ngurus aranjeunna, anjeun bakal tungtungna nyerat seueur kode dina aplikasi anjeun pikeun ngitung data anu henteu disimpen dina bentuk anu anjeun ngarepkeun. Sakumaha anu sering urang ucapkeun di perusahaan kami Thread Sederhana ... aplikasina bakal ditulis deui, tapi datana bakal hirup salamina. Catetan: MongoDB ngadukung pamariksaan skéma: mangpaat, tapi henteu masihan jaminan anu sami sareng dina database relasional. Anu mimiti, nambihkeun atanapi ngarobih cek skéma henteu mangaruhan data anu aya dina koleksi. Terserah anjeun pikeun mastikeun yén anjeun ngapdet data dumasar kana skéma énggal. Mutuskeun pikeun diri naha ieu cukup pikeun kaperluan anjeun.
  • Basa query pribumi / leungitna ékosistem alat: Advent of SQL éta hiji revolusi mutlak tur euweuh geus robah saprak lajeng. Éta basa anu luar biasa kuat, tapi ogé rada rumit. Kabutuhan pikeun ngawangun queries database dina basa anyar diwangun ku fragmen JSON dianggap salaku hambalan badag mundur ku jalma anu boga pangalaman gawé bareng SQL. Aya saluruh jagat alat anu berinteraksi sareng database SQL, ti IDE dugi ka alat ngalaporkeun. Pindah ka pangkalan data anu henteu ngadukung SQL hartosna anjeun moal tiasa nganggo kalolobaan alat ieu atanapi anjeun kedah narjamahkeun data kana SQL pikeun ngagunakeunana, anu tiasa langkung hese tibatan anu anjeun pikirkeun.

Seueur pamekar anu tos ka MongoDB henteu leres-leres ngartos kana trade-offs, sareng sering nyilem heula kana masangna salaku toko data utami. Sanggeus ieu mindeng incredibly hésé datang deui.

Naon bisa geus dipigawé béda?

Teu sadaya jelema luncat headfirst sarta pencét handap. Tapi seueur proyék parantos dipasang MongoDB di tempat-tempat anu henteu pas - sareng aranjeunna kedah hirup sareng éta mangtaun-taun ka hareup. Upami organisasi-organisasi ieu nyéépkeun waktos sareng sacara metodis mikirkeun pilihan téknologina, seueur anu bakal milih pilihan anu béda.

Kumaha carana milih téhnologi katuhu? Aya sababaraha usaha pikeun nyiptakeun kerangka sistematis pikeun penilaian téknologi, sapertos "Kerangka pikeun ngenalkeun téknologi kana organisasi parangkat lunak" и "Kerangka pikeun meunteun téknologi parangkat lunak", Tapi sigana kuring nu ieu pajeulitna perlu.

Loba téknologi bisa intelligently ditaksir ku nanyakeun ngan dua patarosan dasar. Masalahna nyaéta milarian jalma anu tiasa ngajawabna kalayan tanggung jawab, nyandak waktos pikeun milarian jawaban sareng tanpa bias.

Upami anjeun henteu nyanghareupan masalah, anjeun henteu peryogi alat énggal. Titik.

Patarosan 1: Masalah naon anu kuring coba pikeun ngajawab?

Upami anjeun henteu nyanghareupan masalah, anjeun henteu peryogi alat énggal. Titik. Teu perlu neangan solusi lajeng invent masalah. Kacuali anjeun ngalaman masalah anu direngsekeun ku téknologi anyar anu langkung saé tibatan téknologi anjeun anu tos aya, teu aya anu kedah dibahas di dieu. Upami anjeun nimbang-nimbang ngagunakeun téknologi ieu kusabab anjeun ningali batur ngagunakeun éta, pikirkeun masalah naon anu aranjeunna hadapi sareng naroskeun naha anjeun ngagaduhan masalah éta. Gampang nampi téknologi sabab batur ngagunakeun éta, tantanganna nyaéta ngartos naha anjeun nyanghareupan masalah anu sami.

Patarosan 2: Naon anu kuring leungit?

Ieu pasti patarosan anu langkung hese sabab anjeun kedah ngagali sareng gaduh pamahaman anu hadé ngeunaan téknologi anu lami sareng énggal. Kadang-kadang anjeun teu tiasa leres-leres ngartos anu énggal dugi ka anjeun ngawangun hiji hal sareng éta atanapi gaduh jalma anu gaduh pangalaman éta.

Upami anjeun henteu gaduh, maka masuk akal pikeun mikir ngeunaan investasi minimum anu mungkin pikeun nangtukeun nilai alat ieu. Sareng sakali anjeun ngadamel investasi, kumaha héséna ngabalikeun kaputusan?

Jalma sok ngaruksak sagalana

Nalika anjeun nyobian ngajawab patarosan ieu sabisa-bisa, émut hiji hal: anjeun kedah ngalawan alam manusa. Aya sababaraha bias kognitif anu kedah diatasi pikeun évaluasi téknologi sacara efektif. Ieu ngan sababaraha:

  • Pangaruh gabung mayoritas - sadayana terang ngeunaan anjeunna, tapi masih sesah pikeun ngalawan anjeunna. Ngan pastikeun téhnologi nu sabenerna cocog kabutuhan Anjeun sabenerna.
  • Pangaruh novelty - Loba pamekar condong underestimate téhnologi maranéhna geus digarap ku keur lila jeung overestimate mangpaat téhnologi anyar. Henteu ngan ukur programer, sadayana rentan kana bias kognitif ieu.
  • Pangaruh ciri positif - Urang condong ningali naon aya na leungit tetempoan naon leungit. Ieu bisa ngakibatkeun rusuh lamun digabungkeun jeung pangaruh novelty, sabab anjeun teu ngan inherently overvalue téhnologi anyar, tapi ogé malire shortcomings na..

Penilaian obyektif henteu gampang, tapi ngartos bias kognitif anu aya dina dasar bakal ngabantosan anjeun nyandak kaputusan anu langkung rasional.

singgetan

Iraha waé inovasi muncul, dua patarosan kedah dijawab kalayan ati-ati:

  • Naha alat ieu ngabéréskeun masalah anu nyata?
  • Naha urang ngartos trade-offs ogé?

Lamun anjeun teu bisa confidently ngajawab dua patarosan ieu, nyandak sababaraha léngkah deui jeung pikir.

Janten MongoDB mangrupikeun pilihan anu leres? Tangtu enya; Sapertos kalolobaan téknologi rékayasa, ieu gumantung kana sababaraha faktor. Di antara anu ngajawab dua patarosan ieu, seueur anu nguntungkeun tina MongoDB sareng teras-terasan ngalakukeunana. Pikeun anu henteu, kuring ngarepkeun anjeun diajar pelajaran anu berharga sareng henteu nyeri teuing ngeunaan ngaliwat siklus hype.

Bantahan

Abdi hoyong netelakeun yén kuring henteu gaduh cinta atanapi hubungan hate sareng MongoDB. Kami ngan teu ngagaduhan masalah anu MongoDB paling cocog pikeun direngsekeun. Kuring terang yén 10gen/MongoDB Inc. mimitina wani pisan, netepkeun standar anu teu aman sareng promosi MongoDB dimana-mana (utamana di hackathon) salaku solusi universal pikeun damel sareng data naon waé. Ieu meureun kaputusan goréng. Tapi negeskeun pendekatan anu dijelaskeun di dieu: masalah ieu tiasa dideteksi gancang pisan sanaos ku penilaian deet ngeunaan téknologi.

sumber: www.habr.com

Tambahkeun komentar