Scala驾驶员支持压缩传入和传出MongoDB服务器的消息。 该驾驶员实现了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.
驾驶员将根据服务器在 hello
命令响应中公布的功能,协商使用哪种压缩算法(如果有)。
使用 ConnectionString 指定压缩
包括以下 import 语句:
import org.mongodb.scala._
要在 ConnectionString
中指定压缩,请将压缩器指定为连接string的一部分。
以下代码指定了 Snappy 压缩算法:
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=snappy")
以下代码指定了zlib压缩算法:
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=zlib")
以下代码指定了 Zstandard 压缩算法:
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=zstd")
以下代码指定了多种压缩算法:
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=snappy,zlib,zstd")
在所有情况下,驾驶员都会使用列表中服务器支持的第一个压缩程序。
使用 MongoClientSettings 指定压缩
包括以下 import 语句:
import org.mongodb.scala._ import scala.collection.JavaConverters._
要在MongoClientSettings
实例中指定压缩,请将compressors
属性设立为MongoCompressor
实例列表。
以下代码指定了 Snappy 压缩算法:
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createSnappyCompressor).asJava) .build() val client = MongoClient(settings)
以下代码指定了zlib压缩算法:
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createZlibCompressor).asJava) .build() val client = MongoClient(settings)
以下代码指定了 Zstandard 压缩算法:
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createZstdCompressor).asJava) .build() val client = MongoClient(settings)
以下代码指定了多种压缩算法:
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createSnappyCompressor, MongoCompressor.createZlibCompressor, MongoCompressor.createZstdCompressor).asJava) .build() val client = MongoClient(settings)
与使用连接string的配置一样,驾驶员使用列表中服务器支持的第一个压缩器。
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.