Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

sh.shardCollection()

項目一覧

  • 定義
  • 互換性
  • Considerations
sh.shardCollection(namespace, key, unique, options)

key シャードキーとして使用し、コレクションをシャードします。シャードキーで、MongoDB がコレクションのドキュメントをシャード間でどのように配布するかを決定します。

mongoshメソッドsh.shardCollection()shardCollectionコマンドをラップします。

重要

mongosh メソッド

このページでは、mongosh メソッドについて記載しています。ただし、データベースコマンドや Node.js などの言語固有のドライバーのドキュメントには該当しません

データベースコマンドについては、shardCollection コマンドを参照してください。

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

sh.shardCollection() 以下の引数を取ります。

Parameter
タイプ
説明

namespace

string

"<database>.<collection>"形式でシャーディングするコレクションの名前空間

key

ドキュメント

シャードキー として使用するフィールドを指定するドキュメント。

{ <field1>: <1|"hashed">, ... }

フィールド値を次のいずれかに設定します。

シャードキーはインデックスでサポートされている必要があります。コレクションが空でない限り、shardCollection コマンドの前にインデックスが存在している必要があります。コレクションが空の場合、シャードキーをサポートできるインデックスがまだ存在しない場合には、MongoDB はコレクションをシャーディングする前にインデックスを作成します。

シャードキー インデックス」も参照してください

unique

ブール値

任意。基礎のインデックスがユニーク制約を強制するようにするには、true を指定します。デフォルトは false です。

ハッシュされたシャードキーを使用する場合、 trueは指定できません。

options ドキュメントを指定する場合は、unique の値を明示的に指定する必要があります。

options

ドキュメント

任意。numInitialChunkscollation などの任意フィールドを含むドキュメント。

options 引数は以下のオプションをサポートしています。

Parameter
タイプ
説明

numInitialChunks

integer

任意。空のコレクションをハッシュされたシャードキーでシャーディングするときに最初に作成するチャンクの最小数を指定します。次に、MongoDB はクラスター全体でチャンクを作成し、バランスをとります。numInitialChunks パラメーターは、シャードあたり 8192 チャンク未満である必要があります。デフォルトはシャードあたり 2 チャンク。

コレクションが空でない場合、またはシャードキーにハッシュされたフィールドが含まれていない場合、操作はエラーを返します。

  • presplitHashedZones: true でシャーディングする場合、 MongoDBは指定された数のチャンクをクラスター内のゾーン全体に均等に分散しようとします。

  • presplitHashedZones: false または省略でシャーディングし、空のコレクションにゾーンとゾーン範囲が定義されていない場合、 MongoDBは指定された数のチャンクをクラスター内のシャード全体に均等に分散しようとします。

  • presplitHashedZones: false または省略でシャーディングし、空のコレクションに対してゾーンとゾーン範囲が定義されている場合、numInitChunks は効果がありません。

collation

ドキュメント

任意。 shardCollectionに指定されたコレクションにデフォルトの照合がある場合は、 { locale : "simple" }を使用して照合ドキュメントを含める必要があります 。そうしないと、 shardCollectionコマンドは失敗します。 フィールドがシャードキー パターンをサポートするインデックスの少なくとも 1 つには、単純照合が必要です。

ブール値

任意。 コレクションに定義されたゾーンとゾーン範囲に基づいて、空または存在しないコレクションの初期チャンク作成と分散を実行するには、 trueを指定します。 ハッシュされたシャーディングのみ。

shardCollection() 次のいずれかに当てはまる場合、 presplitHashedZones: trueと はエラーを返します。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

重要

このコマンドは、M 0 、M 2 、M 5クラスターではサポートされていません。 詳細については、「サポートされていないコマンド 」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

MongoDB には、いったんシャーディングされたコレクションで、シャーディングを解除するメソッドがありません。

シャードキーは後でも変更できますが、スケーラビリティやパフォーマンスの問題を回避するために、シャードキーの選択を慎重にすることが重要になります。

Tip

以下も参照してください。

ハッシュされたシャードキーは、ハッシュされたインデックスまたはハッシュされた複合インデックスをシャードキーとして使用します。

ハッシュされたシャードキー フィールドを指定するには、 field: "hashed"の形式を使用します。

注意

ハッシュされたシャードキー コレクションの作成中にチャンクの移行が進行中の場合、 バランサー がコレクションを自動的にバランス化するまでに、初期チャンク分散が不均一になる可能性があります。

Tip

以下も参照してください。

シャード コレクション操作(つまり、shardCollectionコマンドとsh.shardCollection()ヘルパー)は、コレクションのゾーンおよびゾーン範囲が定義されている場合、空または存在しないコレクションの最初のチャンク作成および分散を実行できます。最初のチャンク分散により、ゾーン シャーディングをより速く設定できます。初期分散後、バランサーは通常どおりに今後のチャンク分散を管理します。

例については、「 空または存在しないコレクションのゾーンとゾーン範囲の事前定義」を参照してください。 範囲指定または単一フィールドのハッシュされたシャードキーを使用してコレクションをシャーディングする場合、空のコレクションに対してゾーンとゾーン範囲が定義されていると、 numInitialChunksオプションは効果がありません。

複合ハッシュ インデックスを使用してコレクションをシャードするには、複合ハッシュ インデックスを使用した初期チャンク分散を参照してください。

MongoDB は、ハッシュされた複合インデックスでのコレクションのシャーディングをサポートしています。 複合ハッシュされたシャードキーを使用して、空のコレクションまたは存在しないコレクションをシャーディングする場合、MongoDB が初期チャンクの作成と分散を実行するために追加の要件が適用されます。

空のコレクションにゾーンとゾーン範囲が定義され、かつ presplitHashedZonesfalse の場合、numInitialChunks オプションは効果がありません。

例については、「 空または存在しないコレクションのゾーンとゾーン範囲の事前定義」を参照してください。

Tip

以下も参照してください。

unique: trueを指定する場合

シャードキーがプレフィックスであるユニーク複合インデックスを持つことは可能ですが、unique パラメーターを使用する場合、コレクションにはシャードキー上のユニークインデックスが必要です。

シャーディングされたコレクションと一意のインデックス」も参照してください

バージョン 3.4 で変更

コレクションにデフォルトの照合がある場合、sh.shardCollection() コマンドには { locale: "simple" } の値を持つ collation パラメーターが含まれている必要があります。デフォルトの照合を使用する空でないコレクションの場合、フィールドがシャードキー パターンをサポートする単純照合のインデックスが少なくとも 1 つ必要です。

照合のないコレクションにはcollationオプションを指定する必要はありません。 照合のないコレクションに対して 照合オプションを指定しても、効果はありません。

mongosは、shardCollectionコマンドとそのヘルパーsh.shardCollection()書込み保証(write concern)"majority"を使用します。

records という名前のデータベースに people という名前のコレクションがある場合、次のコマンドは zipcode フィールドでコレクションをシャーディングします。

sh.shardCollection("records.people", { zipcode: 1 } )

phonebookデータベースには、デフォルトの照合順序のないコレクションcontactsがあります。次の例では、sh.shardCollection()を使用してphonebook.contactsを次のものとシャードします。

sh.shardCollection(
"phonebook.contacts",
{ last_name: "hashed" },
false,
{
numInitialChunks: 5,
collation: { locale: "simple" }
}
)

戻る

sh.setBalancerState