4

シャーディング環境では、データはシャード キーの範囲に基づいてさまざまなシャードに格納されます。この場合、mongodb はインデックスの一意性を保証できないように思えます (少なくともシャード キーでない場合)。シャードキーに一意のインデックスを使用できますか? シャード キー以外のフィールドでインデックスを使用できますか?

4

1 に答える 1

7

正解です。mongodbは、シャーディングされたクラスター全体のインデックスの一意性を保証できません。各シャードは、挿入されるキーがコンテキスト内で一意であるかどうかをレポートできないためです。

これはドキュメントでカバーされており、この状況を回避するためのいくつか戦略があります。

その結果、シャードキーにそのようなキーが選択された場合、シャードキーの一意性を強制するためにアプリケーション層が必要になります。

私はあなたの2番目の質問が何を指しているのか100%明確ではありません。シャードキー以外のコレクションにインデックスを付けることができ、これらを使用してクエリのパフォーマンスを向上させることができますが、シャードキーを使用しないクエリはすべて分散/収集されます(したがって、すべてのシャードにヒットします)。各シャードにヒットしたときのパフォーマンスは、インデックスがどれだけ優れているかに依存します。これは、シャードキー以外のインデックスを持つことが有益な場合です。

于 2012-12-07T06:41:46.243 に答える