文档菜单
文档首页
/ / /
Rust 驱动程序
/ /

网络压缩

本页

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

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

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

驱动程序支持以下压缩器

  1. Snappy:MongoDB 3.4及以后版本可用

  2. Zlib:MongoDB 3.6及以后版本可用

  3. Zstandard:从MongoDB 4.2版本开始支持

注意

压缩程序选择

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

本指南包括以下部分

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

  • 启用网络压缩描述了如何在您的客户端实例上启用网络压缩

  • 更多信息提供了本指南中提到的类型和方法的相关资源和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依赖项。

您可以通过指定压缩程序以以下方式在您的 客户端 实例上启用压缩:

  • compressors 参数添加到您的连接字符串中。要查看通过这种方式启用压缩的示例,请参阅 连接字符串 部分。

  • 设置 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 字段,然后在创建客户端时传递这些选项。

“压缩器”字段接受类型为 Vec 的值。Compressor 类型有以下可能的值

  • Compressor::Snappy

  • Compressor::Zstd { level: }

  • Compressor::Zlib { level: }

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

压缩器
默认级别
接受的级别
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 文档

上一页

连接选项