2017-04-24 18 views
2

MongoDBはこのオプションで実行できます:--networkMessageCompressors=snappy。ドキュメントによると、これはmongod、mongosとmongoシェルの間のネットワーク交換を圧縮します。ワイヤ圧縮をサポートするMongoDBドライバはありますか?

私は、Javaアプリケーションとmongodの間のトラフィックを圧縮したいと思いますが、このオプションを提供するJavaドライバはありません。

次のいずれかのパスを試したことがありますか?

  • パッチ、それは圧縮をサポートしているように、Javaドライバは、(それは当然の私の好ましい解決策だろうが、私は従う方向にいくつかのアドバイスを使用することができます)
  • Javaアプリケーションに公開するための圧縮をサポートする他のドライバをラップ(ただし、他のドライバがこの機能をサポートしているかどうかはわかりません)

もちろん、他の方法でペイロードを圧縮することができます。

ありがとうございます!あなたが述べてきたように

答えて

3

、MongoDBの3.4で追加されnetwork compression featureは現在、クラスタ内のレプリカセットまたはシャードクラスタ(mongodまたはmongos)のメンバー間のコミュニケーションだけでなく、mongoシェルのためにサポートされています。 MongoDB 3.4リリース以降、ネットワーク圧縮をサポートする公式ドライバはありません。

クライアント/ドライバサポートのMongoDB問題追跡ツールで見ることができる/関連する機能リクエストがあります:SERVER-25620: Compression of wire protocol for Clientsです。この機能要求はまた、いくつかのcontext on the lack of client support提供するコメントがありますいくつかの背景については

を、ワイヤプロトコル圧縮を実装するための決定は非常に遅れのMongoDB 3.4の開発サイクルで来ました。 MongoDB 3.4では、公式のMongoDBドライバがサポートを追加する必要があり、タイムラインを考えると現実的には見えませんでした。また、ワイヤプロトコル圧縮をクラスター内部のみに保つことで、クライアントに公開する前に機能を洗練する能力を提供し、効果的にデザインにロックインされます。 MongoDB 3.6の開発中に、クライアントへの圧縮のサポートを拡張するかどうかを評価します。

ユースケースに大きな勝利がある場合は、Javaドライバ用のパッチを実装することを検討できますが、3.6の開発サイクルで変更が行われる可能性があり、公式のドライバサポートを待つ方が賢明かもしれません。

もちろん、私がそのペイロードを圧縮するのに役立つ他の方法は高く評価されます。

ドライバを変更する代わりに、VPN圧縮またはTLS/SSL圧縮を使用してネットワーク圧縮を利用できます。 VPN圧縮は、おそらくより推奨されるアプローチです。

TLS/SSLの圧縮は、TLS/SSLライブラリがデフォルトで圧縮を有効にするか無効にするかなど、さまざまな要因によって異なります。 CRIMEのようなハイプロファイルのセキュリティ悪用のために、多くのO/Sディストリビューションと言語/ドライバがTLS/SSL圧縮を無効にしています。理論的には、MongoDBはCRIME攻撃(脆弱性のWebセッションに対する攻撃)に対して脆弱ではありませんが、多くのユーザーはTLS圧縮をセキュリティ上の問題と考えています。

関連する問題