1

mongodbjavaを使用してレポートを作成しています。したがって、ここでは map reduce を使用してレポートを作成する必要があります。実稼働環境に 3 つのレプリカがあります。

レポートクエリの場合、プライマリにリクエストを送信したくありませんmongo database。セカンダリ レプリカのみにリクエストを送信したいので、ここで map reduce を使用すると、一時的なコレクションが作成されます。

1) map reduce を使用してレポートの読み取り設定をセカンダリとして設定すると、何か問題がありますか?
2) セカンダリ レプリカに一時的なコレクションを作成しますか?
3) プライマリ データベースでトラフィックを作成したくないため、レポート目的でセカンダリ レプリカを使用する他の方法はありますか?
4) 膨大なデータがあるため、正しい望ましい結果が得られますか?

4

1 に答える 1

2

おそらく、これを行う最も簡単な方法は、ReadPreference.SECONDARY_ONLY を使用してレプリカ セットに接続するのではなく、セカンダリに直接接続することです。その場合、間違いなくセカンダリに一時ファイルが作成され、正しい結果が得られるはずです (もちろん!)。

ただし、Aggregation Framework を確認することをお勧めします。これは、Map Reduce ジョブよりもはるかに高速で、多くの場合、使用とデバッグが容易であるためです。それほど強力ではありませんが、集約とレポートのニーズに Aggregation Framework を使用できない状況をまだ見つけなければなりませんでした。

于 2013-07-12T09:12:13.757 に答える