2012-06-13 7 views
11

Sono abbastanza nuovo nei database NoSql, ma mi piace molto MongoDB con il driver C# ufficiale. Attualmente è il back-end di un'applicazione MVC che sto scrivendo, e la semplicità e la velocità rendono la mia vita molto più semplice.Quali vantaggi offre MongoDB su ElasticSearch come database NoSQL solo

Tuttavia, sono giunto a quel punto dell'applicazione in cui ho davvero bisogno di una ricerca eccellente. Usavo Solr, ma sono diventato molto interessato a ElasticSearch.

ElasticSearch, per quanto posso dire (da un livello molto superficiale), può fare tutto ciò che MongoDB può in termini di essere un database di documenti.

Quindi, se sto già utilizzando un NoSql db, e ho bisogno di una grande ricerca, c'è qualche punto in Mongo? Qual è il caso d'uso?

Mongo è più veloce? Più facile da usare? Sono i tipi di dati e driver BSON? Perché non usare ElasticSearch come mio DB?

Attualmente sto usando AppHarbor e lovin '"The Cloud". Odio l'IT e voglio concentrarmi solo sulla mia applicazione. Detto questo, l'unico vantaggio che vedo finora è:

  • Esistono già numerosi provider MongoDB "Cloud". Con ElasticSearch devo sistemare tutto da solo.
+0

Tipo di ampio. E non penso che il più veloce sia il criterio giusto. Per un'app di piccole e medie dimensioni produrranno una buona velocità. Guarda caratteristiche e facilità di sviluppo e supporto. L'installazione e l'ambiente non sono così difficili. Quanto ti odio? – Paparazzi

+2

In breve: ricerca di più chiavi. Un po 'più a lungo una combinazione di ES + MongoDB è fantastica, la sto utilizzando in un sito Web che si avvicina alla produzione con oltre 4 anni di esperienza con Solr/Lucene, Membase e altre alternative. Best practice, almeno per me: mantieni i tuoi modelli di dominio in Mongo, fai ricerche in ES ma memorizzi solo le chiavi, e dopo una ricerca ES esegui una ricerca di chiavi in ​​Mongo. –

+1

@ Geert-Jan perché? Quando ES può restituire il documento contemporaneamente alla ricerca multi-chiave. Che vantaggio hai colpito ES e poi mongo? – DrTech

risposta

3

Questa è una buona domanda. Mi sono posto la stessa domanda e ho trovato la seguente risposta.

  1. ElasticSearch non ha un buon modo per eseguire il backup dei dati. Ad esempio, fai una rapida ricerca per "ElasticSearch backup" e uno per "mongodb backup". MongoDB ha strumenti e documentazione su come eseguire il backup dei dati. Sebbene esista documentazione su come eseguire il backup dei dati ElasticSearch, questa documentazione non sembra matura.
  2. In generale, MongoDB ha una documentazione molto migliore. In particolare la sua documentazione di amministrazione è molto meglio di ElasticSearch.
  3. MongoDB fornisce supporto commerciale. Al momento non ti interessa il supporto commerciale, ma è bello sapere che è disponibile.
  4. MongoDB ha MapReduce integrato, ElasticSearch no. Questo potrebbe non essere una grande cosa, ma vale la pena notare.

La mia opinione personale è che non utilizzerei ElasticSearch se non ci si può permettere di perdere dati. Potrei vedere usando ElasticSearch come archivio dati principale per qualcosa che richiede analisi in tempo reale, ma non ha avuto requisiti di conservazione dei dati a lungo termine. Altrimenti, suggerirei di usare insieme MongoDB ed ElasticSearch. C'è un plugin River MongoDB per ElasticSearch. Questo rende piuttosto facile aggiornare automaticamente l'indice ElasticSearch.