Overview
MongoDB 驱动程序可以压缩与 MongoDB Server 之间发送和接收的消息。这会减少每次操作的数据传输量。压缩可以提高在受限网络上的性能,并降低与运行 MongoDB Atlas 相关的数据传输费用。
压缩在传输协议级别运行,因此它适用于您的应用程序执行的每项操作。如果您指定了多种算法,驱动程序将使用列表中 MongoDB Server 也支持的第一种算法。
压缩算法
MongoDB 驱动程序支持以下压缩算法:
网络压缩优势
MongoDB Atlas 对跨云区域、云提供商以及您的基础设施与 MongoDB Atlas 之间的数据传输收费。网络压缩可减少您的应用程序发送和接收的数据量,这可以降低这些数据传输费用。要了解有关定价的更多信息,请参阅数据传输费用。
网络压缩还能提高生产力。压缩后的消息在网络上传输所需的时间更短,这可以缩短应用程序的响应时间。压缩还可以减少 MongoDB 流量所使用的带宽,从而为同一网络上的其他应用程序留出更多可用带宽。
当您选择压缩算法时,请考虑以下指南:
使用 Zstandard 可在压缩效率和资源使用之间取得平衡。对于大多数应用程序,Zstandard 是一个不错的默认选择。
对于对延迟敏感且需要最小计算开销的应用程序,请使用 Snappy。
使用 zlib 以实现 MongoDB 驱动程序和环境之间的广泛兼容性。
提示
监控 CPU 使用率
压缩以 CPU 使用率为代价换取网络带宽。启用网络压缩后,请监控应用程序的 CPU 利用率,以确认这种权衡是否对您的工作负载有利。要了解有关这些权衡的更多信息,请参阅MongoDB 中的 CPU 利用率和网络压缩博客文章。
版本兼容性
下表列出了每个压缩算法支持的最低驱动程序和 MongoDB Server 版本:
启用网络压缩
要为您的 MongoDB 连接启用网络压缩,请安装所需的依赖项并指定要使用的压缩算法。
安装依赖项
下表列出了每个算法以及它所需的依赖项(如有):
压缩算法 | 依赖项 |
|---|---|
snappy | 下载 |
zlib | 无。该驱动程序原生支持 zlib 压缩。 |
Zstandard | 下载 |
指定压缩算法
您可以通过以下方式之一指定算法,为MongoDB实例的连接启用压缩:
在连接字符串中使用
compressors参数将
compressorList()方法链接到MongoClientSettings.builder()方法
选择 Connection String 或 MongoClientSettings标签页,查看相应的语法:
在连接字符串中包含以下参数以启用压缩:
选项名称 | 类型 | 说明 |
|---|---|---|
| 字符串 | 指定驱动程序将尝试用于压缩发送到连接的 MongoDB 实例的请求的一种或多种压缩算法。可能的值包括: 默认值: |
| 整型 | 指定zlib用于减小对已连接MongoDB实例的请求大小的压缩程度。该级别的范围可以从 默认值: |
以下指定了驱动程序在发送请求之前尝试压缩请求的顺序:
ConnectionString connectionString = new ConnectionString( "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd");
MongoClient client = MongoClients.create(connectionString);有关这些参数的更多信息,请参阅 ConnectionString API文档。
将以下方法链接到 MongoClientSettings 构造函数以修改驱动程序的压缩行为:
方法 | 说明 |
|---|---|
| 设置用于压缩发送到服务器的消息的压缩器。 |
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor())) .build();
MongoClient client = MongoClients.create(settings);有关链式方法的更多信息,请参阅 MongoClientSettings.Builder API文档。
API 文档
要进一步了解本指南所讨论的任何方法或类型,请参阅以下 API 文档: