Visão geral
Neste guia, você pode aprender como usar o driver Kotlin Sync para habilitar a compactação de rede. O driver fornece uma opção de conexão para comprimir mensagens, o que reduz a quantidade de dados passados pela rede entre o MongoDB e seu aplicação.
O driver é compatível com os seguintes algoritmos de compressão:
Se você especificar vários algoritmos de compressão, o driver selecionará o primeiro na lista compatível com sua instância do MongoDB.
Observação
Os aplicativos que exigem compressão Snappy ou Zstandard devem adicionar dependências explícitas para esses algoritmos. Para saber mais, consulte a seção Dependências do algoritmo de compressão deste guia.
Especifique algoritmos de compactação
Você pode habilitar a compressão para a conexão com sua instância do MongoDB especificando os algoritmos de uma das seguintes maneiras:
Encadeie o método
compressorList()
ao métodoMongoClientSettings.builder()
.Use o parâmetro
compressors
em seu URI de conexão.
Os exemplos a seguir demonstram como especificar todos os compressores disponíveis ao conectar ao MongoDB. Selecione a aba MongoClientSettings ou Connection URI para ver a sintaxe correspondente :
val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString("<connection string>")) .compressorList( listOf( MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor()) ) .build() val mongoClient = MongoClient.create(settings)
val uri = ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd") val mongoClient = MongoClient.create(uri)
Especifique o nível de compressão da zlib
Se você especificar zlib
como um dos algoritmos de compressão, também poderá usar a propriedade MongoCompressor.LEVEL
para especificar um nível de compressão. Esta opção aceita um valor inteiro entre -1
e 9
:
-1: compactação padrão (geralmente
6
)0: sem compressão
1: velocidade mais rápida, mas menor compactação
9: a melhor compactação, mas a velocidade mais lenta
Os exemplos seguintes demonstram como especificar um nível de compressão para o compressor zlib
. Selecione a aba MongoClientSettings ou Connection URI para ver a sintaxe correspondente:
val zlib = MongoCompressor.createZlibCompressor() val settings = MongoClientSettings.builder() .applyConnectionString(ConnectionString(uri)) .compressorList(listOf(zlib.withProperty(MongoCompressor.LEVEL, <level>))) .build() val mongoClient = MongoClient.create(settings)
val uri = "mongodb://<db_username>:<db_password>@<hostname>:<port>/?" + "compressors=zlib" + "zlibCompressionLevel=<zlib compression level>" val mongoClient = MongoClient.create(uri)
Dependências do algoritmo de compactação
O JDK suporta nativamente a compressão zlib. No entanto, Snappy e Zstandard dependem de implementações Java de código aberto. Para saber mais sobre essas implementações, consulte os seguintes repositórios do Github:
Documentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos neste guia, consulte a seguinte documentação da API: