MongoDB vs CouchDB rubrika: Databáze: NoSQL

6 Mlocik97
položil/-a 25.5.2020
 
upravil/-a 26.5.2020

Zdravím,

nejaký tne pol rok sa hrám s týmito dvoma databázami, celkom som si osvojil CouchDB, ktorý mi od MongoDB na prácu príde o dosť jednoduchšia, chcel by som však vedieť Váš názor, nejaké porovnanie, a čo by ste vyzdvihly ako výhody a nedostatky týchto databáz. U MongoDB sa mi páči jak DBaaS (Atlas), tak aj Compass (klient aplikace) tak aj rôzne rozširujúce utility ako charts či Stitch, taktiež to má schémy a typovosť, ale zas na druhú stranu myslím že CouchDB je výrazne jednoduchší na používanie, ľahší, má silu v replikovaní, a navyše beží aj na Androide (čož ale ja som zatiaľ nikdy nevyužil) a pre schema free mi prijde lepší.

Čo si myslíte vy?

odkaz
6 petersirka
odpověděl/-a 1.6.2020

Ja mám skúsenosti s obidvoma databázami a veľmi dávno som si na CouchDB urobil aj vlastný module pre Node.js. Na CouchDB potrebuješ nájsť špeciálny case, zabudni na klasické riešenia (aj malé), kde sa bežne používa relačná DB.

CouchDB nedokáže vôbec filtrovať záznamy podľa viacerých kritérií a ďalší big problém je update dokumentu, vždy sa vytvára nová kópia (revízia) - áno má to svoje výhody, lenže predstav si, že chceš iba inkrementovať počet zobrazení, tak sa ti vytvorí stále kópia celého dokumentu. Takto raz dva prídeš o miesto na disku. Skúšali sme CouchDB implementovať do IoT projektu, mali sme vytvorené aj views (bolo tam +1M dokumentov), potreboval som aktualizovať view a už mi to nezbehlo (padalo to na nejakej internej chybe). CouchDB má peknú filozofiu, ale použitie je fakt iba na neštandardné projekty.

UPDATE:
CouchDB verzia +1.3.x podporuje pokročilejšie funkcie na filtrovanie dokumentov, takže moje vyššie uvedené negatívne tvrdenie ohľadne filtrovania sa týka iba starších verzií CouchDB.

MongoDB je kapitola samá o sebe. Ak používaš Node.js, tak sa priprav na to, že po pár mesiacoch ti nemusia fungovať ovládače (neviem či používaš nejakú nadstavbu). Nestretol som sa ešte s modulom v NPM, ktorý by tak často menil API ako práve MongoDB. U MongoDB oceňujem GridFS na ukladanie súborov (aj CouchDB to má v podobe attachmentov v rámci dokumentu, ale MongoDB to má prepracované tip-top).

Ak by som si mal vybrať na základe mojich skúseností a odpovedať na tvoju otázku, tak určite idem do MongoDB. Na záver dodám, že napriek tvojej otázke doporučujem použiť PostgreSQL, ktorá podporuje aj BJSON/JSON ako MongoDB (takže môžeš si ukladať aj pekne celé dokumenty), stabilné ovládače a mnoho 3rd nástrojov.

Komentáře

  • Mlocik97 : To filtrovanie u CouchDB myslíš ako? Ak myslíš selector pri čítaní z databázy, tak to určite ide dať tam viacero. Príklad: https://gist.github.com/Mlocik97/db39b77e478f988a5b7d4b63daa4f443 filtrujem na základe jak hodnoty v objekte typ, tak aj hodnoty v objekte data.ip.... ostatne s tým updatom a revizami súhlasím, to je dosť problematickejšie. 1.6.2020
  • petersirka : Vypadá to, že filtrovanie odosť vylepšili a aj celkovú správu dokumentov (analyzoval som zbežne aktuálnu dokumentáciu). Idem upraviť moju odpoveď, lebo som v nej zavádzal (teda napísal som skúsenosti z doby, keď som s CouchDB robil). Ak budeš mať viacej skúseností s CouchDB, mohol by si ich potom niekde spísať. Držím palce! 1.6.2020

Pro zobrazení všech 3 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.