Compactação de rede
O driver Kotlin do MongoDB oferece uma opção de conexão 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.8.4
com.github.luben:zstd-jni:1.5.5-2
Se você especificar vários algoritmos de compressão, o driver selecionará o primeiro que for suportado pela instância do MongoDB à qual o driver está conectado.
Observação
Se o seu aplicativo exigir compressão Snappy ou Zstandard, você deverá adicionar dependências explícitas para esses algoritmos.
Especifique algoritmos de compactação
Você pode habilitar a compressão na sua conexão especificando os algoritmos das seguintes maneiras:
Adicionando o parâmetro
compressors
à sua instânciaConnectionString
Chamando o método
compressorList()
do construtorMongoClientSettings
Para habilitar a compressão em sua conexão em uma ConnectionString instância, especifique o compressors
parâmetro . Você pode especificar um ou mais dos seguintes valores para o parâmetro compressors
:
O exemplo a seguir mostra como especificar Snappy, zlib e Zstandard como os algoritmos de compressão para uma conexão:
// Replace the placeholders with values from your MongoDB deployment's connection string val connectionString = ConnectionString("mongodb+srv://<user>:<password>@<cluster-url>/?compressors=snappy,zlib,zstd") // Create a new client with your settings val mongoClient = MongoClient.create(connectionString)
Para ativar o uso de compactação em suas MongoClientSettings, chame o compressorList() método construtor e passe um ou mais MongoCompressor instâncias como parâmetro.
Você pode especificar algoritmos de compressão chamando os seguintes métodos do MongoCompressor
:
createSnappyCompressor()
para Snappy compressãocreateZlibCompressor()
para zlib compressãocreateZstdCompressor()
para Zstandard compressão
O exemplo a seguir mostra como especificar Snappy, zlib e Zstandard como os algoritmos de compressão para uma conexão:
// Replace the placeholder with your MongoDB deployment's connection string val uri = "<connection string>" val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .compressorList( listOf( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor()) ) .build() // Create a new client with your settings val mongoClient = MongoClient.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.