シャーディングされたクラスターでのチャンクの分裂
デフォルトでは、MongoDB は、そのチャンクに属するデータを移行するときにのみチャンクを分裂する可能性があります。 ただし、既存のデータを使用してクラスターを配置した後など、クラスター内に大量のデータがあり、チャンクが非常に少ない場合は、チャンクを手動で分割することをお勧めします。
チャンクを手動で分割するには、フィールドmiddle
または
find
のいずれかを指定してsplit
コマンドを使用します。
mongosh
はヘルパー メソッドsh.splitFind()
とsh.splitAt()
を提供します。
splitFind()
は、このクエリに一致するとして返された最初のドキュメントを含むチャンクを、同じサイズの 2 つのチャンクに分割します。 完全な名前空間( シャーディングされたコレクションの「 <database>.<collection>
」をsplitFind()
に置き換えます。 splitFind()
のクエリではシャードキーを使用する必要はありませんが、ほとんどの場合、シャードキーを使用する方が合理的です。
例
次のコマンドは、 records
データベースのpeople
コレクション内にあるzipcode
フィールドの63109
の値を含むチャンクを分割します。
sh.splitFind( "records.people", { "zipcode": "63109" } )
splitAt()
を使用して、クエリされたドキュメントを新しいチャンクの下限として使用し、チャンクを 2 に分割します。
例
次のコマンドは、 records
データベースのpeople
コレクション内にあるzipcode
フィールドの63109
の値を含むチャンクを分割します。
sh.splitAt( "records.people", { "zipcode": "63109" } )
注意
splitAt()
では、チャンクは必ずしも同じサイズの 2 つに分割されません。 分裂は、ドキュメントがチャンク内のどこにあるかに関係なく、クエリに一致するドキュメントの場所で行われます。