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

シャーディングされたクラスターの運用上の制限

項目一覧

  • シャーディング操作上の制限
  • 既存のコレクション データ サイズのシャーディング

$whereは、 $where関数からdbオブジェクトへの参照を許可していません。 これは、シャーディングされていないコレクションでは珍しいことです。

geoSearchコマンドはシャーディングされた環境ではサポートされていません。

MongoDB 5.0 以前のバージョンでは、$lookupステージのfrom パラメーターでシャーディングされたコレクションを指定できません。

multi: falseまたはjustOneオプションを指定するシャーディングされたコレクションに対してupdateOne()およびdeleteOne()操作を使用するには以下に従ってください。

  • 1つのシャードのみをターゲットにする場合は、クエリ仕様で部分的なシャードキーを使用するか、

  • クエリ仕様でシャードキーまたは _id フィールドを指定できます。

シャーディングされたコレクションでfindOneAndUpdate()を使用するには、クエリフィルターにシャードキーの等価条件が含まれている必要があり、次のいずれかの形式でキーと値を比較する必要があります。

{ key: value }
{ key: { $eq: value } }

MongoDB は、ユニークインデックスにインデックスのプレフィックスとして完全なシャードキーが含まれている場合を除き、シャード間のユニークインデックスをサポートしていません。このような状況では、MongoDB は単一のフィールドではなく、キー全体に対して一意性を強制します。

Tip

次を参照してください。

代替アプローチについては、任意のフィールドに対するユニークな制約を参照してください。

既存のコレクションは、そのサイズが特定の制限を超えない場合にのみシャーディングできます。 これらの制限は、すべてのシャードキー値の平均サイズと構成されたチャンクサイズに基づいて推定できます。

重要

これらの制限は、最初のシャーディング操作にのみ適用されます。 シャーディングされたコレクションは、シャーディングを正常に有効にすると任意のサイズに拡大できます。

MongoDB は、作成時に各チャンクが半分になるようにコレクション内のドキュメントを分散します。 論理的な最大コレクション サイズを計算するには、次の式を使用します。

maxSplits = 16777216 (bytes) / <average size of shard key values in bytes>
maxCollectionSize (MB) = maxSplits * (chunkSize / 2)

注意

BSONドキュメントの最大サイズは16 MB または16777216バイトです。

すべての変換ではベースと2スケールを使用する必要があります。例: 1024キロバイト = 1メガバイト

maxCollectionSizeがターゲット コレクション未満またはほぼ等しい場合は、初期シャーディングを成功させるために、チャンク サイズを増やします。 計算の結果がターゲット コレクション サイズに「近い」かどうかという懸念がある場合は、チャンク サイズを増やすことをお勧めします。

最初のシャーディングが成功したら、必要に応じてチャンク サイズを縮小できます。 後でチャンクのサイズを縮小すると、すべてのチャンクが新しいサイズに分裂するまでに時間がかかる場合があります。 チャンク サイズを変更する手順については、「 シャーディングされたクラスターのチャンク サイズの変更」を参照してください。

以下の表は、上記の式を使用して、おおよその最大コレクション サイズを示しています。

シャードキー値の平均サイズ
512バイト
256バイト
128バイト
64バイト
分割の最大数
32,768
65,536
131,072
262,144
最大コレクション サイズ( 64 MB チャンク サイズ)
1 TB
2 TB
4 TB
8 TB
最大コレクション サイズ( 128 MB チャンク サイズ)
2 TB
4 TB
8 TB
16 TB
最大コレクション サイズ( 256 MB チャンク サイズ)
4 TB
8 TB
16 TB
32 TB

戻る

参照