シャードキーは、単一のインデックス付き フィールド 、またはクラスターの シャード 間でのコレクションの 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
不均一な負荷分散
クエリ パフォーマンスの低下
詳しくは、シャードキーのトラブルシューティング を参照してください。