mongoコレクションの複合シャードキーを作成しました:{catalog_id:1、category_id:1}
一意であることが保証されているcatalog_idだけでコレクションをクエリすると、クエリはすべてのシャードに送信されますか?
mongoコレクションの複合シャードキーを作成しました:{catalog_id:1、category_id:1}
一意であることが保証されているcatalog_idだけでコレクションをクエリすると、クエリはすべてのシャードに送信されますか?
一般に、クエリは、そのクエリに関連するチャンク範囲を含むシャードに移動します。あなたの場合、catalog_id が実際に一意であることが保証されている場合、同じ catalog_id 範囲に対して複数のチャンクはありません (たとえば、範囲 {catalog_id : 12, category : "a"} を持つ 1 つのチャンクはありません)。 {catalog_id : 12, category : "m"} まで、および範囲 {catalog_id : 12, category : "n"} から {catalog_id : 12, category : "z"} までの別のチャンク。 {catalog_id : 12} で、チャンク範囲は既存のドキュメントに基づいて作成されます)。
したがって、あなたの場合、クエリは単一のシャードに移動する必要があります。
mongo db では、複数のフィールドに複合インデックスがある場合、それを使用してフィールドの最初のサブセットをクエリできます。したがって、インデックスがある場合
a,b,c
クエリを使用できます
a
a,b
a,b,c
shardng が同じように機能するかどうかはわかりません。