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

Os drivers do MongoDB podem compactar as mensagens enviadas e recebidas do MongoDB Server. Isso reduz a quantidade de dados transferidos para cada operação. A compressão pode melhorar o desempenho em redes restritas e reduzir os custos de transferência de dados associados à execução do MongoDB Atlas.

A compressão opera no nível do protocolo de conexão , portanto, ela se aplica a todas as operações que seu aplicação executa. Se você especificar mais de um algoritmo, o driver usará o primeiro algoritmo da sua lista que o MongoDB Server também suportará.

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

O MongoDB Atlas cobra por dados transferidos entre regiões de nuvem, provedores de nuvem e entre sua infraestrutura e o MongoDB Atlas. A compactação de rede reduz a quantidade de dados que seu aplicação envia e recebe, o que pode reduzir esses custos de transferência de dados . Para saber mais sobre preços, consulte Custos de transferência de dados.

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

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

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

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

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

Dica

Monitore o uso da CPU

A compactação troca a largura de banda da rede pelo uso da CPU. Depois de habilitar a compactação de rede, monitore a utilização da CPU do seu aplicativo para confirmar que a troca beneficia sua carga de trabalho. Para saber mais sobre essas trocas, consulte a publicação no blog Utilização da CPU e compactação de rede no MongoDB.

A tabela a seguir lista o driver mínimo suportado e a versão do MongoDB Server para cada algoritmo de compressão:

Algoritmo de compressão
Versão mínima do driver
Versão mínima do servidor

3.7

4.2

3.7

4.2

3.9

4.2

Para habilitar a compactação de rede para sua conexão do MongoDB , instale as dependências necessárias e especifique os algoritmos de compactação que você deseja usar.

A tabela a seguir lista as dependências necessárias para cada algoritmo de compressão:

Algoritmo de compressão
Dependência

Snappy

zlib

Exige o módulo Zlib, incluído na biblioteca Python padrão.

Zstandard

Para habilitar a compressão para a conexão com sua instância do MongoDB, use a opção de conexão compressors e especifique os algoritmos de compressão que deseja usar. Você pode fazer isso de duas maneiras:

  • Passe os algoritmos como um argumento para o construtor MongoClient .

  • Especifique os algoritmos em sua string de conexão.

O seguinte exemplo de código mostra ambas as opções:

As seguintes guias demonstram como especificar todos os compressores disponíveis durante a conexão ao MongoDB:

client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>",
compressors = "snappy,zstd,zlib")
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"compressors=snappy,zstd,zlib")
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>",
compressors = "snappy,zstd,zlib")
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"compressors=snappy,zstd,zlib")
client = pymongo.AsyncMongoClient(uri)

Se você não especificar um algoritmo de compressão, o PyMongo não comprimirá o tráfego de rede. Se você especificar vários algoritmos de compressão, o driver selecionará o primeiro na lista compatível com sua instância do MongoDB.

Se você especificar zlib como um dos algoritmos de compressão, também poderá usar a opção zlibCompressionLevel para especificar um nível de compressão. Esta opção aceita um valor inteiro entre -1 e 9:

  • -1: (padrão). zlib usa seu nível de compressão padrão (geralmente 6).

  • 0: sem compressão.

  • 1: velocidade mais rápida, mas menor compressão.

  • 9: a melhor compactação, mas a velocidade mais lenta.

O seguinte exemplo de código especifica o algoritmo de compressão zlib e um valor de 1 para a opção zlibCompressionLevel :

client = pymongo.MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>",
compressors = "zlib",
zlibCompressionLevel=1)
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"compressors=zlib"
"zlibCompressionLevel=1")
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>",
compressors = "zlib",
zlibCompressionLevel=1)
uri = ("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"compressors=zlib"
"zlibCompressionLevel=1")
client = pymongo.AsyncMongoClient(uri)

Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a documentação da API do MongoClient.