Overview
このガイドでは、Rust ドライバーを使用して MongoDB への接続のネットワーク圧縮を構成する方法を学習できます。
ネットワーク圧縮は、アプリケーションと MongoDB 間で送信されるメッセージを圧縮および解凍して、ネットワークを介して渡されるデータの総量を減らす機能です。
ドライバーは次のコンプレッサーをサポートしています。
注意
コンプレッサーの選択
接続で使用するコンプレッサーを複数指定した場合、ドライバーは、ドライバーが接続されている MongoDB インスタンスでサポートされている最初のコンプレッサーを選択します。
このガイドには、次のセクションが含まれています。
圧縮機能フラグを追加する
コンプレッサーを使用するには、プロジェクトのCargo.tomlファイル内のmongodb依存関係の機能リストに関連する機能フラグを追加します。
必要な機能フラグをmongodb依存関係に追加する方法を確認するには、希望するコンプレッサーのタブを選択します。
[dependencies.mongodb] version = "3.3.0" features = ["snappy-compression"]
[dependencies.mongodb] version = "3.3.0" features = ["zlib-compression"]
[dependencies.mongodb] version = "3.3.0" 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::SnappyCompressor::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ドキュメントを参照してください。