Googleのmongoクラスタの一部として、アナリティクスの人々がレポートに使用する非表示のノードがあります。それらのクエリは、メインアプリケーションが最適化されているクエリとは少し異なります。異なるレプリカセットメンバーの異なるインデックス
私たちは、計算に比較的高価な特定のインデックスを追加することでクエリのパフォーマンスを大幅に向上させ、かなりの量のメモリを使用できます。これらのインデックスは、プライマリメンバとセカンダリメンバで実行されているクエリのいずれにも使用しないでください。メインのレプリカセットメンバに時間とメモリを費やして、メモリ内のレポートインデックスを計算して保持するのは少しばかげているようです。
インデックスを作成して単一のレプリカセットメンバーにのみ存在するようにする方法はありますか?プライマリノードとセカンダリノードに、使用しないことがわかっているインデックスを計算または保存しないように指示する方法はありますか?
興味深い。私の問題は、私は絶対にインデックスをプライマリサーバに戻したくないということです。これらは、書き込みパフォーマンスを劇的に低下させます。 – captncraig
彼らはしません。索引は、作成時にプライマリからセカンダリにのみ伝播されます。これは非表示のメンバーなので、プライマリになることはなく、インデックスは決して伝播しません。レプリカセットからメンバーを削除する必要があります。それ以外の場合は、読み取り専用であり、インデックス作成を拒否します。作成されると、メンバーは幸せにそれを維持するでしょう。 –
インデックスは、プライマリまたは他のセカンダリには伝播されません。変更は、他のサーバーによってプライマリのoplogから取得されます。 –