Visão geral
Os drivers do MongoDB podem compactar as mensagens enviadas para e recebidas do servidor do MongoDB. 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 servidor MongoDB também suporta.
Algoritmos de compressão
Os drivers do MongoDB suportam os seguintes algoritmos de compactação:
Benefícios da compactação de rede
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.
Compatibilidade de versão
A tabela a seguir lista o driver mínimo compatível e a versão do servidor MongoDB para cada algoritmo de compactação:
Habilitar compressão de rede
Para habilitar a compactação de rede para sua conexão com o MongoDB, instale as dependências necessárias e especifique os algoritmo de compactação que você deseja usar.
Dependências do algoritmo de compactação
A tabela a seguir lista cada algoritmo e a dependência que ele requer, se houver:
Algoritmo de compactação | Dependência |
|---|---|
Snappy | Baixar |
zlib | Nenhum. O driver oferece suporte nativo à compactação zlib. |
Zstandard | Baixar |
Especifique algoritmos de compactação
Você pode habilitar a compressão na sua conexão especificando os algoritmos das seguintes maneiras:
Adicionando o parâmetro
compressorsà sua instânciaConnectionStringChamando o método
compressorList()do construtorMongoClientSettings
Para habilitar a compressão em sua conexão em uma instância ConnectionString, 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 compressão zlib"zstd"para compressão padrão Z
O exemplo a seguir mostra como especificar Snappy, zlib e Zstandard como os algoritmos de compressão para uma conexão:
// Replace the placeholders with values from your MongoDB deployment's connection string val connectionString = ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd") // Create a new client with your settings val mongoClient = MongoClient.create(connectionString)
Para ativar o uso da compactação em suas MongoClientSettings, chame o método de construtor compressorList() e passe uma ou mais instâncias do MongoCompressor como parâmetro.
Você pode especificar algoritmos de compressão chamando os seguintes métodos do MongoCompressor:
createSnappyCompressor()para compressão SnappycreateZlibCompressor()para compressão zlibcreateZstdCompressor()para compressão padrão Z
O exemplo a seguir mostra como especificar Snappy, zlib e Zstandard como os algoritmos de compressão para uma conexão:
// Replace the placeholder with your MongoDB deployment's connection string val uri = "<connection string>" val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .compressorList( listOf( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor()) ) .build() // Create a new client with your settings val mongoClient = MongoClient.create(settings)