シャーディングされたクラスターでのチャンクの作成
ほとんどの場合、 のシャーディングされたクラスターは、ユーザーの介入なしに自動的にチャンクの作成/分割と配布を行います。 ただし、限られた場合、MongoDB では必要なスループットをサポートするのに十分なチャンクを作成したり、十分な速度でデータを分散したりできない場合があります。
たとえば、バランスが取れていないクラスターに大量のデータを取り込む場合、またはシャードキーが単調に増加したり減少したりしているなど、データの取り込みによってデータの不均衡が生じるクラスターに大量のデータを取り込む場合。 空のシャーディングされたコレクションのチャンクを事前に分割すると、このような場合のスループットが向上します。
あるいは、空のコレクションまたは存在しないコレクションをシャーディングする 前に ゾーンとゾーンの範囲 を定義することで、シャード コレクション操作は定義されたゾーン範囲のチャンクと、シャードキー値の全範囲をカバーする追加のチャンクを作成し、ゾーン範囲に基づく初期チャンク分散。詳細については、「空のコレクション 」を参照してください。
警告
空のコレクションのチャンクのみを事前分割します。 入力されるコレクションのチャンクを手動で分割すると、予測できないチャンクの範囲とサイズが発生したり、バランシング動作が非効率的または非効果的になったりする可能性があります。
空のチャンクを手動で分割するには、 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万ドキュメントが前提されています。
シャーディング コマンドによって作成および分散された初期チャンクの詳細については、「空のコレクション 」を参照してください。
バランサーとシャード間でのチャンクの自動分散の詳細については、「クラスター バランサーとチャンクの移行 」を参照してください。
チャンクの手動移行の詳細については、「シャーディングされたクラスターのチャンクの移行 」を参照してください。