sql >> Databáze >  >> NoSQL >> MongoDB

Mapa-Snížení výkonu v MongoDb 2.2, 2.4 a 2.6

Zde je aktuální stav funkčnosti Map/Reduce v MongoDB

1) Většina omezení výkonu pro Map/Reduce stále zůstává v MongoDB verze 2.2. Modul Map/Reduce stále vyžaduje, aby byl každý záznam převeden z BSON na JSON, skutečné výpočty se prováděly pomocí vestavěného enginu JavaScript (který je pomalý) a stále existuje jeden globální zámek JavaScriptu, který umožňuje pouze jedno vlákno JavaScriptu. spustit najednou.

Došlo k určitým postupným vylepšením Map/Reduce pro sdílené clustery. Nejpozoruhodnější je, že konečná operace Reduce je nyní distribuována mezi více fragmentů a výstup je také paralelně rozdělen.

Nedoporučoval bych Map/Reduce pro agregaci v reálném čase v MongoDB verze 2.2

2) Počínaje MongoDB 2.2 je nyní k dispozici nový agregační rámec. Toto je nová implementace agregačních operací napsaná v C++ a těsně integrovaná do rámce MongoDB.

Většinu úloh Map/Reduce lze přepsat pro použití agregačního rámce. Obvykle běží rychleji (20x zlepšení rychlosti oproti Map/Reduce je běžné ve verzi 2.2), plně využívají stávající dotazovací modul a můžete paralelně spouštět více agregačních příkazů.

Pokud máte požadavky na agregaci v reálném čase, první místo, kde začít, je agregační rámec. Další informace o agregačním rámci naleznete na těchto odkazech:

  • http://www.10gen.com/presentations/mongonyc-2012/new-aggregation-framework
  • http://docs.mongodb.org/manual/reference/aggregation/

3) Došlo k významným vylepšením v Map/Reduce v MongoDB verze 2.4. JavaScriptový engine SpiderMonkey byl nahrazen JavaScriptovým enginem V8 a již neexistuje globální zámek JavaScriptu, což znamená, že více vláken Map/Reduce může běžet souběžně.

Modul Map/Reduce je stále podstatně pomalejší než agregační rámec, a to ze dvou hlavních důvodů:

  • Je interpretován JavaScript engine, zatímco Aggregation Framework spouští kompilovaný kód C++

  • JavaScript engine stále vyžaduje, aby byl každý zkoumaný dokument převeden z BSON na JSON; pokud ukládáte výstup do kolekce, výsledná sada musí být převedena z JSON zpět na BSON

Mezi 2.4 a 2.6 nejsou žádné významné změny v Map/Reduce.

Stále nedoporučuji používat Map/Reduce pro agregaci v reálném čase v MongoDB verze 2.4 nebo 2.6.

4) Pokud opravdu potřebujete Map/Reduce, můžete se také podívat na Hadoop Adaptor. Další informace jsou zde:

  • http://www.10gen.com/presentations/webinar/mongodb-hadoop-taming-elephant-room
  • http://api.mongodb.org/hadoop/MongoDB%2BHadoop+Connector.html
  • http://www.mongodb.org/display/DOCS/Hadoop+Quick+Start



  1. Jak nastavit limit pro velikost pole ve schématu Mongoose

  2. VersionError:Na Node.js/Mongoose nebyla nalezena žádná chyba odpovídající dokumentu

  3. Více odběratelů Redis

  4. Jaký je v Mongo rozdíl mezi shardováním a replikací?