Obecnie naszym zadaniem jest pobrać milion rekordów z zewnętrznego serwera, przetworzyć go i zapisać w bazie danych. Używamy node.js
do pobierania rekordów i mongodb
jako bazy danych.Odpowiedź Mongodb spowalnia niewiarygodnie po 200 000 rekordach
Postanowiliśmy podzielić proces na 2 zadania, pobierając zapisy i przetwarzając je. Teraz jesteśmy w stanie pobrać wszystkie zapisy i zrzucić je w mongorze, ale kiedy próbujemy je przetworzyć (przetwarzając mam na myśli zmianę kilku wartości atrybutów, wykonuję proste obliczenia i aktualizuję atrybuty), widzimy drastycznie powolną odpowiedź w mongodie aktualizacje wokół rekordów 200,000
.
Do przetwarzania danych, pobieramy partie 1000 rekordów, przetwarzamy je, aktualizujemy rekordy (indywidualnie), a następnie przechodzimy do następnej partii. Jak można poprawić wydajność?
Czy masz jakieś indeksy na swojej db? Jeśli tak, upuść je podczas importowania. – dbcb
@dbcb zrobiliśmy to. Obecnie nie ma żadnego indeksu na kolekcji. – Rahul
Dlaczego nie używać zbiorczego interfejsu API do aktualizacji? - http://docs.mongodb.org/manual/reference/method/Bulk.find.update/ – BatScream