シャードキーは、単一のインデックス付き フィールド 、またはクラスターの シャード 間でのコレクションの documents の分散を決定する 複合インデックス でカバーされる複数のフィールドのいずれかです。詳細については、シャードキー インデックス を参照してください。
MongoDB は、シャードキー値(またはハッシュされたシャードキー値) の範囲を重複しない範囲に分割します。各範囲はチャンクに関連付けられており、 MongoDB はチャンクをクラスター内のシャードに均等に分散しようとします。
コレクションのシャーディング
mongosh メソッドsh.shardCollection() を使用してコレクションをシャーディングできます。コレクションをシャーディングするには 、シャーディングするコレクションの完全な名前空間とシャードキーを指定する必要があります。
sh.shardCollection(<namespace>, <key>) // Optional parameters omitted
| シャーディングするコレクションの完全な名前空間を指定します( |
| ドキュメント
|
シャーディング方法の詳細については、 sh.shardCollection()を参照してください。
シャードキーの選択
シャードキーの選択は、使用可能なシャード全体にわたるデータの作成と分散に影響します。理想的なシャードキーを使用すると、 MongoDB は一般的なクエリパターンを容易にしながら、クラスター全体にドキュメントを均等に分散できます。
詳細については、「シャードキーの選択」ページを参照してください。
シャードキーの変更
シャードキーは、次の 2 つの方法で変更できます。
シャードキーを調整するには、既存のキーにフィールドを追加します。
シャードキーを完全に変更し、新しいキーでコレクションを再シャーディングできます。
詳細については、「シャードキーの変更」ページを参照してください。
documentのシャードキー フィールド値の変更
シャードキーフィールドが_idフィールドでない限り、コレクション内の任意のdocumentでシャードキーフィールドの値を変更できます。これは、documentがどのシャードに存在するかに影響する可能性があります。
詳細については、「 documentのシャードキー値の変更 」を参照してください。
欠落しているシャードキー フィールドの設定
コレクション内のドキュメントには、シャードキーで指定される欠落フィールドがある場合があります。デフォルトでは 、シャードキーで指定されたフィールドが欠落しているドキュメントは、null 値を持つシャードキーと同じチャンク範囲内に存在します。
詳細については、「欠落しているシャードキー フィールドの設定」を参照してください。
シャードキーの表示
db.printShardingStatus()コレクションに使用されるシャードキーを表示するには、 を使用します。
詳細については、シャードキーの表示を参照してください。
トラブルシューティング
シャードキーが最適でないことによって発生する一般的な問題は次のとおりです。
Jumbo chunks
不均一な負荷分散
クエリ パフォーマンスの低下
詳しくは、シャードキーのトラブルシューティング を参照してください。