圧縮
Java Reactive Streams ドライバーは、MongoDB サーバーとの間のメッセージの圧縮をサポートしています。 このドライバーは、MongoDB サーバーでサポートされている 3 つのアルゴリズムを実装します。
Snappy : バージョン を実行している MongoDB サーバーに接続するときに Snappy3 圧縮を使用できます。4 以降。
zlib:zlib MongoDB圧縮は、バージョン3 .6 以降を実行している サーバーに接続するときに使用できます。
Zstandard : Zstandard 圧縮は、バージョン を実行している MongoDB4 サーバーに接続するときに使用できます。2 以降。
ドライバーは、 hello
コマンド応答でサーバーによって通知される機能に基づいて、どの圧縮アルゴリズムが使用されるかをネゴシエートします。
ConnectionString を使用した圧縮の指定
次のインポート ステートメントを含めます。
import com.mongodb.ConnectionString; import com.mongodb.reactivestreams.client.MongoClients; import com.mongodb.reactivestreams.client.MongoClient;
ConnectionString
内で圧縮を指定するには、 接続stringの一部としてコンプレッサーを指定します。
次のコードは 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 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 を使用する構成と同様に、ドライバーは、サーバーがサポートしているリスト内の最初のコンプレッサーを使用します。
Dependencies
JDK には Snappy または Zstandard の組み込みサポートがないため、ドライバーは既存のオープンソースの Snappy および Zstandard 実装に依存します。 snappy-javaGithub リポジトリ を参照してください および zstd-javaGithub リポジトリ 詳細については、「 」を参照してください。