AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

ネットワーク トラフィックを圧縮

MongoDBドライバーは、 MongoDB Serverとの間で送受信されるメッセージを圧縮できます。これにより、各操作で転送されるデータ量が減ります。圧縮により、制約されたネットワークのパフォーマンスが向上し、 MongoDB Atlas の実行中に関連するデータ転送コストが削減されます。

圧縮はワイヤプロトコルレベルで動作するため、アプリケーションが実行するすべての操作に適用されます。複数のアルゴリズムを指定した場合 、ドライバーはMongoDB Serverもサポートしているリスト内の最初のアルゴリズムを使用します。

MongoDBドライバーは次の圧縮アルゴリズムをサポートしています。

MongoDB Atlas は、クラウドリージョン、クラウドプロバイダー、および インフラストラクチャとMongoDB Atlas間で転送されたデータに対して料金を請求します。ネットワーク圧縮により、アプリケーションが送受信するデータ量が減り、これらのデータ転送コストを削減できます。価格の詳細については、「 データ転送コスト 」を参照してください。

ネットワーク圧縮には、効率的な利点も得られます。圧縮されたメッセージはネットワーク間での転送時間が短縮されるため、アプリケーションの応答時間を向上させることができます。圧縮により、 MongoDBトラフィックが使用する帯域幅も削減されるため、同じネットワーク上の他のアプリケーションで使用できる帯域幅が増えます。

圧縮アルゴリズムを選択する場合は、次のガイドラインを考慮してください。

  • 圧縮効率とリソース使用量のバランスを取るには、Zstandard を使用します。 Zstandard は、ほとんどのアプリケーションでのデフォルトの選択に適しています。

  • 最小限の計算オーバーヘッドを必要とするレイテンシの影響を受けやすいアプリケーションには、 Snappy を使用してください。

  • MongoDBドライバーと環境間での広範な互換性を実現するには、Zlib を使用してください。

Tip

CPU 使用率の監視

圧縮は、CPU 使用率とネットワーク帯域幅の引き換えです。ネットワーク圧縮を有効にした後、アプリケーションの CPU 使用率を監視して、トレードオフがワークロードにメリットをもたらすことを確認します。これらのトレードオフの詳細については、 MongoDBブログ記事の CPU 使用率とネットワーク圧縮 を参照してください。

次の表は、各 圧縮アルゴリズムでサポートされる最小のドライバーとMongoDB Server のバージョンを示しています。

圧縮アルゴリズム
ドライバーの最小バージョン
サーバーの最小バージョン

3.6

4.2

3.6

4.2

3.11

4.2

MongoDB接続のネットワーク圧縮を有効にするには、必要な依存関係をインストールし、使用する圧縮アルゴリズムを指定します。

次の表は、各アルゴリズムと、必要な依存関係(存在する場合)を示しています。

圧縮アルゴリズム
依存

Snappy

snappy-javaSnappy ライブラリ用のJava JNIラッパーである をダウンロードします。をインストールするには、Maven Central の snappy-java を参照してください。

Zlib

なし。ドライバーは Zlib 圧縮をネイティブでサポートしています。

Zstandard

zstd-jniZstandard ライブラリ用のJava JNIラッパーである をダウンロードします。をインストールするには、Maven Central の「zstd-j ni 」を参照してください。

次のいずれかの方法でアルゴリズムを指定することで、 MongoDBインスタンスへの接続の圧縮を有効にできます。

  • 接続文字列で compressors パラメータを使用する

  • compressorList() メソッドを MongoClientSettings.builder() メソッドにチェーンする

対応する構文を確認するには、Connection String タブまたは MongoClientSettingsタブを選択します。

圧縮を有効にするには、接続文字列に次のパラメーターを含めます。

オプション名
タイプ
説明

compressors

string

接続された MongoDB インスタンスに送信されたリクエストを圧縮するためにドライバーが使用する 1 つ以上の圧縮アルゴリズムを指定します。 指定できる値は、 zlibsnappyzstdです。

デフォルト: null

zlibCompressionLevel

integer

接続されたMongoDBインスタンスへのリクエストのサイズを減らすために、Zlib が使用する圧縮の度合いを指定します。レベルの範囲は-1 から9 で、値が低いほど圧縮が速く(ただし、リクエストが大きくなる)、値が大きい場合は圧縮が遅くなります(ただし、リクエストが少なくなります)。

デフォルト: null

次の例では、ドライバーがリクエストを送信する前に圧縮を試みる順序を指定します。

ConnectionString connectionString = new ConnectionString(
"mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd");
MongoClient client = MongoClients.create(connectionString);

これらのパラメーターの詳細については、ConnectionString APIドキュメント を参照してください。

ドライバーの圧縮動作を変更するには、次のメソッドを MongoClientSettings コンストラクターにチェーンします。

方式
説明

compressorList()

サーバーへのメッセージを圧縮するために使用するコンプレッサーを設定します。

MongoClientSettings settings = MongoClientSettings.builder()
.compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(),
MongoCompressor.createZlibCompressor(),
MongoCompressor.createZstdCompressor()))
.build();
MongoClient client = MongoClients.create(settings);

連鎖メソッドの詳細については、MongoClientSettings.Builder APIドキュメント を参照してください。

このガイドで説明したメソッドや型の詳細については、次の API ドキュメントを参照してください。