は)機能の現在の状態でマップ/削減のための性能の限界のほとんどは、まだMongoDBのバージョン2.2に残ります。 Map/Reduceエンジンでは、すべてのレコードをBSONからJSONに変換する必要がありますが、実際の計算は埋め込みJavaScriptエンジン(遅い)を使用して実行され、単一のグローバルJavaScriptロックが存在します。一度に実行する。
シャードされたクラスタのMap/Reduceには、いくつかの点で改善が加えられています。最も顕著なのは、最後のReduce操作が複数のShardに分散されており、出力も並行して分割されていることです。
私はMongoDBの2.2以降で)地図/ MongoDBのバージョン2.2
2にリアルタイム集計に削減することをお勧めしません、新しい集約フレームワークは、今そこにあります。これは、C++で書かれ、MongoDBフレームワークに緊密に統合された集約操作の新しい実装です。
アグリゲーションフレームワークを使用するほとんどのマップ/リデュースジョブを書き換えることができます。それらは通常より速く実行されます(マップ/ Reduceと比較して20倍の速度向上がバージョン2.2で一般的です)。既存のクエリエンジンをフルに活用し、複数の集計コマンドを並行して実行できます。
リアルタイムアグリゲーションの要件がある場合は、最初にアグリゲーションフレームワークを使用します。集約フレームワークの詳細については、これらのリンクを見てみましょう:
3)地図の大幅な改善が行われてきた/ MongoDBのバージョン2.4に減らします。 SpiderMonkey JavaScriptエンジンはV8 JavaScriptエンジンに置き換えられました。グローバルなJavaScriptロックがなくなり、複数のMap/Reduceスレッドを同時に実行できるようになりました。
マップ/ 2つの主な理由のために、エンジンがまだ集約フレームワークよりもかなり遅い削減:
は
地図に有意な変化はありませんにJSONから変換されなければならない/ 2.4と2.6の間で削減します。
MongoDBバージョン2.4または2.6でリアルタイム集計にMap/Reduceを使用することは、まだ推奨されません。
4)Map/Reduceが本当に必要な場合は、Hadoopアダプタも参照できます。詳細については、こちらをあります:
Meybe集約フレームワークが軽減マップ今、何かを変更されることがある理由 – user956584
遅い任意のアイデアをダムのですか?それはまだシングルスレッドですか? – YMC
http://stackoverflow.com/a/9434093/979474またはhttp://stackoverflow.com/a/11749738/979474 – user956584