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

压缩网络流量

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

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

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

MongoDB Atlas对跨云区域、云提供商以及基础架构和MongoDB Atlas之间传输的数据收费。网络压缩可减少应用程序发送和接收的数据量,从而降低数据传输成本。要学习;了解有关定价的更多信息,请参阅数据传输成本。

网络压缩还有助于提高工作效率。压缩后的消息通过网络传输的时间更短,这可以缩短应用程序的响应时间。压缩还可以减少MongoDB流量使用的带宽,从而为同一网络上的其他应用程序留出更多带宽。

选择压缩算法时,请考虑以下准则:

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

  • 将 Snappy 用于需要最小计算开销的延迟敏感型应用程序。

  • 使用 Zlib 实现跨MongoDB驱动程序和环境的广泛兼容性。

提示

监控 CPU 使用率

压缩以网络带宽换取 CPU 使用率。启用网络压缩后,监控应用程序的 CPU 使用率,以确认这种权衡对您的工作负载有利。要详细了解这些权衡,请参阅 MongoDB 中的 CPU 使用率和网络压缩 博客文章。

下表列出了每种压缩算法支持的最低驾驶员和MongoDB Server版本:

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

3.6

4.2

3.6

4.2

3.11

4.2

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

下表列出了每种算法及其所需的依赖项(如果有):

压缩算法
依赖

snappy

下载snappy-java ,它是 Snappy 库的Java JNI 包装器。要安装,请参阅 Maven Central 中的 snappy-java。

zlib

无。驾驶员原生支持 Zlib 压缩。

Zstandard

下载 zstd-jni,一个用于 Zstandard 库的 Java JNI 包装器。要安装,请参阅 zstd-jni 在 Maven Central 中。

您可以通过以下方式之一指定算法,为MongoDB实例的连接启用压缩:

  • 在连接字符串中使用 compressors 参数

  • 将 compressorList() 方法链接到 MongoClientSettings.builder() 方法

选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:

在连接字符串中包含以下参数以启用压缩:

选项名称
类型
说明

compressors

字符串

指定驱动程序将尝试用于压缩发送到连接的 MongoDB 实例的请求的一种或多种压缩算法。可能的值包括:zlib、snappy 和 zstd。

默认值:null

zlibCompressionLevel

整型

指定 Zlib 用于减小对已连接MongoDB实例的请求大小的压缩程度。该级别的范围可以从-1 到9 ,值越小,压缩速度越快(但会产生较大的请求),值越大,压缩速度越慢(但会产生较小的请求)。

默认值:null

以下指定了驱动程序在发送请求之前尝试压缩请求的顺序:

ConnectionString connectionString = new ConnectionString(
"mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd");
MongoClient client = MongoClients.create(connectionString);

有关这些参数的更多信息,请参阅 ConnectionString API文档。

将以下方法链接到 MongoClientSettings 构造函数以修改驱动程序的压缩行为:

方法
说明

compressorList()

设置用于压缩发送到服务器的消息的压缩器。

MongoClientSettings settings = MongoClientSettings.builder()
.compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(),
MongoCompressor.createZlibCompressor(),
MongoCompressor.createZstdCompressor()))
.build();
MongoClient client = MongoClients.create(settings);

有关链式方法的更多信息,请参阅 MongoClientSettings.Builder API文档。

要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: