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?
Avete indici sul vostro db? Se è così, rilasciali mentre fai l'importazione. – dbcb
@dbcb lo abbiamo fatto. Attualmente non esiste alcun indice sulla collezione. – Rahul
Perché non utilizzare l'API di massa per gli aggiornamenti? - http://docs.mongodb.org/manual/reference/method/Bulk.find.update/ – BatScream