Mapa-zmniejsz wydajność w MongoDb 2.2, 2.4 i 2.6

Znalazłem tę dyskusję: MongoDB: fatalna wydajność MapReduce . Zasadniczo mówi, że staraj się unikać zapytań MR Mongo, ponieważ jest jednowątkowy i nie powinien być w ogóle w czasie rzeczywistym. Minęły 2 lata i zastanawiam się, co się zmieniło od tamtego czasu. Teraz mamy MongoDb 2.2. Słyszałem, że pani jest teraz wielowątkowa. Proszę podzielić się swoimi pomysłami na wykorzystanie MR dla żądań w czasie rzeczywistym, takich jak pobieranie danych dla aplikacji internetowych częste żądania http. Czy jest w stanie efektywnie wykorzystać indeksy?

Author: Community, 2012-10-01

1 answers

Oto aktualny stan funkcjonalności Map/Reduce w MongoDB

1) Większość ograniczeń wydajności Map / Reduce nadal obowiązuje w MongoDB w wersji 2.2. Silnik Map/Reduce nadal wymaga, aby każdy rekord został przekonwertowany z BSON na JSON, rzeczywiste obliczenia są wykonywane za pomocą wbudowanego silnika JavaScript (który jest powolny), a nadal istnieje pojedyncza globalna blokada JavaScript, która pozwala tylko na uruchomienie pojedynczego wątku JavaScript w jednym czasie.

Tam zostały pewne przyrostowe ulepszenia Map/Reduce dla sharded clusters. Przede wszystkim, ostateczna operacja redukcji jest teraz dystrybuowana na wiele odłamków, A wyjście jest również dzielone równolegle.

Nie polecam Map/Reduce do agregacji w czasie rzeczywistym w MongoDB w wersji 2.2

2) począwszy od MongoDB 2.2, istnieje Nowy Framework agregacji. Jest to nowa implementacja operacji agregacji, napisana w C++ i ściśle zintegrowana z MongoDB ramy.

Większość zadań Map/Reduce może być przepisana w celu użycia frameworka agregacji. Zwykle działają szybciej (20x Poprawa prędkości vs Map/Reduce jest powszechne w wersji 2.2), w pełni wykorzystują istniejący silnik zapytań i można uruchamiać wiele komend Agregacyjnych równolegle.

Jeśli masz wymagania dotyczące agregacji w czasie rzeczywistym, pierwszym miejscem do rozpoczęcia jest Framework agregacji. Aby uzyskać więcej informacji na temat struktury agregacji, zapoznaj się z poniższymi informacjami linki:

3) w MongoDB w wersji 2.4 wprowadzono znaczące ulepszenia w Map/Reduce. Silnik JavaScript Spidermonkey został zastąpiony przez silnik JavaScript V8 i nie ma już globalnej blokady JavaScript, co oznacza, że można uruchomić wiele wątków Map/Reduce / align = "left" /

Silnik Map / Reduce jest nadal znacznie wolniejszy niż Framework agregacji, z dwóch głównych powodów:

  • Silnik JavaScript jest interpretowany, natomiast Framework agregacji uruchamia skompilowany kod C++

  • Silnik JavaScript nadal wymaga, aby każdy badany dokument został przekonwertowany z BSON do JSON; jeśli zapisujesz wyjście w kolekcji, zestaw wyników musi zostać przekonwertowany z JSON z powrotem do BSON

Nie ma znaczących zmian w Map/Reduce między 2.4 A 2.6.

Nadal nie polecam używania Map/Reduce do agregacji w czasie rzeczywistym w MongoDB w wersji 2.4 lub 2.6.

4) jeśli naprawdę potrzebujesz Map/Reduce, możesz również spojrzeć na adapter Hadoop. Więcej informacji tutaj:

 56
Author: William Z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-16 14:50:37