Visão geral
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á.
Algoritmos de compressão
Os drivers do MongoDB suportam os seguintes algoritmos de compressão:
Benefícios da compressão de rede
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.
Compatibilidade de versão
A tabela a seguir lista o driver mínimo suportado e a versão do MongoDB Server para cada algoritmo de compressão:
Habilitar compressão de rede
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.
Instalar dependências
A tabela a seguir lista cada algoritmo e a dependência necessária, se houver:
Algoritmo de compressão | Dependência |
|---|---|
Snappy | Baixe |
zlib | Nenhum. O driver suporta nativamente a compressão Zlib. |
Zstandard | Baixar |
Especifique algoritmos de compactação
Você pode habilitar a compressão para a conexão com sua instância do MongoDB especificando os algoritmos de uma das seguintes maneiras:
Use o parâmetro
compressorsem sua string de conexãoEncadeie o método
compressorList()ao métodoMongoClientSettings.builder()
Selecione a aba Connection String ou MongoClientSettings para ver a sintaxe correspondente:
Inclua os seguintes parâmetros em sua string de conexão para habilitar a compressão:
Nome da opção | Tipo | Descrição |
|---|---|---|
| string | Especifica um ou mais algoritmos de compressão que o driver tentará usar para compactar as solicitações enviadas à instância conectada do MongoDB. Os valores possíveis incluem: Padrão: |
| inteiro | Especifica o grau de compressão que o Zlib utiliza para diminuir o tamanho das solicitações para a instância MongoDB conectada. O nível pode variar Padrão: |
Especifica a seguir a ordem em que o driver tentará compactar as solicitações antes de serem enviadas:
ConnectionString connectionString = new ConnectionString( "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"); MongoClient client = MongoClients.create(connectionString);
Para obter mais informações sobre esses parâmetros, consulte a documentação da API ConnectionString.
Encadeie os seguintes métodos ao construtor do MongoClientSettings para modificar o comportamento de compressão do driver:
Método | Descrição |
|---|---|
| Define os compressores a serem usados para comprimir mensagens para o servidor. |
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
Para obter mais informações sobre os métodos encadeados, consulte a documentação da API do MongoClientSettings.Builder.
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: