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: Snappy compression can be used when connecting to MongoDB servers running version 3.4 and later.
Zlib: Zlib compression can be used when connecting to MongoDB servers running version 3.6 and later.
Zstandard: Zstandard compression can be used when connecting to MongoDB servers running version 4.2 and later.
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
As the JDK has no built-in support for Snappy or Zstandard, the driver takes a dependency on existing open-source Snappy and Zstandard implementations. See the snappy-java GitHub repository and the zstd-java GitHub repository for details.