ネットワーク圧縮
Overview
このガイドでは、Rust ドライバーを使用して MongoDB への接続のネットワーク圧縮を構成する方法を学習できます。
ネットワーク圧縮は、アプリケーションと MongoDB 間で送信されるメッセージを圧縮および解凍して、ネットワークを介して渡されるデータの総量を減らす機能です。
ドライバーは次のコンプレッサーをサポートしています。
注意
コンプレッサーの選択
接続で使用するコンプレッサーを複数指定した場合、ドライバーは、ドライバーが接続されている MongoDB インスタンスでサポートされている最初のコンプレッサーを選択します。
このガイドには、次のセクションが含まれています。
圧縮機能フラグを追加する
コンプレッサーを使用するには、プロジェクトのCargo.toml
ファイル内のmongodb
依存関係の機能リストに関連する機能フラグを追加します。
必要な機能フラグをmongodb
依存関係に追加する方法を確認するには、希望するコンプレッサーのタブを選択します。
[dependencies.mongodb] version = "3.1.1" features = ["snappy-compression"]
[dependencies.mongodb] version = "3.1.1" features = ["zlib-compression"]
[dependencies.mongodb] version = "3.1.1" features = ["zstd-compression"]
Tip
複数のコンプレッサーを指定するには、各コンプレッサーの機能フラグをmongodb
依存関係に追加する必要があります。
ネットワーク圧縮を有効にする
次の方法でコンプレッサーを指定して、 Client
インスタンスで圧縮を有効にできます。
接続stringに
compressors
パラメータを追加します。 この方法で圧縮を有効にする例については、「接続string 」セクションを参照してください。ClientOptions
インスタンスのcompressors
フィールドを設定する。 次に、Client
をインスタンス化するときに、オプションをwith_options()
メソッドに渡すことができます。 この方法で圧縮を有効にする例については、「 ClientOptionsセクション 」を参照してください。
接続文字列
接続stringを使用して圧縮を有効にするには、compressors
パラメータを指定します。 compressors
パラメーターには、次の値を 1 つ以上指定できます。
"snappy"
、Snappy 圧縮"zlib"
、 zlib圧縮用"zstd"
Zstandard 圧縮
次の例は、接続のコンプレッサーとしてSnappy 、 zlib 、および Zstandard を指定する方法を示しています。
let uri = "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"; let client = Client::with_uri_str(uri).await?;
クライアント オプションの設定の詳細については、 接続オプション に関するガイドを参照してください。
ClientOptions
ClientOptions
インスタンス内で圧縮を有効にするには、 compressors
フィールドを設定し、クライアントの作成時にオプションを渡します。
compressors
フィールドはVec<Compressor>
型の値を取ります。 Compressor
型には、次の可能な値があります。
Compressor::Snappy
Compressor::Zstd { level: <integer> }
Compressor::Zlib { level: <integer> }
level
フィールドを持つコンプレッサーの場合、デフォルトのレベルを示すには、値をNone
に設定します。 次の表は、 zlibと Zstandard のデフォルトおよび許容される圧縮レベルについて説明したものです。
コンプレッサー | デフォルトのレベル | 許容レベル |
---|---|---|
Zlib |
|
|
Zstandard |
|
|
level
の値が大きいほど、圧縮が行われますが、速度は遅くなります。
次の例は、接続のコンプレッサーとしてSnappy 、 zlib 、および Zstandard を指定する方法を示しています。
let uri = "<connection string>"; let mut client_options = ClientOptions::parse(uri).await?; let compressors = vec![ Compressor::Snappy, Compressor::Zstd { level: Some(1) }, Compressor::Zlib { level: None } ]; client_options.compressors = Some(compressors); let client = Client::with_options(client_options)?;
詳細情報
このガイドの概念の詳細については、次のドキュメントを参照してください。
サーバー マニュアルの「接続string圧縮オプション」を参照してください
API ドキュメント
このガイドで言及されているメソッドや型の詳細については、以下のAPIドキュメントを参照してください。