MongoDB o CouchDB: adatti alla produzione? [chiuso]


485

Mi chiedevo se qualcuno potesse dirmi se MongoDB o CouchDB sono pronti per un ambiente di produzione .

Sto ora esaminando queste soluzioni di archiviazione (al momento preferisco MongoDB), tuttavia questi progetti sono piuttosto giovani e quindi prevedo che dovrò lavorare abbastanza duramente per convincere il mio manager che dovremmo adottare questo nuova tecnologia.

Quello che mi piacerebbe sapere è:

  1. Chi utilizza MongoDB o CouchDB oggi in un ambiente di produzione?

  2. Come stai usando MongoDB / CouchDB?

  3. Quali problemi hai riscontrato quando hai adottato questo nuovo meccanismo di archiviazione (e come li hai superati)?

  4. Come hai affrontato i problemi di migrazione che hai dovuto affrontare?

  5. Hai delle esperienze positive / negative con una di queste soluzioni che vorresti condividere?


2
Guardando attraverso le risposte, non ho davvero trovato quello che cercavo. Poiché entrambi i database sono molto simili, quale dovrei scegliere? Quali sono i vantaggi di uno di essi? Per quale tipo di applicazione dovrei scegliere quale? Sarebbe bello se qualcuno potesse rispondere a queste domande.
polemon

Dipende davvero da come verranno utilizzati. La mancanza di transazioni è preoccupante per molti ambienti, ma perfettamente perfetta per altri. Inoltre, è fondamentalmente difficile "eseguire il backup" di un database distribuito, sebbene l'argomento sia che la persistenza dei dati sia garantita attraverso la replica su più frammenti.
Samuel O'Malley,

2
@ pauluss86 Penso che dovresti probabilmente aggiungere la dichiarazione di non responsabilità al link di pauluss86 secondo cui l'autore (Emin) proviene effettivamente da un concorrente di MongoDB (Hyperdex) - quindi solo un leggero pregiudizio lì. Per essere onesti, c'è una risposta corrispondente su InfoQ da MongoDB qui - infoq.com/news/2013/02/MongoDB-Fault-Tolerance-Broken
victorhooi

@victorhooi vero, ma rimane una preoccupazione valida secondo me. C'è anche un seguito alla risposta di InfoQ: link . Personalmente, non sono troppo convinto della difesa di Mongo. In ogni caso, consiglio a chiunque di leggere il problema (entrambi i lati) prima di scegliere un database.
pauluss86,

Questo dice che tutto db-engines.com/en/ranking MongoDB sta guadagnando terreno giorno dopo giorno ed è il Document Store più popolare sul web
arkoak

Risposte:


268

Sono il CTO di 10gen (sviluppatori di MongoDB), quindi sono un po 'di parte, ma gestisco anche alcuni siti che utilizzano MongoDB in produzione.

businessinsider utilizza mongo in produzione da oltre un anno. Lo stanno usando per tutto, dagli utenti e post di blog, a ogni immagine del sito.

shopwiki lo sta usando per alcune cose tra cui analisi in tempo reale e un livello di memorizzazione nella cache. Stanno eseguendo oltre 1000 scritture al secondo su un database abbastanza grande.

Se vai alla pagina Distribuzioni di produzione mongodb vedrai alcune persone che usano mongo in produzione.

In caso di domande sulla portata o l'ambito delle distribuzioni di produzione, pubblicare sul nostro elenco utenti e saremo più che felici di aiutarti.



1
ti dispiacerebbe far funzionare mongodb con v8 di default. e mongodb mangia troppa memoria per i poveri che usano un VPS con memoria da 512M.
Guilin 桂林

Puoi avere almeno AC (i) D - atomicità perché singolo master writer, coerenza perché hai coerenza per documento, durata perché puoi specificare quante scritture sono necessarie prima della scrittura ACKing, ad esempio quanti altri nodi devono ottenere i dati prima Lo sto prendendo.
Henrik,

+1 per i collegamenti. incredibile quanti ppl usano mongodb in produzione
Michael Malura,

Sembra che molte cose siano cambiate negli ultimi 5 anni. Quella lista è enorme! :)
asincrono il

110

La BBC e meebo.com usano CouchDB in produzione e anche uno dei miei clienti. Ecco un elenco di altre persone che usano Couch: CouchDB in natura

La sfida principale è sapere come organizzare i documenti e smettere di pensare in termini di dati relazionali.


7
In realtà per me la grande sfida sta tornando indietro se è necessario. Una volta rimossi dalla mente i "vincoli relazionali", è difficile tornare indietro. :)
johndodo


34

Stiamo eseguendo CouchDB come sostituto di MySQL per i nostri negozi (70.0000 articoli / negozio, per un totale di 4 milioni di attributi di tutti gli articoli, collegamenti incrociati tra gli articoli).

I nostri obiettivi erano:

  1. Facile replica da un master-db a diversi client con documenti diversi.

  2. Dati precalcolati rapidi come "quante parti ho con questo attributo e quel filtro, adattandosi a quelle condizioni"

fatti:

  1. I nostri negozi ora funzionano molto più velocemente rispetto a MySQL (e il database mysql ha richiesto 1-3 giorni di pre-calcolo (quindi l'aggiornamento è stato due volte al mese), rendendo i dati pronti per il conteggio e il filtro dei prodotti, CouchDB ha bisogno di 5 ore, quindi potremmo aggiornare i dati dei prodotti ogni notte)
  2. L'impostazione della distribuzione dei dati (filtrata) e dei backup sui nodi del negozio è semplice e veloce

ma anche:

  1. Comprendere mappa / ridurre e i limiti di non avere join è abbastanza difficile
  2. Nessuna operazione su dati come "elimina dove" o "aggiorna dove" senza programmi esterni
  3. La replica funziona bene, a meno che non ci sia un problema; quindi è davvero difficile scoprire qual è stata la ragione (per i principianti)
  4. L'installazione di CouchDB senza binari (sì, ce ne sono alcuni in the wild, ma non per ogni sistema operativo / versione) potrebbe essere difficile, se non sei un fanatico di Linux. Ma la Community di CouchDB è utile (#couchdb), e fortunatamente ci sono aziende là fuori (cloudant, iriscouch) che offrono servizi da liberi a grandi aziende.
  5. CouchDB sta andando avanti, quindi ci sono molte modifiche (miglioramenti) che potrebbero cambiare nel modo in cui lavori. Ma le cose di base rimangono stabili.

Di conseguenza: MySQL come database per la creazione e la gestione dei dati è affidabile, facile da capire e gestire. Penso che non cambieremo questo. Inoltre, non voglio perdere la potenza delle visualizzazioni CouchDB e la facilità di impostazione della replica.

I divani di produzione a volte causavano problemi dopo mesi di lavoro a causa di errata configurazione e logrotati dimenticati (la visualizzazione della vista richiede troppo tempo o si blocca, la replica si arresta), ma non ha mai perso i dati e potrebbe sempre essere facilmente ripristinata.


70.000 o 700.000 articoli per negozio? inoltre, è cambiato qualcosa da quando hai scritto il post? alcune funzionalità mancanti implementate forse?
Erik Kaplun,

27

Sto usando CouchDB in produzione. Attualmente memorizza tutti quei campi 'opzionali' che non erano nello schema DB originale. E proprio ora sto pensando di spostare tutti i dati su CouchDB.

È un passo piuttosto rischioso, lo ammetto. Innanzitutto, perché non è ancora v1.0. E in secondo luogo, perché ha fame di spazio. Secondo i miei calcoli, il file CouchDB (con indici) è ~ 30 volte più grande del database MySQL con le stesse righe. Ma sono abbastanza sicuro che funzionerà bene.


1
Bene, non ha funzionato affatto. Mi sono sbarazzato di couchdb dopo un paio di mesi.
Sergio Tulentsev,

@aetheria: non ha gestito il carico. Inoltre abbiamo scritto così tante cose che avremmo bisogno di compattarlo ogni ora o giù di lì. CouchDB non è per le app pesanti.
Sergio Tulentsev,

Grazie. Ho ragione che è il problema gli aggiornamenti di documenti esistenti? vale a dire scrivere nuovi documenti è OK, ma l'aggiornamento lascia immondizia inutilizzata nel file. È corretto?
ᴇʟᴇvᴀтᴇ

IIRC, anche le nuove scritture non erano troppo performanti. Troppo disco cerca con questo approccio a doppia intestazione.
Sergio Tulentsev,

2
@aetheria: torna a mysql e poi a mongo. Aveva una buona dose di problemi ovunque. :)
Sergio Tulentsev,


17

Non so nulla di MongoDB, ma dalle FAQ di CouchDB :

CouchDB è pronto per la produzione?

Sì, vedi InTheWild per un elenco parziale di progetti che utilizzano CouchDB. Un'altra buona panoramica è Case Study di CouchDB

Inoltre, alcuni link:


Questa è una vecchia notizia: ora il link dice "Sì, vedi InTheWild per un elenco parziale di progetti che utilizzano CouchDB. Un'altra buona panoramica è Case Study di CouchDB"
J Chris A

14
@J Chris A: Certo che è vecchio, l'ho pubblicato un anno e mezzo fa. :)
Sasha Chedygov il

16

Usiamo couchdb in produzione e da poco prima che il progetto passasse sotto l'ombrello di Apache.

Lo usiamo per archiviare tutto ciò che altrimenti potremmo usare un dbms, oltre a tutti i tipi di dati non strutturati. Personalmente, mi piace molto il modo in cui puoi semplicemente inserire tutti i tipi di dati e utilizzare le viste per eliminare ciò di cui non hai bisogno a seconda della situazione.

La parte più difficile si stava allontanando dalla mentalità dei dbms. Abbiamo scritto i nostri programmi di utilità per la migrazione quando il formato di archiviazione è cambiato solo per sicurezza, quindi non è stato un problema.

Non abbiamo ancora avuto esperienze negative, ma di nuovo non abbiamo avuto l'installazione sotto alcun tipo di carico enorme. Penso che le cose funzionerebbero abbastanza bene dal momento che abbiamo due server di tipo slave che si replicano da un singolo server master che ottiene tutte le scritture. Sono abbastanza sicuro che non dobbiamo farlo in questo modo per far funzionare correttamente la replica, ma è come l'abbiamo impostato all'inizio e si è bloccato.


13

Usiamo CouchDB per archiviare messaggi in entrata e in uscita mobili e per riferire su questo traffico tramite alcune visualizzazioni personalizzate che ho scritto. Il front-end è scritto in Python. Non abbiamo avuto problemi tecnici reali ed è attivo dalla fine di dicembre. L'unico ostacolo che ho incontrato è stato inizialmente pensare in termini di MapReduce, ma una volta che ho imparato a farlo, tutto il resto è andato liscio.


9

Attualmente stiamo utilizzando MongoDB in produzione come livello di memorizzazione nella cache, nonché motore di archiviazione per l'importazione e la manipolazione dei dati dei prodotti. Siamo una società di eCommerce che gestisce oltre due milioni di prodotti (oltre 100 milioni di attributi), che comprende oltre 10 distributori e senza MongoDB, questo compito sarebbe quasi impossibile.


2
Quanto è stato provato mongoDB per te? + Quanto ha funzionato la replica nella vita reale?
Industrial

4
Implementiamo la topologia del set di repliche in esecuzione 1.6. (Non sono sicuro di quale versione secondaria sia fuori mano). Finora l'unico problema che abbiamo riscontrato è apparentemente quando un disco esaurisce lo spazio, anche con le scritture di salvataggio abilitate, nessun flag viene sollevato. Quindi assicurati di avere MOLTO spazio!
Joshua Burns,

1
L'affidabilità, tuttavia, è stata fenomenale, sorprendentemente buona come avevamo sperato. Non ci sono ancora problemi con l'arresto anomalo- Anche se questa è in qualche modo una nuova implementazione.
Joshua Burns,

1

Attualmente stiamo usando mongodb come servizio di archiviazione di file per la nostra collaborazione su LAN. Inoltre, progetti come trello utilizzano mongodb come archivio dati back-end. Ho usato couchdb prima, ma non in capacità di produzione.


0

Stiamo utilizzando MongoDB in produzione nel nostro servizio di backend mobile, ovvero Netmera. Lo stiamo usando per archiviare tutti i dati di utenti e contenuti.


0

Uso CouchDB in produzione da quasi 2 anni. Non c'è lavoro di migrazione poiché il progetto è iniziato direttamente con l'implementazione di CouchDB. Funge da database che memorizza i dati di un singolo prodotto elettronico dall'inizio fino al confezionamento.

Dal momento che stiamo vendendo sensori con una richiesta di alta precisione, facciamo molti test in diverse fasi e tutti questi saranno archiviati in un documento su CouchDB.

C'è una curva di apprendimento che ho imparato dalla mia esperienza, che è di sfruttare appieno le viste (o anche conosciute come viste permanenti). Le viste dovrebbero essere "piccoli filtri" di una frazione del database che verrà chiamata spesso.

Il mio databse di CouchDB non è pazzo come un'altra compagnia gigantesca. Ma finora, sto ancora bene. Attualmente sto avendo 24000 documenti a 700 MB.

La funzionalità di CouchDB che mi piace è "replica", "memorizza le revisioni di un documento".

Ho letto molte buone recensioni su MongoDB e vorrei provarlo se c'è una possibilità.


0

Stiamo usando mongodb in produzione per

www.beachfront.io - vicino a 5k richiesta di scrittura al secondo www.beachfrontbuilder.com - 500 richieste di lettura / scrittura al secondo, gestione di 10 milioni di dati utente e olap.

L'unica sfida affrontata per l'archiviazione dei dati è stata superata implementando il nostro componente personalizzato.


0

Questa domanda ha già accettato la risposta, ma ora un giorno un altro DB NoSQL è di tendenza per molte delle sue fantastiche funzionalità. Lo è Couchbase; che funziona come CouchbaseLitesu piattaforma mobile e Couchbase Serversul lato server.

Ecco alcune delle caratteristiche principali di Couchbase Lite.

Couchbase Lite è un motore di database leggero, orientato ai documenti (NoSQL) e sincronizzabile adatto per l'integrazione in app mobili.

Leggero significa:

Incorporato: il motore di database è una libreria collegata all'app, non un processo server separato. Dimensioni ridotte del codice: importante per le app mobili, che vengono spesso scaricate su reti cellulari. Tempo di avvio rapido: importante perché i dispositivi mobili hanno CPU relativamente lente. Basso utilizzo della memoria: i set di dati mobili tipici sono relativamente piccoli, ma alcuni documenti potrebbero avere allegati multimediali di grandi dimensioni. Buone prestazioni: le cifre esatte dipendono dai dati e dall'applicazione, ovviamente.

Orientato al documento significa:

Memorizza i record in formato JSON flessibile anziché richiedere schemi o normalizzazioni predefiniti. I documenti possono avere allegati binari di dimensioni arbitrarie, ad esempio contenuti multimediali. Il formato dei dati delle applicazioni può evolversi nel tempo senza la necessità di migrazioni esplicite. L'indicizzazione di MapReduce fornisce ricerche rapide senza la necessità di utilizzare linguaggi di query speciali.

Sincronizzabile significa:

Ogni due copie di un database possono essere sincronizzate tramite un algoritmo di replica efficiente, affidabile e comprovato. La sincronizzazione può essere su richiesta o continua (con una latenza di pochi secondi). I dispositivi possono sincronizzarsi con un sottoinsieme di un database di grandi dimensioni su un server remoto. Il motore di sincronizzazione supporta connessioni di rete intermittenti e inaffidabili. I conflitti possono essere rilevati e risolti, con la logica dell'app che ha il pieno controllo della fusione. Gli alberi di revisione consentono complesse topologie di replica, tra cui server-server (per più data center) e peer-to-peer, senza perdita di dati o falsi conflitti. Couchbase Lite fornisce API native per lo sviluppo continuo di iOS (Objective-C) e Android (Java). Inoltre, include il plug-in Couchbase Lite per PhoneGap,

Puoi esplorare di più su Couchbase Lite

e Couchbase Server

Questo sta per la prossima grande cosa.


0

Parlando di produzione, il failover / recupero senza soluzione di continuità richiede entrambi una baby sitter
1- Couchbase, non c'è failover / recupero senza soluzione di continuità, è necessario un intervento manuale.
il riequilibrio richiede troppo tempo, troppi rischi se si perde più di un nodo.

2- Mongo con i frammenti, il recupero dei dati dalla perdita di un server di configurazione, non è un compito facile


0

Adobe utilizza MongoDB per l'imminente rilascio di Adobe Experience Manager (precedentemente Day CQ ) come motore DB principale.

Numerosi clienti dell'agenzia presso cui lavoro utilizzano CouchDB su progetti per clienti di grandi dimensioni.

A mio avviso, entrambi sono DB validi e vitali. :)


-2

Ecco un elenco di siti distribuiti di produzione con mongoDB

  • The New Yorks Times : utilizzarlo in un'applicazione per la creazione di moduli per l'invio di foto. La mancanza di schema di Mongo offre ai produttori la possibilità di definire qualsiasi combinazione di campi modulo personalizzati.
  • SourceForge : viene utilizzato per l'archiviazione back-end nelle prime pagine di SourceForge, nelle pagine dei progetti e nelle pagine di download per tutti i progetti.
  • Bit.ly
  • Etsy
  • IGN : supporta le analisi del traffico in tempo reale di IGN e le API di contenuto RESTful.
  • Justin.tv : potenzia gli strumenti di analisi interna di Justin.tv per la viralità, la fidelizzazione degli utenti e le statistiche generali di utilizzo che le soluzioni pronte all'uso non sono in grado di fornire.
  • Posterous
  • Intuit
  • Foursquare : i database Sharded Mongo vengono utilizzati per la maggior parte dei dati su foursquare.
  • Business Insider : utilizzandolo dall'inizio del 2008. Tutti i dati del sito, inclusi post, commenti e persino le immagini, sono archiviati su MongoDB.
  • Github : viene utilizzato per un'applicazione di reporting interna.
  • Examiner : migrato il loro sito da Cold Fusion e SQL Server a Drupal 7 e MongoDB.
  • Grooveshark : attualmente utilizza Mongo per gestire oltre un milione di sessioni utente uniche al giorno.
  • Buzzfeed
  • disco
  • Evite : utilizzato per analisi e report rapidi.
  • Squarespace
  • Shutterfly : viene utilizzato per vari requisiti di archiviazione dei dati persistenti all'interno di Shutterfly. MongoDB aiuta Shutterfly a costruire un servizio senza rivali che consente relazioni più profonde e personali tra i clienti e coloro che contano di più nella loro vita.
  • Topsy
  • Condividi questo
  • Mongohq : fornisce una piattaforma di hosting per MongoDB e utilizza MongoDB come back-end per il suo servizio. La nostra pagina dei centri di hosting fornisce ulteriori informazioni su MongoHQ e altre opzioni di hosting MongoDB.

e altro ancora ...

Estratto da: http://lineofthought.com/tools/mongodb

È possibile controllare anche altri database o strumenti.


Aggiunta gran parte dell'elenco al post
fernandopasik il

-6

MongoDB ha alcuni problemi con le licenze alle imprese, non sono sicuro dei dettagli, ma il nostro ufficio legale ci ha detto in nessun modo che non ci era permesso usare MongoDB in nessuno dei nostri prodotti.


1
mentre non hai specificato i problemi esatti con le licenze, non c'è nulla di sbagliato nelle licenze MongoDB mongodb.org/about/licensing Utilizza la licenza AGPL che può essere causa di problemi nel tuo dipartimento legale, ma affermano che qualsiasi client DB è lavoro separato. "promettiamo che la tua applicazione client che utilizza il database è un lavoro separato. Per facilitare ciò, i driver supportati da mongodb.org (la parte che colleghi con la tua applicazione) sono rilasciati sotto licenza Apache, che è libera da copyleft."
Marek,
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.