Range-based sharding involves dividing data into contiguous ranges determined by the shard key values. In this model, documents with "close" shard key values are likely to be in the same chunk or shard. This allows for efficient queries where reads target documents within a contiguous range. However, both read and write performance may decrease with poor shard key selection. See Shard Key Selection.
ハッシュされたシャーディングやゾーンに必要なオプションなどの他のオプションが設定されていない場合、範囲ベースのシャーディングがデフォルトのシャーディング方法です。
シャードキー選択
範囲シャーディングは、シャードキーが次の特権を示している場合に最も効率的です。
大規模なシャードキー濃度
次の図は、フィールドXをシャードキーとして使用するシャーディングされたクラスターを示します。 Xの値が範囲が大きく、頻度が低く、非単調な割合で変化する場合、挿入の分散は次のようになります。
コレクションのシャーディング
sh.shardCollection()メソッドを使用して、コレクションの完全な名前空間と、 シャードキー として使用するターゲット インデックス または 複合インデックス を指定します。
sh.shardCollection( "database.collection", { <shard key> } )
重要
MongoDB 5.0 以降、ドキュメントのシャードキーを変更することでコレクションの再シャーディングが可能です。
既存のシャードキーにサフィックス フィールドを追加することで、シャードキーを調整できます。
入力済みのコレクションのシャーディング
入力されるコレクションをシャーディングする場合、最初に作成されるのは 1 つのチャンクのみです。 その後、構成された 範囲サイズ に従って、必要に応じてそのチャンクから範囲を移行します。
空のコレクションのシャーディング
空のコレクションをシャーディングする場合:
空または存在しないコレクションにゾーンとゾーン範囲が指定されていない場合は以下のとおりです。
シャーディング操作では、シャードキー値の全範囲をカバーする空のチャンクが 1 つ作成されます。
最初のチャンク作成後、必要に応じて、バランサーによって最初のチャンクがシ複数のシャードに移行されます。また、将来のチャンク分散もバランサーで管理されます。
空のコレクションまたは存在しないコレクションにゾーンとゾーン範囲が指定されている場合:
シャーディング操作では、定義されたゾーン範囲の空のチャンクと、シャードキー値の全範囲をカバーする追加のチャンクが作成され、ゾーン範囲に基づいて初期チャンク分散が実行されます。このようにチャンクを最初に作成して分散することで、ゾーン シャーディングの設定を迅速に行うことができます。
初期分散後、バランサーは今後のチャンク分散を管理します。
Tip
シャーディングされたクラスターをデプロイして範囲シャーディングを実装する方法については、「自己管理型シャーディングされたクラスターのデプロイ 」を参照してください。