ネットワーク トラフィックを圧縮
Overview
PyMongo には、メッセージを圧縮するための接続オプションが用意されているため、MongoDB とアプリケーション間でネットワークを介して渡されるデータ量を減らします。
PyMongo は次の圧縮アルゴリズムをサポートしています。
Snappy : MongoDB3 6で利用可能です。 以降このオプションには Python-Snappyパッケージが必要です。
zlib:MongoDB3 .6 以降で利用可能。このオプションには Python v 1の標準ライブラリに含まれる zlib モジュールが必要です。 5 以降に更新します。
Zstandard : MongoDB4 2で利用可能です。 以降。このオプションには zstandard パッケージ。
圧縮アルゴリズムを指定しない場合、PyMongo はネットワーク トラフィックを圧縮しません。 複数の圧縮アルゴリズムを指定した場合、ドライバーは MongoDB インスタンスでサポートされているリスト内の最初の 1 つを選択します。
圧縮アルゴリズムを指定する
MongoDB インスタンスへの接続の圧縮を有効にするには、 compressors
接続オプションを使用し、使用する圧縮アルゴリズムを指定します。 これは、次の 2 つの方法で行うことができます。
アルゴリズムを引数として
MongoClient
コンストラクターに渡します。接続stringでアルゴリズムを指定します。
次のコード例には、両方のオプションが表示されています。
client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "snappy,zstd,zlib")
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=snappy,zstd,zlib") client = pymongo.MongoClient(uri)
zlib 圧縮レベルの設定
圧縮アルゴリズムの 1 つとしてzlib
を指定する場合は、 zlibCompressionLevel
オプションを使用して圧縮レベルを指定することもできます。 このオプションは、 -1
から9
までの整数値を受け入れます。
- 1 :(デフォルト)。 zlib はデフォルトの圧縮レベル(通常は
6
)を使用します。0 :圧縮なし。
1 :速度は最も速く、圧縮は最小です。
9 :圧縮に最適ですが、速度は最も遅くなります。
次のコード例では、 zlib
圧縮アルゴリズムと、 zlibCompressionLevel
オプションに1
の値を指定しています。
client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>", compressors = "zlib", zlibCompressionLevel=1)
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?" "compressors=zlib" "zlibCompressionLevel=1") client = pymongo.MongoClient(uri)