2010-09-06 3 views
16

Volevo solo sapere se c'è una differenza fondamentale tra hbase, cassandra, couchdb e monogodb? In altre parole, stanno tutti gareggiando nello stesso identico mercato e cercando di risolvere esattamente gli stessi problemi. Oppure si adattano meglio in diversi scenari?HBase cassandra couchdb mongodb..una differenza fondamentale?

Tutto ciò viene alla domanda, cosa dovrei scegliere quando. Questione di gusti?

Grazie,

Federico

+0

Questo articolo aggiornato è utile: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis – coderz

risposta

12

Queste sono alcune risposte lunghe da @Bohzo. (ma sono buoni collegamenti)

La verità è che sono "tipo di" concorrenti. Ma hanno sicuramente diversi punti di forza e di debolezza e sicuramente non risolvono tutti gli stessi problemi.

Ad esempio, Couch e Mongo forniscono entrambi motori di riduzione della mappa come parte del pacchetto principale. HBase è (fondamentalmente) uno strato sopra Hadoop, quindi ottieni anche M-R tramite Hadoop. Cassandra è fortemente focalizzata sull'essere un negozio Key-Value e ha plug-in per "stratificare" Hadoop sopra (in modo da poter ridurre la mappa).

Alcuni dei DB forniscono MVCC (controllo della concorrenza a più versioni). Mongo no.

Tutti questi DB sono progettati per scalare orizzontalmente, ma lo fanno in modi diversi. Tutti questi DB stanno anche cercando di fornire flessibilità in diversi modi. Dimensioni dei documenti flessibili o API REST o alta ridondanza o facilità d'uso, stanno facendo tutti diversi compromessi.

Così alla tua domanda: In altre parole, sono tutti in competizione nello stesso mercato e cercando di risolvere esattamente gli stessi problemi?

  1. : stanno tutti cercando di risolvere la questione del database scalabilità e le prestazioni.
  2. No: stanno sicuramente facendo diversi gruppi di compromessi.

Come iniziare?

L'uomo, questa è una domanda difficile. Lavoro per una grande azienda che spinge tonnellate di dati e abbiamo passato alcuni anni. Abbiamo provato Cassandra a un certo punto un paio di anni fa e non poteva gestire il carico. Usiamo Hadoop ovunque, ma sicuramente ha una curva di apprendimento ripida e non ha funzionato in alcuni dei nostri ambienti. Più recentemente abbiamo provato a fare Cassandra + Hadoop, ma si è verificato un sacco di lavoro di configurazione.

Personalmente, il mio reparto si sta spostando diverse cose su MongoDB. Le nostre ragioni per questo sono onestamente solo la semplicità.

L'impostazione di Mongo su una casella Linux richiede pochi minuti e non richiede l'accesso come root o una modifica al file system o niente di particolare. Non sono richiesti file di configurazione pazzi o ricompense java. Quindi, da quella prospettiva, Mongo è stato il "farmaco di accesso" più semplice per portare le persone negli archivi KV/Document.

+0

che dire di divano, ci hai provato? –

+0

Quale parte? Conosco alcune persone che usano Membase (memcache con persistenza). È facile da gestire e ha una bella interfaccia utente per farlo. Ma non sta nemmeno cercando di fare molto. CouchDB si è venduto come ottimo per l'installazione con multi-master, ma non ho mai dovuto usarlo affatto. CouchDB ha indici secondari e molte caratteristiche simili a MongoDB, quindi è davvero comodo quanto tu stia usando tutto. –

+0

IS mongo meglio di Cassandra per le scritture? Cassandra scrive che accade nella memoria e tutti dicono che cassandra funziona molto bene con le scritture. Mongo è ancora meglio? – Peter

5

Risposta breve: prova prima dell'uso in produzione.

posso offrire la mia esperienza sia con HBase (estesa) e MongoDB (appena iniziato).

Anche se non sono dello stesso tipo di negozi, risolvono gli stessi problemi:

  • scalabile memorizzazione dei dati
  • accesso casuale ai dati
  • partire Accesso latenza

All'inizio eravamo molto entusiasti di HBase. È costruito su Hadoop (che è solido come una roccia), è sotto Apache, è attivo ... cosa si può volere di più? La nostra esperienza:

  • HBase è fragile
  • incubo dell'amministratore (completa di impostazioni di configurazione in cui quelli di default sono meno che perfetto, la configurazione non trasparente, le modifiche da una versione all'altra, ...)
  • perde i dati (a meno che non hai impostato la configurazione X e hai cambiato Y per ... hai ottenuto il punto :) - l'abbiamo scoperto quando HBase si è bloccato e abbiamo perso 2 ore (!!!) di dati perché WAL non è stato configurato correttamente
  • manca secondario indici
  • non ha alcun modo per eseguire un backup del database senza t chiudendolo

Tutto sommato, HBase era un incubo. Non lo consiglierei a nessuno tranne che ai nostri diretti concorrenti. :)

MongoDB risolve tutti questi problemi e molti altri. È una delizia da configurare, rende l'amministrazione un lavoro semplice e trasparente e le impostazioni di configurazione predefinite sono davvero sensate. È possibile eseguire backup (hot), è possibile avere indici secondari. Da quanto ho letto, non consiglierei MapReduce su MongoDB (JavaScript, 1 thread per nodo solo), ma puoi usare Hadoop per questo.

Ed è anche MOLTO attivo rispetto a HBase.

anche: http://www.google.com/trends?q=HBase%2CMongoDB

Devo dire altro? :)

UPDATE: molti mesi dopo devo dire MongoDB consegnato su tutti i conti e altro ancora. L'unico vero svantaggio è che le società di hosting non offrono il modo in cui offrono MySQL. ;) Sembra che MapReduce sia destinato a diventare multi-threaded in 2.2. Comunque, non userei MR in questo modo. YMMV.

1

Cassandra è buono per scrivere i dati. ha il vantaggio di "scrive mai fallire". Non ha un singolo punto di errore.

HBase è molto buono per l'elaborazione dei dati. HBase è basato su Hadoop File System (HDFS), quindi HBase non ha bisogno di preoccuparsi della replica dei dati, della consistenza dei dati. HBase ha il singolo punto di errore. Non sono davvero sicuro che cosa significhi se ha un singolo punto di errore, quindi è somigliante a RDBMS dove abbiamo un singolo punto di errore. Potrei sbagliarmi perché sono abbastanza nuovo.

How abou RIAK? Qualcuno ha esperienza con RIAK. Io non so dove devi pagare, non ne sono sicuro. Bisogno di spiegazione

Un'altra cosa che preferireste usare quando si tratta solo di leggere molti dati. Non hai alcuna preoccupazione per la scrittura. Immagina di avere un database con Pitabyte e vuoi fare una ricerca veloce quale database NOSQL preferiresti?