2014-12-23 13 views
5

Attualmente il nostro compito è di recuperare 1 milione di record da un server esterno, elaborarlo e salvarlo nel db. Stiamo utilizzando node.js per il recupero dei record e mongodb come database.La risposta di Mongodb rallenta incredibilmente dopo 200.000 record

Abbiamo deciso di suddividere il processo in 2 attività, recuperando i record ed elaborandoli. Ora siamo in grado di recuperare tutti i record e scaricarli in mongo, ma quando stiamo cercando di elaborarlo (elaborando voglio dire modificare alcuni valori di attributo, fare alcuni semplici calcoli e aggiornare gli attributi), vediamo drasticamente una risposta lenta in mongodb aggiornamenti attorno ai record 200,000.

Per elaborare i dati, prendiamo batch di 1000 record elaborarli, aggiornare i record (singolarmente) e quindi passare al lotto successivo. Come si potrebbe migliorare la prestazione?

+0

Avete indici sul vostro db? Se è così, rilasciali mentre fai l'importazione. – dbcb

+0

@dbcb lo abbiamo fatto. Attualmente non esiste alcun indice sulla collezione. – Rahul

+0

Perché non utilizzare l'API di massa per gli aggiornamenti? - http://docs.mongodb.org/manual/reference/method/Bulk.find.update/ – BatScream

risposta

0

se si vuole mantenere la velocità di risposta in MongoDB dopo i dati lunghi quindi utilizzare mongo sharding e la replica del database e la raccolta

replica: - Un set di repliche in MongoDB è un gruppo di processi mongod che mantengono lo stesso set di dati. I set di replica forniscono ridondanza e disponibilità elevata e costituiscono la base per tutte le distribuzioni di produzione. Questa sezione introduce la replica in MongoDB, nonché i componenti e l'architettura dei set di repliche. La sezione fornisce anche tutorial per attività comuni relative ai set di repliche.

Replication Link

sharding: - Sharding è il processo di memorizzazione record di dati su più macchine ed è l'approccio di MongoDB a soddisfare le esigenze di crescita dei dati. Con l'aumento della dimensione dei dati, una singola macchina potrebbe non essere sufficiente per archiviare i dati né fornire un throughput di lettura e scrittura accettabile. Sharding risolve il problema con il ridimensionamento orizzontale. Con il sharding, si aggiungono più macchine per supportare la crescita dei dati e le richieste di operazioni di lettura e scrittura.

Sharding Link

Problemi correlati