sh.removeRangeFromZone()
定義
sh.removeRangeFromZone(namespace, minimum, maximum)
シャードキー値の範囲とゾーンの間の関連付けを削除します。
sh.removeRangeFromZone()
は、次のフィールドがあります。Parameterタイプ説明namespace
stringゾーンに関連付けるシャーディングされたコレクションの名前空間。
操作を成功させるには、コレクションをシャーディングする必要があります。
minimum
ドキュメントシャードキー値の範囲の包括的下限。
シャードキーの各フィールドを
<fieldname> : <value>
の形式で指定します。 値は、シャードキーと同じ BSON type である必要があります。maximum
ドキュメントシャードキー値の範囲の排他的上限。
シャードキーの各フィールドを
<fieldname> : <value>
の形式で指定します。 値は、シャードキーと同じ BSON type である必要があります。未使用、期限切れ、または競合するシャードキー範囲とゾーンの間の関連付けを削除するには、
sh.removeRangeFromZone()
を使用します。sh.removeRangeFromZone()
に渡される最小境界と最大境界に一致する範囲がない場合、削除されるものはありません。mongos
インスタンスに接続している場合にのみsh.removeRangeFromZone()
を実行します。
動作
sh.removeRangeFromZone()
では、ゾーンとシャードの間の関連付けは削除されません。 また、ゾーン自体は削除されません。
シャーディングされたクラスター内のゾーンの詳細については、ゾーンのマニュアル ページを参照してください。
バランサー
範囲とゾーンの間の関連付けを削除すると、そのゾーン内のシャードで範囲によってカバーされるチャンクを維持する制約が削除されます。 次のバランサー ラウンド中に、バランサーは以前に ゾーンによってカバーされていたチャンクを移行する場合があります。
シャーディングされたクラスターで移行がどのように機能するかについて詳しくは、 シャーディングされたクラスター バランサーのドキュメントを参照してください。
セキュリティ
認証 を使用して実行されているシャーディングされたクラスターの場合は、次のいずれかとして認証する必要があります。
config
データベース内のさまざまなコレクションに対して指定されたアクションを含む特権を持つユーザー:または、あるいは
クラスター リソースで
enableSharding
を含む 権限 を持つユーザー。
clusterAdmin
またはclusterManager
の組み込みロールには、 sh.removeRangeFromZone()
を実行するための適切な権限があります。 詳細については、ロールベースのアクセス制御に関するドキュメントページを参照してください。
例
シャーディングされたコレクションexampledb.collection
とシャードキーが{ a
: 1 }
の場合、次の操作を実行すると下限が1
で上限が10
の範囲が削除されます。
sh.removeRangeFromZone( "exampledb.collection", { a : 1 }, { a : 10 } )
min
とmax
は、ターゲット範囲の境界と完全に一致する必要があります。 次の操作は、以前に作成した範囲を削除しようとしますが、 min
の限界として{ a : 0 }
を指定します。
admin = db.getSiblingDB("admin") admin.runCommand( { updateZoneKeyRange : "exampledb.collection", min : { a : 0 }, max : { a : 10 }, zone : null } )
{ a : 0 }
と{ a : 10 }
の範囲は既存の範囲を含みますが、完全一致ではないため、 sh.removeRangeFromZone()
は何も削除しません。
複合シャードキー
シャーディングされたコレクションexampledb.collection
とシャードキーが{ a : 1, b : 1 }
の場合、次の操作を実行すると下限が{ a : 1, b : 1}
で上限が{ a : 10, b : 10 }
の範囲が削除されます。
sh.removeRangeFromZone( "exampledb.collection", { a : 1, b : 1 }, { a : 10, b : 10 } )
前の例えの場合、下限が{ a : 1, b : 5 }
で上限が{ a : 10, b : 1 }
の既存の範囲が存在した場合、 に渡される最小値と最大値の正確な一致ではないため、操作はその範囲を削除しません。 sh.removeRangeFromZone()
。