压缩
Java Reactive Streams 驱动程序支持压缩传入和传出 MongoDB Server 的消息。该驱动程序实现了 MongoDB Server 支持的三种算法:
Snappy :连接到运行版本3 的 MongoDB 服务器时,可以使用 Snappy4 压缩。 及更高版本。
zlib:在连接到运行zlib MongoDB3.6 及更高版本的 服务器时,可以使用 压缩。
Zstandard :连接到运行 版本的 MongoDB 服务器时,可以使用 Zstandard4 2压缩。 及更高版本。
驱动程序将根据服务器在 hello
命令响应中公布的功能,协商使用哪种压缩算法(如果有)。
使用 ConnectionString 指定压缩
包括以下 import 语句:
import com.mongodb.ConnectionString; import com.mongodb.reactivestreams.client.MongoClients; import com.mongodb.reactivestreams.client.MongoClient;
要在ConnectionString
中指定压缩,请将压缩器指定为连接字符串的一部分。
以下代码指定了 Snappy 压缩算法:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=snappy"); MongoClient mongoClient = MongoClients.create(connectionString);
以下代码指定了 Zlib 压缩算法:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=zlib"); MongoClient mongoClient = MongoClients.create(connectionString);
以下代码指定了 Zstandard 压缩算法:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
以下代码指定了多种压缩算法:
ConnectionString connectionString = new ConnectionString("mongodb://localhost/?compressors=snappy,zlib,zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
在所有情况下,驱动程序都会使用服务器支持的列表中的第一个压缩程序。
使用 MongoClientSettings 指定压缩
包括以下 import 语句:
import com.mongodb.MongoClientSettings; import com.mongodb.MongoCompressor; import java.util.Arrays;
要在MongoClientSettings
实例中指定压缩,请将compressors
属性设置为MongoCompressor
实例列表。
以下代码指定了 Snappy 压缩算法:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor())) .build(); MongoClient client = MongoClients.create(settings);
以下代码指定了 Zlib 压缩算法:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createZlibCompressor())) .build(); MongoClient client = MongoClients.create(settings);
以下代码指定了 Zstandard 压缩算法:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
以下代码指定了多种压缩算法:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
与使用 URI 的配置一样,驱动程序使用服务器支持的列表中的第一个压缩器。
依赖关系
由于 JDK 没有对 Snappy 或 Zstandard 的内置支持,因此该驱动程序依赖于现有的开源 Snappy 和 Zstandard 实现。请参阅 snappy-java GitHub 存储库 和 zstd-java GitHub 存储库 了解详细信息。