2016-05-24 3 views
3

mongodbをストレージとして使用するWebアプリケーションで、低速APIエンドポイントをデバッグしています。リクエストは8つの異なるクエリをMongoDBに送信し、データをまとめてグループ化して返します。 MongoDBは別のホスト上に存在するため、リクエストには8回の往復が含まれます。MongoDBに相当するredisコマンドパイプラインはありますか?

これらの8つのリクエストには依存関係がありません。したがって、8つのクエリをバッチで、または並行して送信できれば、多くの時間を節約できます。

私はMongoがRedisのパイプラインのようなものをサポートしているのか、またはデータを取得するためのスクリプト(Redisのluaスクリプトのような)を送信して、すべてのデータを一度に得ることができるのだろうか?

そうでない場合は、クエリを並行して送信する方法はありますか? (このアプリはpython/tornado/pymongoをベースにしています)

答えて

0

AFAIKでは、MongoDBにパイプラインのようなメカニズムはありません。

私はserver-side scriptsを使用しようとします。

+0

ルックdb.evalは廃止予定です... – NeoWang

+1

"MongoDBの集約フレームワークは、データ処理パイプラインの概念をモデルにしています。ドキュメントは、ドキュメントを集計結果に変換するマルチステージパイプラインに入ります。 [docs](https://docs.mongodb.com/manual/aggregation/#aggregation-pipeline) –

+1

@SteveRossiter Redisでは、パイプラインは1つのクエリで複数のコマンドを処理できます。 MongoDBでは、パイプラインはデータを取得するためのものです。 – warvariuc

1

mongodbのこの種のものには、python driver pymonogoでアクセスできる多くのオプションがあります。

最良の方法(IMHO)はaggregation frameworkで、パイプラインを構築することができます。しかし、機能のいくつかは、mongodbのバージョンとクラスタを断片化しているかどうかによって制限されます。

その他のオプションは、map-reduceまたはsimple operatorsです。

関連する問題