Visão geral
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.
Algoritmos de compressão
Os drivers do MongoDB suportam os seguintes algoritmos de compactação:
Benefícios da compactação de rede
O MongoDB Atlas cobra pela transferência de dados 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 aplicativo envia e recebe, o que pode diminuir 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 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
A compactação troca largura de banda de rede por uso de CPU. Depois de ativar a compactação de rede, monitore a utilização da CPU do seu aplicativo para confirmar se a compensação beneficia sua carga de trabalho. Para aprender mais sobre essas compensações, consulte a publicação no blog Utilização de CPU e compactação de rede no MongoDB.
Compatibilidade de versão
A tabela a seguir lista o driver mínimo compatível e a versão do MongoDB Server para cada algoritmo de compactação:
Habilitar compressão de rede
Para habilitar a compactação de rede para sua conexão MongoDB, crie o driver C com 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 que ele requer, se houver:
Algoritmo de compactação | Dependência |
|---|---|
Snappy | Instale a biblioteca Snappy. Para ver as instruções de instalação, consulte o repositório do GitHub do snappy. |
zlib | Nenhum. O driver inclui zlib por padrão. |
Zstandard | Instale a biblioteca Zstandard. Para ver as instruções de instalação, consulte o zstd repositório do GitHub. |
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:
Adicione o parâmetro
compressorsà sua string de conexãoDefina os compressores em um struct
mongoc_uri_t
Selecione a aba Connection String ou URI Option para visualizar um exemplo que especifica todos os compressores disponíveis:
client = mongoc_client_new("mongodb://<db_username>:<db_password>@<hostname>/?compressors=snappy,zlib,zstd");uri = mongoc_uri_new("mongodb://localhost:27017");mongoc_uri_set_compressors(uri, "snappy,zlib,zstd");
client = mongoc_client_new_from_uri(uri);zlibNível de compactação
Ao usar o algoritmo zlib, você pode especificar um nível de compactação de -1 a 9. Níveis mais baixos geralmente fornecem compactação mais rápida com uma taxa de compactação mais baixa, e níveis mais altos fornecem compactação mais lenta com uma taxa de compactação mais alta.
Selecione a aba Connection String ou URI Option para ver um exemplo que especifica um nível de compactação para o compressor zlib:
client = mongoc_client_new("mongodb://<db_username>:<db_password>@<hostname>/?compressors=zlib&zlibCompressionLevel=<zlib_compression_level");uri = mongoc_uri_new("mongodb://localhost:27017");mongoc_uri_set_option_as_int32(uri, MONGOC_URI_ZLIBCOMPRESSIONLEVEL, <zlib-compression-level>);
client = mongoc_client_new_from_uri(uri);Documentação da API
Para obter mais informações sobre os tipos e funções usados nesta página, consulte a seguinte documentação da API: