2010-10-06 5 views
7

Il nostro sito web ha bisogno di un sistema di gestione dei contenuti. Ad esempio, gli amministratori desiderano creare pagine di promozione al volo. Forniranno del testo e delle immagini per la pagina e l'url su cui la pagina deve essere attiva. Abbiamo bisogno di un archivio dati per questo. I criteri per l'archivio dati sono semplici e definiti di seguito. Non ho familiarità con CouchDB o MongoDB, ma penso che potrebbero essere più adatti a questo rispetto a MySQL, ma cerco qualcuno con più conoscenza di MongoDB e CouchDB per entrare.Quale si adatta meglio alle mie esigenze: MongoDB, CouchDB o MySQL. Criteri definiti nella domanda

Su una scala da 1 a 10 come giudichi MongoDB, CouchDB, e MySQL per il seguente: cliente

  • Java
  • web monitorare i clic
  • CMS come sistema
  • file caricati
  • Negozio
  • facile da installare failover
  • Supporto
  • Documentazione

Quale scegliereste in queste circostanze?

+0

Per la memorizzazione dei file considerare l'uso di gluster (http://www.gluster.org) o ceph (www.ceph.com) – JoG

risposta

6

Ognuno è adatto a diversi casi di utilizzo. Ma nei siti a basso traffico mysql/postgresql è meglio.

client Java: tutti hanno clienti

click web Traccia: mongo e Cassandra è più adatto per questo alto situazione scrittura

memorizzare i file caricati: Mongo con GridFS è adatto. cassandra può contenere fino a 2 GB per ogni colonna divisa in 1 mb. mysql non è adatto. archiviare solo il percorso del file e archiviare il file nel filesystem è preffered per cassandra e mysql.

Facile da configurare il failover: Cassandra è la migliore, mongo secondo

supporto: tutti hanno un buon supporto, MySQL ha la più grande comunità, Mongo è secondo

Documentazione: 1 ° mysql, 2 ° Mongo

Preferisco MongoDB per l'analisi (clic Web, contatori, registri) (è necessario un sistema a 64 bit) e mysql o postgresql per i dati principali. sulle aziende che utilizzano la pagina mongo nel sito web mongo, è possibile vedere che la maggior parte di loro utilizza mongo per l'analisi. mongo può essere adatto per i dati principali dopo la versione 1.8. il problema con cassandra è la scarsa capacità di interrogazione (non adatto per un cms). e il problema con mysql non è così facile scalabile & HA come cassandra & mongo e anche mysql è più lento soprattutto sulle scritture. Non consiglio couchdb, è il più lento.

mio meglio

Serdar Irmak

0

Penso che ci siano molti altri post relativi a questo argomento. Tuttavia, interverrò da quando ho spostato mysql su mongodb. È veloce, molto veloce ma ciò non significa che sia perfetto. Il mio consiglio, usa quello che ti sta bene. Se ti ci vuole più tempo per rifattorizzare il codice per adattarlo a mongo o a un divano, passa a mysql se è quello che ti è familiare. Se questo è qualcosa che vuoi raccogliere come skillset allora con tutti i mezzi apprendi mongodb o couchdb.

Per me, sono andato con mongodb per un paio di motivi, archiviazione di file tramite gridfs e geolocalizzazione. Sì, avrei potuto usare mysql ma volevo vedere di cosa si trattava. Devo dire, sono impressionato e ho ancora dei modi per andare prima di poter dire di sentirmi a mio agio con mongo.

Con quello che hai elencato, posso dirti che mongo si adatta alla maggior parte delle tue esigenze.

5

Ecco alcune risposte rapide basate sulla mia esperienza con Mongo.

client Java

Non sono sicuro, ma esiste ed è ben supportato. Lots of docs, anche diversi POJO wrappers per renderlo facile.

Segui il clic

8 o 9. E 'davvero facile da fare sia di inserimento e aggiornamento grazie a "spara e dimentica". MongoDB ha strumenti integrati per mappare, ridurre i dati e strumenti facili per esportare i dati in SQL per l'analisi (se Mongo non è abbastanza buono).

CMS come il sistema

8 o 9. E 'facile per memorizzare l'intero contenuto della pagina web. È davvero facile "agganciare" colonne extra. Questo è veramente il "pane e burro" di Mongo.

Conservare i file caricati

C'è una curva di apprendimento qui, ma ha un sistema di Mongo GridFS progettato specificamente sia per il salvataggio e servire dati binari.

Facile da configurare il failover

Avviare il server primario: Inizia la tua schiava: ./mongo --bindip 1.2.3.5 --dbpath /my/data/files --slave --source 1.2.3.4

Supporto

10gen ha una mailing list: http://groups.google.com/group/mongodb-user. Hanno anche pagato il supporto.

loro tempo di risposta in genere si colloca da qualche parte tra eccellente e impressionante.

Documentazione

media. È tutto lì, ma è ancora un po 'disorganizzato. Chock fino a un sacco di nuovi sviluppi negli ultimi.

0

non vedo nulla qui come "deve gestire milioni di req/s" che indicherebbe rotazione proprio sarebbe meglio che usare qualcosa dallo scaffale come Drupal .

+0

Il mio sito web attualmente comunica con il back-end tramite l'interfaccia SOAP. La parte CMS del sito web avrà bisogno di alcune di queste informazioni. Deve anche essere in grado di condividere i dati della sessione con la parte principale del sito. Esiste una soluzione Java per questo con una licenza equa? – Bradford

2

mio prendere su CouchDB:

Java Cliente: è grande, utilizzare EKTORP che è abbastanza facile e completa mappatura oggetto. In ogni caso tutte le API sono solo JSON su HTTP quindi è tutto facile.

Traccia web: Forse redis è uno strumento migliore per questo. CouchDB non è l'opzione migliore qui.

Sistema simile al CMS: è ottimo in quanto è possibile combinare facilmente modelli, forme dinamiche, dati ed ecc. E raggrupparli utilizzando le viste.

Archivia file caricati: qualsiasi documento in couchdb può avere allegati arbitrari quindi è una scelta naturale.

Facile da configurare failover: master/replica maestro assicurarsi che si sta sempre leggere di andare, base di dati non viene mai corrompe quindi in caso di fallimento è solo una questione di divano inizio di nuovo e ci vorrà più di dove si ferma (tempi di inattività minimi) e la replica prenderà le modifiche.

Supporto: avere una mailing list e supporto a pagamento.

Documentazione: utilizzare il libro aperto http://guide.couchdb.org e wiki.