Docs Menu

map-reduce の同時実行

注意

map-reduce の代替としての集計パイプライン

MongoDB 5.0以降、 map-reduceは非推奨です。

  • map-reduceの代わりに、集計パイプラインを使用する必要があります。 集計パイプラインは、map-reduce よりもパフォーマンスとユーザビリティが優れています。

  • $group $mergeなどの集約パイプライン ステージ を使用して、map-reduce操作を書き換えることができます。

  • カスタム機能を必要とする map-reduce 操作には、 $accumulator$functionの集計演算子を使用できます。 これらの演算子を使用して、JavaScript でカスタム集計式を定義できます。

map-reduce を集計パイプラインに置き換える例については、以下を参照してください。

map-reduce 操作は、入力コレクションからの読み取り、 map関数の実行、 reduce関数の実行、処理中の一時コレクションへの書込み、出力コレクションへの書込みなど、多くのタスクで構成されています。

操作中、map-reduce は次のロックを取得します。

  • 読み取りフェーズでは読み取りロックが取得されます。 100 ドキュメントごとに生成されます。

  • 一時コレクションへの挿入には、1 回の書き込みに対して書込みロック(write lock)が必要です。

  • 出力コレクションが存在しない場合、出力コレクションの作成には書込みロック(write lock)が必要です。

  • 出力コレクションが存在する場合、出力アクション(つまり mergereplacereduce )は書込みロック(write lock)を取得します。 この書込みロックはグローバルであり、 mongodインスタンスに対するすべての操作をブロックします。