Docs 菜单
Docs 主页
/ / /
Rust 驱动程序
/ /

网络压缩

在此页面上

  • Overview
  • 添加压缩功能标志
  • 启用网络压缩
  • 连接字符串
  • ClientOptions
  • 更多信息
  • API 文档

在本指南中,您可以了解如何使用 Rust 驱动程序为与 MongoDB 的连接配置网络压缩

网络压缩功能允许您压缩和解压缩应用程序与 MongoDB 之间发送的消息,从而减少通过网络传递的数据总量。

该驱动程序支持以下压缩程序:

  1. Snappy :在MongoDB3 中可用。4 及更高版本

  2. zlib:在MongoDB3 .6 及更高版本中可用

  3. Zstandard :在 MongoDB4 中可用。2 及更高版本

注意

压缩器选择

如果您指定在连接上使用多个压缩器,驱动程序会选择其连接的 MongoDB 实例支持的第一个压缩器。

本指南包括以下部分:

  • 添加压缩功能标志描述了如何为不同的压缩器添加功能标志到应用程序

  • 启用网络压缩描述了如何在 Client实例上启用网络压缩

  • 附加信息提供了本指南中提到的类型和方法的资源和 API 文档链接

要使用压缩器,请将相关功能标志添加到项目Cargo.toml文件中mongodb依赖项的功能列表中。

选择首选压缩程序的标签页,查看如何将必要的功能标志添加到mongodb依赖项中:

[dependencies.mongodb]
version = "3.1.0"
features = ["snappy-compression"]
[dependencies.mongodb]
version = "3.1.0"
features = ["zlib-compression"]
[dependencies.mongodb]
version = "3.1.0"
features = ["zstd-compression"]

提示

要指定多个压缩程序,必须将每个压缩程序的功能标志添加到mongodb依赖项中。

您可以通过以下方式指定压缩程序,在Client实例上启用压缩:

  • compressors 参数添加到连接string中。 要查看以这种方式启用压缩的示例,请参阅连接string部分。

  • 设置ClientOptions实例的compressors字段。 然后,您可以在实例化Client时将选项传递给with_options()方法。 要查看以这种方式启用压缩的示例,请参阅ClientOptions部分。

要使用连接字符串启用压缩,请指定compressors参数。 您可以为compressors参数指定以下一个或多个值:

  • "snappy" 用于 Snappy 压缩

  • "zlib" ,用于 Zlib 压缩

  • "zstd" 用于 Zstandard 压缩

以下示例显示如何将 Snappy、Zlib 和 Zstandard 指定为连接的压缩程序:

let uri = "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd";
let client = Client::with_uri_str(uri).await?;

要学习;了解有关设置客户端选项的详情,请参阅连接选项指南。

要在ClientOptions实例中启用压缩,请设置compressors字段,然后在创建客户端时传递选项。

compressors字段采用Vec<Compressor>类型的值。 Compressor类型具有以下可能的值:

  • Compressor::Snappy

  • Compressor::Zstd { level: <integer> }

  • Compressor::Zlib { level: <integer> }

对于具有level字段的压缩器,将该值设置为None以指示默认级别。 下表描述了 Zlib 和 Zstandard 的默认和可接受的压缩级别:

Compressor
默认级别
已接受级别
zlib
6
09None的整数
Zstandard
3
122None的整数

level值越高,压缩程度越高,速度越慢。

以下示例显示如何将 Snappy、Zlib 和 Zstandard 指定为连接的压缩程序:

let uri = "<connection string>";
let mut client_options = ClientOptions::parse(uri).await?;
let compressors = vec![
Compressor::Snappy,
Compressor::Zstd { level: Some(1) },
Compressor::Zlib { level: None }
];
client_options.compressors = Some(compressors);
let client = Client::with_options(client_options)?;

有关本指南中概念的更多信息,请参阅以下文档:

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

后退

连接选项