2014-12-23 9 views
5

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ść?

+0

Czy masz jakieś indeksy na swojej db? Jeśli tak, upuść je podczas importowania. – dbcb

+0

@dbcb zrobiliśmy to. Obecnie nie ma żadnego indeksu na kolekcji. – Rahul

+0

Dlaczego nie używać zbiorczego interfejsu API do aktualizacji? - http://docs.mongodb.org/manual/reference/method/Bulk.find.update/ – BatScream

Odpowiedz

0

jeśli chcesz utrzymać szybkość reakcji w MongoDB po długich dane następnie użyć Mongo sharding i replikacji w bazie danych i gromadzenia

replikacji: - Replika ustawiony w MongoDB to grupa procesów mongod które zachowują ten sam zestaw danych. Zestawy replik zapewniają nadmiarowość i wysoką dostępność i są podstawą wszystkich wdrożeń produkcyjnych. Ta sekcja wprowadza replikację w MongoDB, a także komponenty i architekturę zestawów replik. Ta sekcja zawiera także samouczki dotyczące typowych zadań związanych z zestawami replik.

Replication Link

sharding: - Sharding to proces przechowywania rekordów danych na wielu komputerach i jest podejście MongoDB do spełnienia wymagań wzrostu danych. Wraz ze wzrostem rozmiaru danych pojedyncza maszyna może nie być wystarczająca do przechowywania danych ani do zapewnienia akceptowalnej przepustowości odczytu i zapisu. Sharding rozwiązuje problem z poziomym skalowaniem. Dzięki sharding dodajesz więcej maszyn, by wspierać wzrost danych i wymagania operacji odczytu i zapisu.

Sharding Link

Powiązane problemy