网络压缩
您可以启用驱动程序选项来压缩消息,从而减少 MongoDB 和应用程序之间通过网络传递的数据量。
驱动程序支持以下算法:
驱动程序针对这些库的以下版本进行测试:
org.xerial.snappy:snappy-java:1.1.10.3
com.github.luben:zstd-jni:1.5.5-3
如果指定多种压缩算法,驱动程序会选择其连接的 MongoDB 实例支持的列表中的第一个算法。
注意
需要 Snappy 或 ZStandard 压缩的应用程序必须为这些算法添加显式依赖项。
指定压缩算法
您可以通过以下两种方式之一指定算法,为 MongoDB 实例的连接启用压缩:使用ConnectionString
将参数添加到连接字符串中,或者调用MongoClientSettings.Builder
类中的方法。
使用 ConnectionString 启用压缩 ,在传递给compressors
的连接 中添加参数string MongoClients.create()
。您可以指定一种或多种压缩算法,用逗号分隔:
ConnectionString connectionString = new ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
使用以下字符串指定压缩算法:
使用 MongoClientSettings 启用压缩 ,传递言 压器 List() MongoCompressor 列表 实例。您可以在列表中指定一种或多种压缩算法:
MongoClientSettings settings = MongoClientSettings.builder() .compressorList(Arrays.asList(MongoCompressor.createSnappyCompressor(), MongoCompressor.createZlibCompressor(), MongoCompressor.createZstdCompressor())) .build(); MongoClient client = MongoClients.create(settings);
压缩算法依赖关系
JDK 本身支持 Zlib 压缩,但 Snappy 和 Zstandard 依赖于开源实现。详见 snappy-java 和 zstd-java。