Compactação de rede
Nesta página
Visão geral
Neste guia, você aprenderá como configurar a compactação de rede para sua conexão com o MongoDB usando o driver Rust.
A compactação de rede é um recurso que permite compactar e descompactar mensagens enviadas entre seu aplicativo e o MongoDB, reduzindo a quantidade total de dados passados pela rede.
O driver é compatível com os seguintes compressores:
Snappy: disponível no MongoDB 3.4 e posterior
zlib: disponível no MongoDB 3.6 e posterior
Zstandard: disponível no MongoDB 4.2 e posterior
Observação
Seleção de compressor
Se você especificar vários compressores para usar em sua conexão, o driver selecionará o primeiro que for suportado pela instância MongoDB à qual o driver está conectado.
Este guia inclui as seguintes seções:
Adicionar sinalizadores de recursos de compressão descreve como adicionar sinalizadores de recursos ao seu aplicativo para diferentes compressores
Habilitar Compressão de Rede descreve como habilitar a compressão de rede na sua instância do
Client
Informações adicionais fornecem links para recursos e documentação da API para os tipos e métodos mencionados neste guia
Adicionar sinalizadores de recurso de compressão
Para usar um compressor, adicione o sinalizador de mongodb
feição relevante à sua lista de feições da dependência do no Cargo.toml
arquivo do seu projeto.
Selecione a guia do compressor de sua preferência para ver como adicionar o sinalizador de funcionalidade necessário à sua dependência do 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"]
Dica
Para especificar vários compressores, você deve adicionar o sinalizador de feição para cada compressor à sua dependência mongodb
.
Habilitar compressão de rede
Você pode habilitar a compressão na sua instância do Client
especificando compressores das seguintes maneiras:
Adicionando o parâmetro
compressors
à sua string de conexão. Para ver um exemplo que habilita a compressão dessa forma, consulte a seção stringde conexão .Definindo o campo
compressors
de uma instânciaClientOptions
. Você pode então passar as opções para o métodowith_options()
ao instanciar umClient
. Para ver um exemplo que habilita a compressão dessa forma, consulte a seção ClientOptions .
Connection string
Para habilitar a compressão utilizando uma string de conexão, especifique o parâmetro compressors
. Você pode especificar um ou mais dos seguintes valores para o parâmetro compressors
:
"snappy"
para compressão Snappy"zlib"
para compactação Zlib"zstd"
para compressão padrão Z
O exemplo a seguir mostra como especificar Snappy, zlib e Zstandard como os compressores para uma conexão:
let uri = "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"; let client = Client::with_uri_str(uri).await?;
Para saber mais sobre como configurar as opções do cliente , consulte o guia sobre asopções de conexão .
ClientOptions
Para habilitar a compressão na sua instância do ClientOptions
, defina o campo compressors
e então passe as opções ao criar um cliente.
O campo compressors
assume um valor do tipo Vec<Compressor>
. O tipo Compressor
tem os seguintes valores possíveis:
Compressor::Snappy
Compressor::Zstd { level: <integer> }
Compressor::Zlib { level: <integer> }
Para os compressores que têm um campo level
, defina o valor como None
para indicar o nível padrão. A tabela a seguir descreve os níveis de compressão padrão e aceitos para zlib e Zstandard:
Compressor | Nível padrão | Níveis aceitos |
---|---|---|
zlib | 6 | Inteiros de 0 a 9 ou None |
Zstandard | 3 | Inteiros de 1 a 22 ou None |
Um valor de level
maior resulta em mais compactação, que é mais lenta.
O exemplo a seguir mostra como especificar Snappy, zlib e Zstandard como os compressores para uma conexão:
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)?;
Informações adicionais
Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação:
Opções de compactação de connection string no manual do servidor MongoDB
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos mencionados neste guia, consulte a seguinte documentação da API: