NoSQL - MongoDB vs CouchDB [chiuso]


154

Sono un noob completo quando si tratta del movimento NoSQL. Ho sentito molto su MongoDB e CouchDB. So che ci sono differenze tra i due. Quale raccomandi l'apprendimento come primo passo nel mondo NoSQL?


Come primo passo mongoDB è meglio perché è più facile da imparare ma ha alcuni problemi. Non esiste la scelta migliore per utilizzare un database noSQL specifico, dipende da cosa devi fare. Scopri orientato al documento, valore-chiave, orientato al grafico, orientato alla colonna.
Chris,

Risposte:


148

Vedi i link seguenti

Aggiornamento : ho trovato un ottimo confronto tra i database NoSQL .

MongoDB (3.2)

  • Scritto in: C ++
  • Punto principale: archivio documenti JSON
  • Licenza: AGPL (Driver: Apache)
  • Protocollo: personalizzato, binario (BSON)
  • Replica master / slave (failover automatico con set di repliche)
  • Frammento incorporato
  • Le query sono espressioni javascript
  • Esegui funzioni javascript arbitrarie sul lato server
  • Ha indicizzazione e query geospaziali
  • Più motori di archiviazione con caratteristiche prestazionali diverse
  • Prestazioni sulle funzionalità
  • Convalida del documento
  • Scrivere sul diario
  • Potente framework di aggregazione
  • Sui sistemi a 32 bit, limitato a ~ 2,5 Gb
  • Ricerca di testo integrata
  • GridFS per archiviare big data + metadati (non in realtà un FS)
  • Data center a conoscenza

Utilizzo ottimale : se hai bisogno di query dinamiche. Se si preferisce definire gli indici, non mappare / ridurre le funzioni. Se hai bisogno di buone prestazioni su un database di grandi dimensioni. Se volevi CouchDB, ma i tuoi dati cambiano troppo, riempiendo i dischi.

Ad esempio : per la maggior parte delle cose che faresti con MySQL o PostgreSQL, ma avere colonne predefinite ti trattiene davvero.

CouchDB (1.2)

  • Scritto in: Erlang
  • Punto principale: coerenza del DB, facilità d'uso
  • Licenza: Apache
  • Protocollo: HTTP / REST
  • Replica bidirezionale (!),
  • continuo o ad hoc,
  • con rilevazione dei conflitti,
  • quindi, replica master-master. (!)
  • MVCC - le operazioni di scrittura non bloccano le letture
  • Sono disponibili versioni precedenti di documenti
  • Design solo crash (affidabile)
  • Ha bisogno di compattazione di volta in volta
  • Visualizzazioni: mappa integrata / riduzione
  • Formattazione delle viste: elenchi e spettacoli
  • Convalida del documento lato server possibile
  • Autenticazione possibile
  • Aggiornamenti in tempo reale tramite '_changes' (!)
  • Gestione degli allegati

Utilizzo ottimale : per accumulare e modificare occasionalmente i dati su cui devono essere eseguite le query predefinite. Luoghi in cui il controllo delle versioni è importante.

Ad esempio : CRM, sistemi CMS. La replica master-master è una funzionalità particolarmente interessante, che consente facili implementazioni su più siti.


1
Per chiunque sia preoccupato che la licenza del server MongoDB sia AGPL, dare un'occhiata alla politica di licenza di mongodb può fornire un po 'di sollievo.
Patrick,

@amra Quindi, vuoi dire se salvo i dati e li leggo solo, usando couchdb è la scelta migliore?
verystrongjoe,

@verystrongjoe Dipende dalla complessità dei dati e delle query. In genere non si può dire quale sia il migliore.
amra,

@amra Ok. Ma .. Se accumulerà dati e selezionerà i dati e dovrò scegliere tra mongo e couch, quale è meglio?
verystrongjoe,

CouchApps "non è più consigliato" dal 2012 circa: docs.couchdb.com/en/latest/ddocs
Tim Sylvester

123

Se vieni dal mondo MySQL, MongoDB ti "sentirà" molto più naturale grazie al suo supporto linguistico simile a una query.

Penso che sia ciò che lo rende così amichevole per molte persone.

CouchDB è fantastico se si desidera utilizzare l'ottimo supporto di replica master-master con una configurazione multi-nodo, possibilmente in diversi data center o qualcosa del genere.

La replica di MongoDB (set di repliche) è un'impostazione master-slave-slave-slave- *, puoi solo scrivere sul master in un set di repliche e leggere da qualsiasi di esse.

Per una configurazione del sito standard, va bene. Si abbina molto bene all'utilizzo di MySQL.

Ma se stai cercando di creare un servizio globale come un CDN che deve mantenere sincronizzati tutti i nodi globali anche se leggi / scrivi a tutti loro, qualcosa come la replica in CouchDB sarà un grande vantaggio per te.

Mentre MongoDB ha un linguaggio simile a una query che puoi usare e sembra molto intuitivo, CouchDB adotta un approccio di "riduzione della mappa" e questo concetto di visualizzazioni. All'inizio sembra strano, ma man mano che lo si prende, inizia davvero a sentirsi intuitivo.

Ecco una rapida panoramica, quindi ha un senso:

  • CouchDB memorizza tutti i tuoi dati in un b-tree
  • Non puoi "interrogarlo" in modo dinamico con qualcosa del tipo "SELEZIONA * DALL'UTENTE DOVE ..."
  • Invece, definisci "visualizzazioni" discrete dei tuoi dati ... "qui è una vista di tutti i miei utenti", "qui è una vista di tutti gli utenti di età superiore a 10" "qui è una vista di tutti gli utenti di età superiore a 30" e presto.
  • Queste viste sono definite usando l'approccio di riduzione della mappa e sono definite come funzioni JavaScript.
  • Quando si definisce una vista, il DB inizia a alimentare tutti i documenti del DB a cui è stata assegnata la vista, attraverso di essa e registrando i risultati delle funzioni come "indice" su tali dati.
  • Ci sono alcune domande di base che puoi fare sulle viste come chiedere un tasto specifico (ID) o un intervallo di ID indipendentemente da ciò che fa la tua funzione mappa / riduzione.
  • Leggi queste diapositive , è il miglior chiarimento della mappa / riduzione in Couch che ho visto.

Quindi entrambe queste fonti usano documenti JSON, ma CouchDB segue questo approccio "ogni server è un maestro e può sincronizzarsi con il mondo" che è fantastico se ne hai bisogno, mentre MongoDB è davvero il MySQL del mondo NoSQL.

Quindi, se suona più come quello di cui hai bisogno / desideri, provalo.

Piccole differenze come il protocollo binario di Mongo e l'interfaccia RESTful di CouchDB sono tutti dettagli minori.

Se vuoi la velocità pura e l'inferno con la sicurezza dei dati, puoi far funzionare Mongo più velocemente di CouchDB in quanto puoi dire che funziona senza memoria e non commette cose sul disco tranne che per intervalli sparsi.

Puoi fare lo stesso con Couch, ma il suo protocollo di comunicazione basato su HTTP sarà 2-4x più lento della comunicazione binaria grezza con Mongo in questa "velocità su tutto!" scenario.

Tieni presente che la folle velocità folle è inutile se un crash del server o un errore del disco corrompe e brucia il tuo DB nell'oblio, quindi quel punto di dati non è così sorprendente come potrebbe sembrare (a meno che tu non stia facendo sistemi di trading in tempo reale su Wall Street, nel qual caso guarda Redis).

Spero che tutto aiuti!


"MongoDB è davvero il MySQL del mondo NoSQL" - Non so se le cose sono cambiate ma questo articolo del 2014 non è d'accordo: sarahmei.com/blog/2013/11/11/why-you-should-never-use- mongodb
Onur Yıldırım,

Mentre, vagamente nello spirito, penso che il commento funzioni ancora, hai ragione, MOLTO è cambiato nell'ultima metà del decennio e il mio commento dovrebbe essere facilmente respinto.
Riyad Kalla,


1

Ora ci sono molti più database NoSQL sul mercato che mai. Suggerisco anche di dare un'occhiata al Quadrante magico di Gartner se stai cercando un database che sarà anche ottimo per le applicazioni aziendali basate su supporto, espandibilità, gestione e costi.

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

Vorrei suggerire Couchbase a chiunque non l'abbia ancora provato, ma non in base alla versione mostrata nel rapporto (2.5.1) perché ci sono quasi 2 revisioni dietro a dove si trova CB Server oggi, vicino alla versione 4.0 in 2H15 .

http://www.couchbase.com/coming-in-couchbase-server-4-0

L'altra parte di Couchbase come fornitore / prodotto è che si tratta di un tipo di DB multiuso. Può fungere da puro archivio K / V, Document Oriented Database con ridimensionamento multidimensionale, Memcached, cache-side con persistenza e supporta SQL conforme ANSI 92 con join automatici, replica in cluster DR con la semplice pressione di un pulsante e ha persino un componente mobile incorporato nell'ecosistema.

Se non altro, vale la pena dare un'occhiata agli ultimi benchmark:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.