Overview
MongoDBドライバーは、 MongoDBサーバーとの間で送受信されるメッセージを圧縮できます。これにより、各操作で転送されるデータ量が減ります。圧縮により、制約されたネットワークのパフォーマンスが向上し、 MongoDB Atlas の実行中に関連するデータ転送コストが削減されます。
圧縮はワイヤプロトコルレベルで動作するため、アプリケーションが実行するすべての操作に適用されます。複数のアルゴリズムを指定した場合 、ドライバーはMongoDBサーバーもサポートしているリスト内の最初のアルゴリズムを使用します。
圧縮アルゴリズム
MongoDBドライバーは次の圧縮アルゴリズムをサポートしています。
ネットワーク圧縮のメリット
MongoDB Atlas は、クラウドリージョン、クラウドプロバイダー、および インフラストラクチャとMongoDB Atlas間で転送されたデータに対して料金を請求します。ネットワーク圧縮により、アプリケーションが送受信するデータ量が減り、これらのデータ転送コストを削減できます。価格の詳細については、「 データ転送コスト 」を参照してください。
ネットワーク圧縮には、効率的な利点も得られます。圧縮されたメッセージはネットワーク間での転送時間が短縮されるため、アプリケーションの応答時間を向上させることができます。圧縮により、 MongoDBトラフィックが使用する帯域幅も削減されるため、同じネットワーク上の他のアプリケーションで使用できる帯域幅が増えます。
圧縮アルゴリズムを選択する場合は、次のガイドラインを考慮してください。
圧縮効率とリソース使用量のバランスを取るには、Zstandard を使用します。 Zstandard は、ほとんどのアプリケーションでのデフォルトの選択に適しています。
最小限の計算オーバーヘッドを必要とするレイテンシの影響を受けやすいアプリケーションには、 Snappy を使用してください。
MongoDBドライバーと環境間での広範な互換性を実現するには、Zlib を使用してください。
Tip
CPU 使用率の監視
圧縮は、CPU 使用率とネットワーク帯域幅の引き換えです。ネットワーク圧縮を有効にした後、アプリケーションの CPU 使用率を監視して、トレードオフがワークロードにメリットをもたらすことを確認します。これらのトレードオフの詳細については、 MongoDBブログ記事の CPU 使用率とネットワーク圧縮 を参照してください。
バージョンの互換性
次の表は、各 圧縮アルゴリズムでサポートされる最小のドライバーとMongoDBサーバーのバージョンを示しています。
ネットワーク圧縮を有効にする
MongoDB接続のネットワーク圧縮を有効にするには、必要な依存関係をインストールし、使用する圧縮アルゴリズムを指定します。
圧縮アルゴリズムの依存関係
次の表は、各アルゴリズムと、必要な依存関係(存在する場合)を示しています。
圧縮アルゴリズム | 依存 |
|---|---|
Snappy |
|
Zlib | なし。ドライバーは Zlib 圧縮をネイティブでサポートしています。 |
Zstandard |
|
圧縮アルゴリズムを指定する
次の方法でアルゴリズムを指定することで、接続の圧縮を有効にできます。
ConnectionStringインスタンスへのcompressorsパラメータの追加MongoClientSettingsビルダからcompressorList()メソッドを呼び出す
ConnectionStringインスタンスで接続の圧縮を有効にするには、 compressorsパラメータを指定します。 パラメーターには、次の値を 1compressors つ以上指定できます。
次の例は、接続の圧縮アルゴリズムとしてSnappy 、 zlib 、および Zstandard を指定する方法を示しています。
// Replace the placeholders with values from your MongoDB deployment's connection string val connectionString = ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd") // Create a new client with your settings val mongoClient = MongoClient.create(connectionString)
MongoClientSettings 内で を使用して圧縮を有効にするには、compressorList() ビルダ メソッドを呼び出し、1 つ以上の MongoCompressor インスタンスを パラメーターとして渡します。
圧縮アルゴリズムを指定するには、 MongoCompressorから次のメソッドを呼び出します。
createSnappyCompressor()、Snappy 圧縮createZlibCompressor()、zlib 圧縮用createZstdCompressor()Zstandard 圧縮
次の例は、接続の圧縮アルゴリズムとしてSnappy 、 zlib 、および Zstandard を指定する方法を示しています。
// Replace the placeholder with your MongoDB deployment's connection string val uri = "<connection string>" val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .compressorList( listOf( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor()) ) .build() // Create a new client with your settings val mongoClient = MongoClient.create(settings)