ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs 菜单

压缩网络流量

PyMongo提供了压缩消息的连接选项,从而减少了MongoDB和应用程序之间通过网络传递的数据量。

PyMongo支持以下压缩算法:

  1. Snappy :在MongoDB3 中可用。6 及更高版本。此选项需要 python-snappy 包。

  2. zlibMongoDB3:在.6 及更高版本中可用。此选项需要zlib模块,该模块包含在Python v 1的标准库中。 5 和更高版本。

  3. Zstandard :在MongoDB4 中可用。2 及更高版本。此选项需要 zstandard 包。

要为 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)

如果不指定压缩算法,PyMongo 不会压缩网络流量。 如果指定多种压缩算法,驱动程序会选择 MongoDB 实例支持的列表中的第一个算法。

如果您指定zlib作为其中一种压缩算法,则还可以使用zlibCompressionLevel选项来指定压缩级别。 此选项接受-19之间的整数值:

  • - 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)

要学习;了解有关本指南中讨论的任何方法或类型的更多信息,请参阅 MongoClient API文档。