Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Comprimir tráfego de rede

Drivers do MongoDB podem compactar as mensagens enviadas para e recebidas do MongoDB Server. Isso reduz a quantidade de transferência de dados para cada operação. A compactação pode melhorar o desempenho em redes restritas e reduzir o custo de transferência de dados associado à execução do MongoDB Atlas.

A compactação opera no nível do wire protocol, portanto, aplica-se a todas as operações que seu aplicativo executa. Se você especificar mais de um algoritmo, o driver usará o primeiro algoritmo da sua lista que o MongoDB Server também suporta.

Os drivers do MongoDB suportam os seguintes algoritmos de compactação:

MongoDB Atlas charges for data transferred across cloud regions, cloud providers, and between your infrastructure and MongoDB Atlas. Network compression reduces the amount of data that your application sends and receives, which can lower these data transfer costs. To learn more about pricing, see Data Transfer Costs.

A compactação de rede também traz benefícios de produtividade. Mensagens compactadas levam menos tempo para serem transferidas pela rede, o que pode melhorar os tempos de resposta do seu aplicativo. A compactação também reduz a largura de banda que o tráfego do MongoDB utiliza, o que deixa mais largura de banda disponível para outros aplicativos na mesma rede.

Ao escolher um algoritmo de compactação, considere as seguintes diretrizes:

  • Use o Zstandard para um equilíbrio entre eficiência de compactação e uso de recursos. O Zstandard é uma boa escolha padrão para a maioria dos aplicativos.

  • Use Snappy para aplicativos sensíveis à latência que exigem sobrecarga computacional mínima.

  • Use o zlib para ampla compatibilidade entre drivers e ambientes do MongoDB.

Dica

Monitorar o uso da CPU

Compression trades network bandwidth for CPU usage. After you enable network compression, monitor your application's CPU utilization to confirm that the trade-off benefits your workload. To learn more about these trade-offs, see the CPU Utilization and Network Compression in MongoDB blog post.

A tabela a seguir lista o driver mínimo compatível e a versão do MongoDB Server para cada algoritmo de compactação:

Algoritmo de compactação
Versão mínima do driver
Versão mínima do servidor

2.1

4.2

2.1

4.2

2.1

4.2

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.9.1"
features = ["snappy-compression"]

Dica

Para especificar vários compressores, você deve adicionar o sinalizador de feição para cada compressor à sua dependência mongodb .

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 .

  • Setting the compressors field of a ClientOptions instance. You can then pass the options to the with_options() method when instantiating a Client. To see an example that enables compression this way, see the ClientOptions section.

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 definir opções de cliente, consulte o guia sobre Especificar opções de conexão.

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)?;

Para obter mais informações sobre os conceitos deste guia, consulte a seguinte documentação:

Para saber mais sobre qualquer um dos métodos ou tipos mencionados neste guia, consulte a seguinte documentação da API: