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连接启用网络压缩,请安装所需的依赖项并指定要使用的压缩算法。
安装依赖项
某些压缩算法要求您安装额外的 gem。下表列出了每种算法及其所需的依赖项(如果有):
压缩算法 | 依赖 |
|---|---|
snappy | 将 |
zlib | 无需额外的 gem。您的应用程序必须包含 |
Zstandard | 将 |
如果您启用 Snappy 或 Zstandard 但未安装所需的 gem,则在创建 Mongo::Client 时,驱动程序会报告未满足的依赖项错误。
指定压缩算法
要为 MongoDB 实例的连接启用压缩,请通过以下方式之一指定要使用的算法:
将算法作为参数添加到连接字符串中
在
Mongo::Client对象的compressors选项中指定算法
要使用连接字符串启用网络压缩,请添加 compressors 选项。 您可以将一种或多种算法指定为以逗号分隔的列表。
uri = "mongodb://<hostname>:<port>/?compressors=zlib,snappy" client = Mongo::Client.new(uri)
要在客户端对象中启用压缩,请将 compressors 选项传递给 Mongo::Client 构造函数。
client = Mongo::Client.new(["<hostname>:<port>"], compressors: ["zlib", "snappy"])