コレクションをシャーディングすると、そのドキュメントがMongoDBクラスター内の複数のシャードに分散されます。MongoDB は指定されたシャードキーを使用して、各ドキュメントが属する場所を正確に決定します。利用可能なすべてのシャード間で均等なデータ分散とワークロードのバランスを確保するために、効果的なシャードキーを選択することが重要です。このアプローチは、コレクションが大きくなりすぎて単一のシャードでは効率的に処理できない場合に重要になります。シャーディングされると、 MongoDB は選択したシャーディング戦略に従って、利用可能なすべてのシャードにコレクションを自動的に分散します。
シャーディングを検討するケース
特定のリソース制限またはパフォーマンスしきい値に達した場合は、コレクションのシャーディングを検討する必要があります。
高いリソース利用率
コレクションの ワーキングセットがRAMに収まる場合、 MongoDB はメモリからクエリを処理するため、クエリの応答時間が最も短くなります。ワーキングセットが使用可能なメモリを超えると、ディスク アクセスが増加するため、クエリのレイテンシが長くなります。コレクションをシャーディングすると、複数のシャードにデータが分散されることでクエリのパフォーマンスが向上します。各シャードは独自のデータインデックスを保持します。
大データサイズ
コレクションに 3TB 以上のデータが含まれている場合は、パフォーマンスを最適化するためにコレクションをシャーディングを検討する必要があります。
ディストリビューションオプション
MongoDBでコレクションをシャーディング場合、次の分散オプションから選択できます。
オプション | 説明 |
---|---|
範囲シャーディングでは、1 つ以上のドキュメントフィールドを使用してデータの配置を決定します。同様のシャードキー値を持つデータが同じシャードに保存され、範囲ベースのクエリが最適化されます。このアプローチは、アクセス パターンに範囲操作が含まれている場合に最適です。 | |
ハッシュされたシャーディング は、指定されたフィールドからハッシュ値を計算し、シャード全体にデータをランダムに分散します。書込みスケーラビリティには便利ですが、論理的に隣接するデータが異なるシャードに存在する可能性があるため、このアプローチは範囲ベースのクエリのパフォーマンスに影響可能性があります。 | |
ゾーンシャーディングでは 、クラスター全体ではなく、シャードの特定のサブセットにコレクションが分散されます。このアプローチは、コレクションが単一シャードのキャパシティーを超えるが、ユーザーに地理的に近接する場合、専用ハードウェアで個別のアクセス パターンを最適化する、データ ロケーションを制御して規制コンプライアンスを維持するためなど、戦略的な配置が必要な場合に最適です。 |
動作
コレクションをシャーディングときは、以下の操作を行う必要があります。
シャードキーを選択します。
analyzeShardKey
この選択を容易に行うには、 データベースコマンドを使用します。シャーディング方法を選択します。