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

压缩网络流量

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

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

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服务器版本:

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

4.10

4.2

4.10

4.2

4.10

4.2

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

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

Compression Algorithm
依赖

snappy

Download snappy-java, a Java JNI wrapper for the Snappy library. To install, see snappy-java in Maven Central.

zlib

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

Zstandard

Download zstd-jni, a Java JNI wrapper for the Zstandard library. To install, see zstd-jni in Maven Central.

您可以通过以下方式指定算法来启用连接压缩:

  • compressors参数添加到ConnectionString实例

  • MongoClientSettings 构建器调用 compressorList() 方法

To enable compression on your connection in a ConnectionString instance, specify the compressors parameter. You can specify one or more of the following values for the compressors parameter:

以下示例演示如何指定 Snappy、Zlib 和 Zstandard 作为连接的压缩算法:

// Replace the placeholders with values from your MongoDB deployment's connection string
val connectionString = ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd")
// Create a new client with your settings
val mongoClient = MongoClient.create(connectionString)

要在MongoClientSettings中启用压缩,请调用CompressorList()构建器方法并将一个或多个MongoCompressor实例作为参数传递。

您可以通过从MongoCompressor调用以下方法来指定压缩算法:

  • createSnappyCompressor() 用于 Snappy 压缩

  • createZlibCompressor() 用于zlib压缩

  • createZstdCompressor() 用于 Zstandard 压缩

以下示例演示如何指定 Snappy、Zlib 和 Zstandard 作为连接的压缩算法:

// Replace the placeholder with your MongoDB deployment's connection string
val uri = "<connection string>"
val settings = MongoClientSettings.builder()
.applyConnectionString(ConnectionString(uri))
.compressorList(
listOf(
MongoCompressor.createSnappyCompressor(),
MongoCompressor.createZlibCompressor(),
MongoCompressor.createZstdCompressor())
)
.build()
// Create a new client with your settings
val mongoClient = MongoClient.create(settings)