Compactação de rede
Você pode habilitar uma opção de driver para comprimir mensagens, o que reduz a quantidade de dados passados pela rede entre o MongoDB e seu aplicativo.
O driver suporta os seguintes algoritmos:
Snappy: disponível no MongoDB 3.4 e posterior.
Zlib: disponível no MongoDB 3.6 e posterior.
Zstandard: disponível no MongoDB 4.2 e posterior.
O driver é testado nas seguintes versões dessas bibliotecas:
org.xerial.snappy:snappy-java:1.1.10.3
com.github.luben:zstd-jni:1.5.5-3
Se você especificar vários algoritmos de compressão, o driver selecionará o primeiro na lista suportada pela instância do MongoDB à qual está conectado.
Observação
Os aplicativos que exigem compressão Snappy ou Zstandard devem adicionar dependências explícitas para esses algoritmos.
Especifique algoritmos de compactação
Você pode habilitar a compressão para a conexão com sua instância MongoDB especificando os algoritmos de duas maneiras: adicionando o parâmetro à sua string de conexão utilizando ConnectionString
ou chamando o método na classe MongoClientSettings.Builder
.
Para habilitar a compressão usando a ConnectionString, adicione o parâmetro compressors
na string de conexão passada para MongoClients.create()
. Você pode especificar um ou mais algoritmos de compressão, separando-os com vírgulas:
ConnectionString connectionString = new ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
Especifique os algoritmos de compressão usando as seguintes strings:
Para habilitar a compactação usando o MongoClientSettings, passe o compressorList() método construtor uma lista de MongoCompressor instâncias. Você pode especificar um ou mais algoritmos de compressão na lista:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
Dependências do algoritmo de compactação
O JDK permite a compactação Zlib de forma nativa, mas o Snappy e o Zstandard dependem de implementações de código aberto. Consulte snappy-java e zstd-java para ver os detalhes.