シャーディングされたクラスターで範囲を作成
項目一覧
ほとんどの場合、 のシャーディングされたクラスターは、ユーザーの介入なしに自動的に範囲の作成/分割と分散を行います。 ただし、限られた場合では、MongoDB では必要なスループットをサポートするのに十分な範囲を作成したり、十分な速度でデータを分散したりできない場合があります。
注意
MongoDB 6.0以降では、空の範囲を作成して範囲を事前に分割し、 バランサー に範囲を自動的に分散させることはできません。 代わりに、次のいずれかを行います。
たとえば、バランスが取れていないクラスターに大量のデータを取り込む場合、またはシャードキーが単調に増加したり減少したりしているなど、データの取り込みによってデータの不均衡が生じるクラスターに大量のデータを取り込む場合。 空のシャーディングされたコレクションの範囲を事前に分割すると、このような場合のスループットが向上します。
あるいは、空のコレクションまたは存在しないコレクションをシャーディングする 前に ゾーンとゾーンの範囲 を定義することで、シャード コレクション操作は定義されたゾーン範囲の範囲と、シャードキー値の全範囲をカバーする追加の範囲を作成し、ゾーン範囲に基づく初期範囲分散。For more information, see Empty Collection.
警告
空のコレクションの範囲のみを事前分割します。 入力されるコレクションの範囲を手動で分割すると、予測できない範囲とサイズだけでなく、バランシング動作が非効率的または非効果的になる可能性があります。
空の範囲を手動で分割するには、 split
コマンドを実行します。
例
email
フィールドをシャードキーとして使用してmyapp.users
コレクション内のドキュメントの範囲を作成するには、 mongosh
で次の操作を使用します。
for ( var x=97; x<97+26; x++ ){ for ( var y=97; y<97+26; y+=6 ) { var prefix = String.fromCharCode(x) + String.fromCharCode(y); db.adminCommand( { split: "myapp.users", middle: { email : prefix } } ); } }
これには、コレクション サイズで100万ドキュメントが前提されています。
詳細
シャーディングコマンドによって作成および分散された初期範囲については、「空のコレクション 」を参照してください。
バランサーとシャード間での範囲の自動分散については、「バランサーの内部と範囲の移行 」を参照してください。
範囲を手動で移行する場合、「シャーディングされたクラスターで範囲を移行する 」を参照してください。