压缩网络流量
Overview
PyMongo提供了一个连接选项来压缩消息,从而减少了MongoDB和应用程序之间通过网络传递的数据量。
PyMongo 支持以下压缩算法。
Snappy :在MongoDB3 6中可用。 及更高版本。此选项需要 python-snappy 包。
zlibMongoDB3:在.6 及更高版本中可用。此选项需要zlib模块,该模块包含在Python v 1的标准库中。 5 和更高版本。
如果不指定压缩算法,PyMongo 不会压缩网络流量。 如果指定多种压缩算法,驱动程序会选择 MongoDB 实例支持的列表中的第一个算法。
指定压缩算法
要为MongoDB实例的连接启用压缩,请使用 compressors
连接选项并指定要使用的压缩算法。 您可以通过两种方式执行此操作:
将算法作为参数传递给
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压缩级别
如果您指定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)