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使用率とネットワーク圧縮のブログ記事を参照してください。
バージョンの互換性
Laravel Integration のすべてのバージョンは、各ネットワーク圧縮アルゴリズムをサポートしています。
以下のテーブルは、各アルゴリズムについてサポートされる最低バージョンのMongoDB Serverを示しています。
ネットワーク圧縮を有効にする
MongoDB接続でネットワーク圧縮を有効にするには、次の手順を実行します。
MongoDB PHP 拡張機能を必要な依存関係とともにビルドする。エクステンションはネットワーク圧縮を取り扱います。Laravel インテグレーションではありません。
使用したい圧縮アルゴリズムを指定します。
依存関係のインストール
Laravel Integrationは、MongoDB PHP ExtensionとMongoDB C Driverを使用してネットワーク圧縮を実装しているため、必要な依存関係とともにCドライバーをインストールする必要があります。これらの依存関係を表示するには、Cドライバーのドキュメントの依存関係のインストールを参照してください。
圧縮アルゴリズムを指定する
MongoDB インスタンスへの接続の圧縮を有効にするには、アプリケーションの config/database.php 構成ファイル内の connections 配列を更新します。圧縮アルゴリズムは、次のいずれかの方法で指定できます。
options配列にcompressorsオプションを含めますdsn接続文字列にcompressorsパラメーターを使用します。
Options Array または Connection String タブを選択して、使用可能なすべてのコンプレッサーを指定する例を表示します。
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'compressors' => 'snappy,zstd,zlib', ], ],],'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/?compressors=snappy,zstd,zlib', 'driver' => 'mongodb', 'database' => 'sample_mflix', ],],zlib 圧縮レベルを設定する
zlib を圧縮アルゴリズムの 1 つとして指定する場合、zlibCompressionLevel オプションを使用して圧縮レベルを指定できます。このオプションは、-1 から 9 までの整数値を受け入れます。値によって、次のような効果が得られます。
-1: (デフォルト) zlib はデフォルトの圧縮レベルを使用します(通常
6です)。0 :圧縮なし。
1 :速度は最も速く、圧縮は最小です。
9 :圧縮に最適ですが、速度は最も遅くなります。
Options Array または Connection String タブを選択して、zlibCompressionLevel オプションを 1 に設定する例を表示します。
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'compressors' => 'zlib', 'zlibCompressionLevel' => 1, ], ],],'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/?compressors=zlib&zlibCompressionLevel=1', 'driver' => 'mongodb', 'database' => 'sample_mflix', ],],