2010-08-17 12 views
33

Sto sviluppando un sito di appuntamenti e sto pensando di usare un database NoSQL per archiviare i profili ecc. Sto guardando attentamente il MongoDB e finora sono molto contento. L'unica preoccupazione è che leggo su diversi siti Web che MongoDB è inaffidabile e non buono.MongoDB è affidabile?

ho guardato dentro le alternative NoSQL e non ha trovato uno che soddisfi pienamente i miei criteri specifici:

  1. Facile da apprendere e utilizzare.

  2. Completamente compatibile con PHP out of the box.

  3. Veloce e ben documentato.

Cosa ne pensi, sto facendo la cosa giusta con MongoDB o è una perdita di tempo?

Grato per tutti gli input in materia!

+5

Qualsiasi software, in particolare uno su cui si applica il sentimento "religioso" (ad esempio 'vi' vs.' emacs') avrà la sua quota di detrattori. Come fai a sapere che "diversi siti web" sono affidabili? (Io non uso (consapevolmente) MongoDB oi suoi parenti quindi non ho un'opinione in merito). – msw

+1

per altri dbs NoSQL facili da imparare, mi piace Redis e memcachedb – Javier

risposta

7

Qualsiasi software può essere affidabile o inaffidabile. MongoDB dispone di serie di repliche che offrono funzionalità di failover hardware. È possibile eseguire regolarmente i backup, che offre un intervallo di recupero, e si ottiene una condivisione che può darti un po 'di ridondanza, specialmente se combinato con i set di repliche.

Il problema non è se la tecnologia sia affidabile o meno, il problema è se si dispone o meno di un piano di backup e ripristino ben definito adatto alla piattaforma scelta.

Se MongoDB soddisfa le tue esigenze, stai facendo la scelta giusta. Assicurati di indagare su cosa puoi fare per aumentare la tua affidabilità.

2

10gen, la società dietro MongoDB fornisce driver PHP ufficiale. Come dice Jeremiah, implementano i set di repliche nell'ultima versione (1.6.0) e hanno già eseguito il debug di esso (1.6.1 e la prossima versione in alcune settimane: 1.6.2).

Mostover, il supporto gratuito da parte della società e delle comunità è molto veloce ed efficiente (da 'libero' intendo domanda sui gruppi di Google: http://groups.google.com/group/mongodb-user?pli=1)

25

ho ricercato MongoDB per il mio avvio del servizio sociale ed è sicuramente vale la pena considerare. MongoDB ha un potente set di funzionalità che lo rende un'alternativa realistica e forte alle soluzioni RDBMS.

Tra queste:

  1. documento di database: maggior parte dei dati è incorporato in un documento, così al fine di ottenere i dati su una persona, non c'è bisogno di unire diverse tabelle. Quindi, migliori prestazioni per molti casi d'uso.
  2. Strong Query Language: Nonostante non sia un RDBMS, MongoDB ha un linguaggio di query molto forte che consente di ottenere qualcosa di molto specifico o molto generale da un documento o documenti. Il DB viene interrogato usando javascript in modo da poter fare molte altre cose oltre alla query (ad es.funzioni, calcoli).
  3. Sharding & Replicazione: Sharding consente all'applicazione di scalare orizzontalmente anziché verticalmente. In altre parole, più piccoli server invece di un enorme server. E la replica offre la sicurezza del failover in diverse configurazioni (ad es. Master/slave).
  4. potente indicizzazione: ho inizialmente ottenuto interessato MongoDB perché permette geo-spaziale indicizzazione fuori dalla scatola ma ha molte altre configurazioni di indicizzazione pure.
  5. Piattaforma incrociata: MongoDB ha molti drivers.

Per quanto riguarda la documentazione, non c'è il diluvio ma questo perché questo progetto è iniziato solo nel 2009; presto ce ne saranno molti di più Tuttavia, c'è abbastanza per iniziare con il tuo progetto. In aggiunta a ciò puoi controllare Kyle Banker MongoDB in Action, ottima risorsa.

Infine, ho avuto esperienza solo con RDMBS prima di MongoDB, non conoscevo javascript o json e comunque lo trovavo molto semplice ed elegante.

5

Se è abbastanza buono per Foursquare, probabilmente è abbastanza buono per te.

2

Bene, un altro punti circa l'affidabilità:

  • La comunità reagisce estremamente veloce se incontrate qualunque problema critico.
  • Devi preoccuparti delle tue aspettative in merito a "affidabilità": hai bisogno di una garanzia per archiviare i tuoi dati in sicurezza, senza mai essere danneggiati?
    • In questo caso, si dovrà confrontare il costo di acquisto di hardware affidabile e la distribuzione di MongoDB replica-set
  • vuoi dire avere un servizio altamente disponibili?
  • MongoDB ha alcuni problemi giovanili, non posso dire il contrario. Ma questo NON è assolutamente uno spreco di tempo e forse una soluzione a lungo termine.
0

MongoDB sarebbe una buona scelta. Abbiamo valutato e iniziato a utilizzare MongoDB per i nostri casi aziendali. MongoDB ci offre prestazioni migliori di Oracle ed è anche scalabile orizzontalmente.

3

Provengo da uno sfondo RDBMS (12 anni) e ho trascorso gli ultimi 6 mesi a guardare le opzioni NoSQL. Per il tuo scenario, MongoDB, suona come una buona scelta.Quello che sto sentendo da quelli che hanno lavorato con MongoDB in produzione per un certo tempo, è che si dovrebbe seguire queste best practice:

  1. mantenere le dimensioni chiave piccola
  2. Valutare (e, eventualmente, aggiungere) indici per velocizzare le query
  3. Prestare attenzione allo schema (lo so sembra strano per un database 'schemaless', ma ho sentito più volte
  4. Usa replica imposta

Ecco un video di un migliore -pratiche parlano dal gruppo utenti LA MongoDB che trovo utile

2

Questo dipende da cosa è necessaria l'affidabilità. Mongo è molto affidabile per la lettura - ha una forte disponibilità e funzionalità di sharding.

OTOH, le scritte Mongo non sono affidabili. Mentre la maggior parte passa, non è mai garantito che l'aggiornamento abbia successo o meno e devi interrogare manualmente il database per verificare se lo ha fatto.

In questo modo, Mongo viene utilizzato al meglio quando si dispone di più letture rispetto alle scritture che è assolutamente necessario avere successo.

Problemi correlati