MongoDB Kotlin 驱动程序提供了一个连接选项来压缩消息,这减少了 MongoDB 和应用程序之间通过网络传递的数据量。
驱动程序支持以下算法:
驱动程序针对这些库的以下版本进行测试:
org.xerial.snappy:snappy-java:1.1.8.4
com.github.luben:zstd-jni:1.5.5-2
如果指定多种压缩算法,驱动程序会选择其连接的 MongoDB 实例支持的第一个算法。
注意
如果应用程序需要 Snappy 或 Zstandard 压缩,则必须为这些算法添加显式依赖项。
指定压缩算法
您可以通过以下方式指定算法来启用连接压缩:
将
compressors
参数添加到ConnectionString
实例从
MongoClientSettings
构建器调用compressorList()
方法
要在ConnectionString实例中对连接启用压缩,请指定 compressors
参数。您可以为 compressors
参数指定以下一个或多个值:
以下示例演示如何指定 Snappy、Zlib 和 Zstandard 作为连接的压缩算法:
// 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)
要在MongoClientSettings中启用压缩,请调用CompressorList()构建器方法并将一个或多个MongoCompressor实例作为参数传递。
您可以通过从MongoCompressor
调用以下方法来指定压缩算法:
createSnappyCompressor()
用于 Snappy 压缩createZlibCompressor()
用于zlib压缩createZstdCompressor()
用于 Zstandard 压缩
以下示例演示如何指定 Snappy、Zlib 和 Zstandard 作为连接的压缩算法:
// 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)
压缩算法依赖关系
JDK 本身支持 Zlib 压缩,但 Snappy 和 Zstandard 依赖于开源实现。详见 snappy-java 和 zstd-java。