2016-12-08 21 views
0

ストリーミングと通常検索の主な違いは、内部実装の面で何がありますか?通常の検索も分散して動作します。ストリーミングはどのようにパフォーマンスを改善しますか?ドキュメントは助けにはならない。SOLRストリーミングVS検索

答えて

1

分散検索では、要求が発行され、結果が計算され、結果が配信され、マージが処理されます。各ステップは完全に処理されてから次のステップに進みます。これは、データ量が少ない場合に十分に機能します。何百万ものドキュメントを配信するなどの大規模な要求に対しては、膨大なメモリバッファが必要です。また、結果が処理される前に、発信者が最後のステップ(結果を発信者に配信)まで待たなければならないことも意味します。

ストリーミングでは、すべてこれが進行中です。計算、配信、およびマージは同時に発生し、固定された上位メモリのオーバーヘッドが発生します。あなたは10Kの結果を求めることができますか、100億を求めることができます、唯一の違いはどれくらいの時間がかかるかです。呼び出し元への配信を含む、プロセスのすべての部分が同時にアクティブであるため、これは、最初の結果データが呼び出し元に非常に迅速に配信されることを意味します。

内部的には、ストリーミングは基本的に検索結果をページングします。私が正しく覚えていれば、各ページ(10Kドキュメント)は、計算されるとすぐにストリームに渡されます。最適化を無視すると、深いページングとカスタム合併で外部から同じ動作をエミュレートできます。

+0

こんにちは、簡単なクエリで詳しく説明してください。ストリーミングが100M文書のインデックスで – redeemed

+0

の 'q = *:*&rows = 100000000'という検索結果を上回っているかどうかを説明してください。あなたの設定が配布されているかどうかにかかわらず。 https://cwiki.apache.org/confluence/display/solr/Streaming+Expressionsの最初の例には、このような問題はありません。 –

+0

ここで問題となるのは、すべての1Mドキュメントを一度にロードすることです。ストリーミングでは、一度に1つのドキュメントをクライアント側で取得できます。これらの1Mドキュメントに対して計算を行う必要がある場合は、メモリ内のこれらの1Mドキュメント(ストリーミングを介して取得)、右ですか? – redeemed