对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

压缩网络流量

MongoDB 驱动程序可以压缩与 MongoDB Server 之间发送和接收的消息。这会减少每次操作的数据传输量。压缩可以提高在受限网络上的性能,并降低与运行 MongoDB Atlas 相关的数据传输费用。

压缩在传输协议级别运行,因此它适用于您的应用程序执行的每项操作。如果您指定了多种算法,驱动程序将使用列表中 MongoDB Server 也支持的第一种算法。

MongoDB 驱动程序支持以下压缩算法:

MongoDB Atlas charges for data transferred across cloud regions, cloud providers, and between your infrastructure and MongoDB Atlas. Network compression reduces the amount of data that your application sends and receives, which can lower these data transfer costs. To learn more about pricing, see Data Transfer Costs.

网络压缩还能提高生产力。压缩后的消息在网络上传输所需的时间更短,这可以缩短应用程序的响应时间。压缩还可以减少 MongoDB 流量所使用的带宽,从而为同一网络上的其他应用程序留出更多可用带宽。

当您选择压缩算法时,请考虑以下指南:

  • 使用 Zstandard 可在压缩效率和资源使用之间取得平衡。对于大多数应用程序,Zstandard 是一个不错的默认选择。

  • 对于对延迟敏感且需要最小计算开销的应用程序,请使用 Snappy。

  • 使用 zlib 以实现 MongoDB 驱动程序和环境之间的广泛兼容性。

提示

监控 CPU 使用率

Compression trades network bandwidth for CPU usage. After you enable network compression, monitor your application's CPU utilization to confirm that the trade-off benefits your workload. To learn more about these trade-offs, see the CPU Utilization and Network Compression in MongoDB blog post.

下表列出了每个压缩算法支持的最低驱动程序和 MongoDB Server 版本:

压缩算法
最低驱动程序版本
最低服务器版本

3.7

4.2

3.7

4.2

3.9

4.2

要为您的 MongoDB 连接启用网络压缩,请安装所需的依赖项并指定要使用的压缩算法。

以下表格列出了每种压缩算法所需的依赖项:

压缩算法
依赖项

snappy

需要 python-snappy 包。

zlib

需要 zlib 模块,该模块包含在标准 Python 库中。

Zstandard

需要 zstandard 包。

要为 MongoDB 实例的连接启用压缩,请使用compressors连接选项并指定要使用的压缩算法。 您可以通过两种方式执行此操作:

  • 将算法作为参数传递给MongoClient构造函数。

  • 在连接string中指定算法。

以下代码示例显示了这两个选项:

以下标签页演示了如何在连接到MongoDB时指定所有可用的压缩器:

client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>",
compressors = "snappy,zstd,zlib")

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

如果您指定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)

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