压缩
Scala驱动程序支持对MongoDB服务器消息的压缩。驱动程序实现了MongoDB服务器支持的三个算法。
Snappy:当连接到运行3.4及以上版本的MongoDB服务器时,可以使用Snappy压缩。
Zlib:当连接到运行3.6及以上版本的MongoDB服务器时,可以使用Zlib压缩。
Zstandard:当连接到运行4.2及以上版本的MongoDB服务器时,可以使用Zstandard压缩。
驱动程序将根据服务器在“hello”命令响应中声明的功能协商使用哪种,如果有的话,压缩算法。hello
命令响应。
使用ConnectionString指定压缩
包含以下导入语句
import org.mongodb.scala._
要在ConnectionString
中指定压缩,请将压缩器作为连接字符串的一部分指定。
以下代码指定了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 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)
与使用连接字符串的配置一样,驱动程序使用列表中服务器支持的第一个压缩器。
依赖关系
由于 JDK 没有内置对 Snappy 或 Zstandard 的支持,驱动程序依赖于现有的开源 Snappy 和 Zstandard 实现。请参阅 snappy-java GitHub 仓库 和 zstd-java GitHub 仓库 以获取详细信息。