Mongoimport: aggiornare collezione notte senza interrompere il consumo di dati
-
22-10-2019 - |
Domanda
Ho una collezione di circa 625.000 oggetti.
Nightly via cron, ho recuperare un file aggiornato (TSV) di questi dati da un fornitore di dati e necessità di reimportare li nel mio MongoDB.
Qual è il modo migliore per farlo senza interrompere il sito / servizio e ai suoi utenti, che stanno consumando i dati? È mongoimport --upsert direttamente sulla raccolta il modo migliore? E 'solo così lento.
dovrei pensare ad altri metodi che coinvolgono le copie della mia collezione?
Soluzione
È mongoimport --upsert direttamente sulla raccolta il modo migliore? E 'solo così lento.
Questo lavoro, ma nella mia esperienza mongoimport
è stata lenta e poco maneggevole. Ha anche alcune altre gravi limitazioni:. Alcuna possibilità di tenere traccia dei progressi, nessun punto per la verifica / validazione, nessuna registrazione di quanto ci fa
dovrei pensare ad altri metodi che coinvolgono le copie della mia collezione?
Il metodo alternativo è quello di scrivere uno script che fa questo. Nella maggior parte delle lingue questo è abbastanza banale.
Questo vi darà la possibilità di monitorare i progressi e gestire i dati errati. Se si trova l'importazione particolarmente lento, si può anche essere in grado di sborsare il processo e dividere il lavoro.
A proposito di velocità
mi ricordo che si sta aggiornando 625K oggetti. Se è possibile ottenere 1k aggiornamenti / secondo che è ancora 10 minuti per aggiornare. Se si esegue mongostat
o controllare il vostro monitoraggio durante il processo di importazione, si dovrebbe ottenere qualche idea di quanto lavoro è stato fatto.