Overview
MongoDB 驱动程序可以压缩与 MongoDB Server 之间发送和接收的消息。这会减少每次操作的数据传输量。压缩可以提高在受限网络上的性能,并降低与运行 MongoDB Atlas 相关的数据传输费用。
压缩在传输协议级别运行,因此它适用于您的应用程序执行的每项操作。如果您指定了多种算法,驱动程序将使用列表中 MongoDB Server 也支持的第一种算法。
压缩算法
MongoDB 驱动程序支持以下压缩算法:
网络压缩优势
MongoDB Atlas 对跨云区域、云提供商以及您的基础设施与 MongoDB Atlas 之间的数据传输收费。网络压缩可减少您的应用程序发送和接收的数据量,这可以降低这些数据传输费用。要了解有关定价的更多信息,请参阅数据传输费用。
网络压缩还能提高生产力。压缩后的消息在网络上传输所需的时间更短,这可以缩短应用程序的响应时间。压缩还可以减少 MongoDB 流量所使用的带宽,从而为同一网络上的其他应用程序留出更多可用带宽。
当您选择压缩算法时,请考虑以下指南:
使用 Zstandard 可在压缩效率和资源使用之间取得平衡。对于大多数应用程序,Zstandard 是一个不错的默认选择。
对于对延迟敏感且需要最小计算开销的应用程序,请使用 Snappy。
使用 zlib 以实现 MongoDB 驱动程序和环境之间的广泛兼容性。
提示
监控 CPU 使用率
压缩以 CPU 使用率为代价换取网络带宽。启用网络压缩后,请监控应用程序的 CPU 利用率,以确认这种权衡是否对您的工作负载有利。要了解有关这些权衡的更多信息,请参阅MongoDB 中的 CPU 利用率和网络压缩博客文章。
版本兼容性
PHP 库使用 PHP 扩展来压缩网络流量。下表列出了每个压缩算法所需的最低 PHP 扩展和 MongoDB Server 版本:
启用网络压缩
要为您的 MongoDB 连接启用网络压缩,请安装所需的依赖项并指定要使用的压缩算法。
安装依赖项
由于 PHP 扩展使用 MongoDB C 驱动程序实现网络压缩,您必须为 C 驱动程序安装所需的依赖项。要查看这些依赖项,请参阅 C 驱动程序文档中的 安装依赖项。
指定压缩算法
要为MongoDB 部署的连接启用压缩,请使用 compressors 连接选项并指定要使用的压缩算法。您可以通过两种方式执行此操作:
将算法作为参数传递给
MongoDB\Client构造函数。在连接string中指定算法。
以下示例演示如何将 Snappy、 zlib和 Zstandard 指定为连接的压缩器。 选择 MongoDB\Client 或 Connection URI标签页,查看相应的代码:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', ['compressors' => 'snappy,zstd,zlib'],);$uri = 'mongodb://<hostname>:<port>/?compressors=snappy,zstd,zlib';$client = new MongoDB\Client($uri);指定zlib压缩级别
如果将 zlib 指定为压缩算法之一,您还可以使用 zlibCompressionLevel 选项指定压缩级别。此选项接受在 -1 和 9 之间的整数值:
- 1 :(默认)。 zlib使用默认压缩级别(通常为
6)。0 :无压缩。
1 :速度最快,但压缩率最低。
9 :压缩最佳,但速度最慢。
以下示例指定了 zlib 压缩算法和 zlibCompressionLevel 值 1。选择MongoDB\Client或Connection URI标签页以查看相应的代码:
$uriOptions = [ 'compressors' => 'zlib', 'zlibCompressionLevel' => 1,];
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions,);$uri = 'mongodb://<hostname>:<port>/?compressors=zlib&zlibCompressionLevel=1';$client = new MongoDB\Client($uri);API 文档
要学习;了解有关MongoDB\Client类的详情,请参阅库API文档中的MongoDB\Client 。
要查看可传递给 MongoDB\Client 的 URI 选项的完整列表,请参阅扩展API文档中的MongoDB\ 驱动程序\ 经理 ::__construct 参数。