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 compressão troca a largura de banda da rede pelo uso da CPU. Depois de ativar a compactação de rede, monitore a utilização da CPU do aplicativo para confirmar se a compensação beneficia o volume de trabalho. Para saber mais sobre essas compensações, consulte a postagem do blog Utilização da CPU e Compressã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:
Especifique algoritmos de compactação
Para habilitar a compressão para a conexão com sua instância MongoDB, especifique os algoritmos que você deseja usar de uma das seguintes maneiras:
Adicione os algoritmos à sua string de conexão como parâmetro
Especifique os algoritmos na propriedade
Compressorsdo seu objetoMongoClientSettings
Para habilitar a compactação usando a string de conexão, adicione o parâmetro compressors à string de conexão. Você pode especificar um ou mais algoritmos de compressão, separando-os por vírgulas:
const string connectionUri = "mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"; var client = new MongoClient(connectionUri);
Para habilitar a compactação usando MongoClientSettings, defina a Compressors propriedade do seu MongoClientSettings objeto como List de um ou mais CompressorConfiguration objetos . Cada CompressorConfiguration objeto no List representa um algoritmo que você deseja utilizar:
var settings = new MongoClientSettings() { Scheme = ConnectionStringScheme.MongoDB, Server = new MongoServerAddress("<cluster-url>"), Compressors = new List<CompressorConfiguration>() { new CompressorConfiguration(CompressorType.Snappy), new CompressorConfiguration(CompressorType.Zlib), new CompressorConfiguration(CompressorType.Zstandard) } }; var client = new MongoClient(settings);