Overview
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の最低バージョンを示します。
ネットワーク圧縮を有効にする
MongoDB 接続のネットワーク圧縮を有効にするには、必要な依存関係を含めて C ドライバーをビルドし、使用する圧縮アルゴリズムを指定します。
依存関係のインストール
以下の表には、各アルゴリズムと必要な依存関係が示されています。
圧縮アルゴリズムを指定する
次のいずれかの方法でアルゴリズムを指定することで、 MongoDBインスタンスへの接続の圧縮を有効にできます。
compressorsパラメータを接続文字列に追加しますmongoc_uri_t構造体に圧縮機を設定する
Connection String または URI Option タブを選択して、使用可能なすべてのコンプレッサーを指定する例を表示します。
client = mongoc_client_new("mongodb://<db_username>:<db_password>@<hostname>/?compressors=snappy,zlib,zstd");uri = mongoc_uri_new("mongodb://localhost:27017");mongoc_uri_set_compressors(uri, "snappy,zlib,zstd");
client = mongoc_client_new_from_uri(uri);zlibCompressionLevel
zlib アルゴリズムを使用する場合は、圧縮レベルを -1 から 9 まで指定できます。低いレベルでは、一般的に圧縮率が低く、圧縮が速くなります。一方、高いレベルでは、圧縮率が高く、圧縮が遅くなります。
Connection String または URI Option タブを選択して、zlib コンプレッサーの圧縮レベルを指定する例を表示します。
client = mongoc_client_new("mongodb://<db_username>:<db_password>@<hostname>/?compressors=zlib&zlibCompressionLevel=<zlib_compression_level");uri = mongoc_uri_new("mongodb://localhost:27017");mongoc_uri_set_option_as_int32(uri, MONGOC_URI_ZLIBCOMPRESSIONLEVEL, <zlib-compression-level>);
client = mongoc_client_new_from_uri(uri);API ドキュメント
このページで使用されているタイプと関数の詳細については、以下の API ドキュメントを参照してください。