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 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 compactaçã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 compactaçã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 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
Todas as versões da integração Laravel suportam cada algoritmo de compactação de rede.
A tabela a seguir lista a versão mínima compatível do MongoDB Server para cada algoritmo:
Habilitar compressão de rede
Para habilitar a compactação de rede para sua conexão MongoDB , execute as seguintes etapas:
Construa a extensão MongoDB PHP com as dependências necessárias. A extensão lida com a compactação de rede, não com a integração com o Laravel.
Especifique os algoritmos de compactação que você deseja usar.
Instalar dependências
Como a integração do Laravel usa a extensão MongoDB PHP e o driver MongoDB C para implementar a compactação de rede, você deve instalar o driver C com as dependências necessárias. Para exibir essas dependências, consulte Instalar dependências na documentação do driver C.
Especifique algoritmos de compactação
Para habilitar a compactação para a conexão com sua instância do MongoDB, atualize o array connections no arquivo de configuração config/database.php do seu aplicativo. Você pode especificar os algoritmos de compactação de uma das seguintes maneiras:
Inclua a opção
compressorsna arrayoptionsUse o parâmetro
compressorsna string de conexãodsn
Selecione a aba Options Array ou Connection String para visualizar um exemplo que especifica todos os compressores disponíveis:
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'compressors' => 'snappy,zstd,zlib', ], ], ],
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/?compressors=snappy,zstd,zlib', 'driver' => 'mongodb', 'database' => 'sample_mflix', ], ],
Definir o Nível de compactação do zlib
Se você especificar zlib como um dos seus algoritmos de compactação, você pode usar a opção zlibCompressionLevel para especificar um nível de compactação. Esta opção aceita um valor inteiro entre -1 e 9, e os valores têm os seguintes efeitos:
-1: (Padrão) zlib usa seu nível de compactaçã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.
Selecione a aba Options Array ou Connection String para visualizar um exemplo que define a opção zlibCompressionLevel como 1:
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/', 'driver' => 'mongodb', 'database' => 'sample_mflix', 'options' => [ 'compressors' => 'zlib', 'zlibCompressionLevel' => 1, ], ], ],
'connections' => [ 'mongodb' => [ 'dsn' => 'mongodb+srv://mongodb0.example.com/?compressors=zlib&zlibCompressionLevel=1', 'driver' => 'mongodb', 'database' => 'sample_mflix', ], ],