Compressão
Nesta página
O driver Java Reactive Streams suporta compressão de mensagens de e para MongoDB Server. O driver implementa os três algoritmos suportados pelo servidor MongoDB:
Snappy: A compressão Snappy pode ser usada ao conectar a servidores MongoDB que executam a versão 3.4 e posterior.
zlib: azlib compactação pode ser usada ao se conectar a MongoDB servidores executando a versão 3.6 e posterior.
Zstandard: A compactação padrão Z pode ser usada ao se conectar a servidores MongoDB que executam a versão 4.2 e posterior.
O driver negociará qual algoritmo de compressão, se houver, é usado com base nos recursos informados pelo servidor na resposta de comando hello
.
Especifique a compressão usando a ConnectionString
Inclua as seguintes declarações de importação:
import com.mongodb.ConnectionString; import com.mongodb.reactivestreams.client.MongoClients; import com.mongodb.reactivestreams.client.MongoClient;
Para especificar compressão dentro de um ConnectionString
, especifique compressores como parte da string de conexão.
O seguinte código especifica o algoritmo de compressão Snappy:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=snappy"); MongoClient mongoClient = MongoClients.create(connectionString);
O seguinte código especifica o algoritmo de compressão zlib:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=zlib"); MongoClient mongoClient = MongoClients.create(connectionString);
O seguinte código especifica o algoritmo de compressão padrão Z:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
O seguinte código especifica vários algoritmos de compressão:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=snappy,zlib,zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
Em todos os casos, o driver usa o primeiro compressor da lista para o qual o servidor oferece suporte.
Especificar compressão utilizando MongoClientSettings
Inclua as seguintes declarações de importação:
import com.mongodb.MongoClientSettings; import com.mongodb.MongoCompressor; import java.util.Arrays;
Para especificar a compressão em uma instância MongoClientSettings
, defina a propriedade compressors
como uma lista de instâncias MongoCompressor
.
O seguinte código especifica o algoritmo de compressão Snappy:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor())) .build(); MongoClient client = MongoClients.create(settings);
O seguinte código especifica o algoritmo de compressão zlib:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createZlibCompressor())) .build(); MongoClient client = MongoClients.create(settings);
O seguinte código especifica o algoritmo de compressão padrão Z:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
O seguinte código especifica vários algoritmos de compressão:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
Assim como na configuração que usa um URI, o driver usa o primeiro compressor da lista para o qual o servidor é compatível.
Dependências
Como o JDK não tem suporte integrado para Snappy ou Zstandard, o driver depende das implementações Snappy e Zstandard de código aberto existentes. Veja o repositório snappy-java do GitHub e o repositório zstd-java do GitHub para obter detalhes.