ドライバー オプションを有効にすると、メッセージを圧縮して、MongoDB とアプリケーション間でネットワーク経由で渡されるデータ量を減らすことができます。
ドライバーは次のアルゴリズムをサポートしています。
ドライバーは、これらのライブラリの次のバージョンに対してテストされています。
org.xerial.snappy:snappy-java:1.1.10.3
com.github.luben:zstd-jni:1.5.5-3
複数の圧縮アルゴリズムを指定した場合、ドライバーは接続先の MongoDB インスタンスでサポートされている最初の圧縮アルゴリズムをリストから選択します。
注意
アプリケーションで Snappy または Zstandard 圧縮が必要な場合は、それらのアルゴリズムに明示的な依存関係を追加する必要があります。
圧縮アルゴリズムを指定する
MongoDBインスタンスへの接続の圧縮を有効にするには、ConnectionString
を使用して接続stringに パラメータを追加するか、MongoClientSettings.Builder
クラスで メソッドを呼び出します。
ConnectionString を使用して圧縮を有効にするには、MongoClients.create()
に渡される接続文字列にパラメーター compressors
を追加します。1 つ以上の圧縮アルゴリズムを、カンマで区切って指定できます。
ConnectionString connectionString = new ConnectionString("mongodb+srv://<db_username>:<db_password>@<cluster-url>/?compressors=snappy,zlib,zstd"); MongoClient mongoClient = MongoClients.create(connectionString);
次の文字列を使用して圧縮アルゴリズムを指定します。
MongoClientSettings を使用して圧縮を有効にするには、 compressorList() ビルダ メソッドに MongoCompressor インスタンスのリストを渡します。リストでは 1 つ以上の圧縮アルゴリズムを指定できます。
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 を参照してください。