Scala ドライバーは MongoDB サーバーとの間のメッセージの圧縮をサポートしています。 このドライバーは、MongoDB サーバーでサポートされている 3 つのアルゴリズムを実装します。
Snappy : Snappy 圧縮は、バージョン 3.4 以降を実行中MongoDBサーバーに接続するときに使用できます。
zlib : zlib 圧縮は、バージョン 3.6 以降を実行中MongoDBサーバーに接続するときに使用できます。
Zstandard: Zstandard 圧縮は、バージョン 4.2 以降を実行中MongoDBサーバーに接続するときに使用できます。
ドライバーは、 helloコマンド応答でサーバーによって通知される機能に基づいて、どの圧縮アルゴリズムが使用されるかをネゴシエートします。
ConnectionString を使用した圧縮の指定
次のインポート ステートメントを含めます。
import org.mongodb.scala._
ConnectionString 内で圧縮を指定するには、 接続stringの一部としてコンプレッサーを指定します。
次のコードは Snappy 圧縮アルゴリズムを指定します。
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=snappy")
次のコードはzlib圧縮アルゴリズムを指定します。
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=zlib")
次のコードは、Zstandard 圧縮アルゴリズムを指定します。
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=zstd")
次のコードでは、複数の圧縮アルゴリズムを指定します。
val mongoClient: MongoClient = MongoClient("mongodb://localhost/?compressors=snappy,zlib,zstd")
いずれの場合も、ドライバーは、サーバーがサポートしているリスト内の最初のコンプレッサーを使用します。
MongoClientSettings を使用して圧縮を指定する
次のインポート ステートメントを含めます。
import org.mongodb.scala._ import scala.collection.JavaConverters._
MongoClientSettingsインスタンス内で圧縮を指定するには、 compressorsプロパティをMongoCompressorインスタンスのリストに設定します。
次のコードは Snappy 圧縮アルゴリズムを指定します。
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createSnappyCompressor).asJava) .build() val client = MongoClient(settings)
次のコードはzlib圧縮アルゴリズムを指定します。
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createZlibCompressor).asJava) .build() val client = MongoClient(settings)
次のコードは、Zstandard 圧縮アルゴリズムを指定します。
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createZstdCompressor).asJava) .build() val client = MongoClient(settings)
次のコードでは、複数の圧縮アルゴリズムを指定します。
val settings = MongoClientSettings.builder() .compressorList(List(MongoCompressor.createSnappyCompressor, MongoCompressor.createZlibCompressor, MongoCompressor.createZstdCompressor).asJava) .build() val client = MongoClient(settings)
接続stringを使用する構成と同様に、ドライバーは、サーバーがサポートしているリスト内の最初のコンプレッサーを使用します。
Dependencies
JDK には Snappy または Zstandard の組み込みサポートがないため、ドライバーは既存のオープンソースの Snappy および Zstandard 実装に依存します。詳細については、 snappy-java Githubリポジトリおよび zstd-java Githubリポジトリ を参照してください。