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 biblioteca PHP usa a extensão PHP para comprimir o tráfego de rede. A tabela a seguir lista a extensão PHP mínima e a versão do MongoDB Server necessárias 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
Como a extensão PHP usa o driver C do MongoDB para implementar a compactação de rede, você deve instalar as dependências necessárias para o driver C. Para exibir essas dependências, consulte Instalar dependências na documentação do driver C.
Especifique algoritmos de compactação
Para habilitar a compressão para a conexão com sua implantação 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
MongoDB\Client.Especifique os algoritmos em sua string de conexão.
O exemplo a seguir mostra como especificar Snappy, zlib e Zstandard como os compressores para uma conexão. Selecione a aba MongoDB\Client ou Connection URI para ver o código correspondente:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', ['compressors' => 'snappy,zstd,zlib'], );
$uri = 'mongodb://<hostname>:<port>/?compressors=snappy,zstd,zlib'; $client = new MongoDB\Client($uri);
Especifique o nível de compressão da zlib
Se você especificar Zlib como um dos seus algoritmos de compressão, você 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 exemplo seguinte especifica o algoritmo de compressão zlib e um valor zlibCompressionLevel de 1. Selecione a aba MongoDB\Client ou Connection URI para ver o código correspondente:
$uriOptions = [ 'compressors' => 'zlib', 'zlibCompressionLevel' => 1, ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
$uri = 'mongodb://<hostname>:<port>/?compressors=zlib&zlibCompressionLevel=1'; $client = new MongoDB\Client($uri);
Documentação da API
Para saber mais sobre a classe MongoDB\Client , consulte MongoDB\Client na documentação da API da biblioteca.
Para visualizar uma lista completa de opções de URI que você pode passar para um MongoDB\Client, consulte o MongoDB\Driver\Manager::__construct na documentação da API de extensão.