現在、単一の MongoDB サーバーを実行しています (運用中)。その中で最大のコレクションは User と呼ばれます。このコレクションにはマルチキー (配列) インデックスがあります。User コレクションに対する主なクエリは、マルチキーのインデックス付きフィールドの値に対する $or クエリです。このコレクションのもう 1 つのフィールドは、PageViews の配列です。
サーバーが忙しくなってきているので、現在のパフォーマンスを維持できるようにサーバーを分割したいと考えています。もちろん、問題はシャード キーの選択です。これを読んでみると、マルチキー インデックスと、主要なクエリに含めることができる他のフィールドがないため、クエリの分離に失敗しているようです。
さまざまな記事で、ランダムな値でシャード キーを作成するのは得策ではないことが指摘されています。これは、クエリの分離を失うためです。しかし、とにかくクエリを適切に分離することができないので、ランダムな値をシャーディングするだけでよいのでしょうか?
他の誰かがこの状況にありましたか?良い選択肢はありますか?