Compressão
Nesta página
O driver Scala suporta compressão de mensagens de e para servidores MongoDB . O driver implementa os três algoritmos suportados pelos servidores 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 org.mongodb.scala._
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:
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=snappy")
O seguinte código especifica o algoritmo de compressão zlib :
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=zlib")
O seguinte código especifica o algoritmo de compressão padrão Z:
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=zstd")
O seguinte código especifica vários algoritmos de compressão:
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=snappy,zlib,zstd")
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 org.mongodb.scala._ import scala.collection.JavaConverters._
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:
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createSnappyCompressor).asJava) .build() val client = MongoClient(settings)
O seguinte código especifica o algoritmo de compressão zlib :
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createZlibCompressor).asJava) .build() val client = MongoClient(settings)
O seguinte código especifica o algoritmo de compressão padrão Z:
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createZstdCompressor).asJava) .build() val client = MongoClient(settings)
O seguinte código especifica vários algoritmos de compressão:
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createSnappyCompressor, MongoCompressor.createZlibCompressor, MongoCompressor.createZstdCompressor).asJava) .build() val client = MongoClient(settings)
Assim como na configuração que usa a string de conexão, o driver usa o primeiro compressor da lista para o qual o servidor oferece suporte.
Dependencies
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.