2016-12-08 1 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 워드 프로세서를 한꺼번에로드하는 것입니다. 스트리밍을 사용하면 클라이언트 측에서 한 번에 하나의 문서를 가져올 수 있습니다. 바로이 1M 워드 프로세서에 대해 계산을해야한다면 어떻게해야합니까? (스트리밍을 통해 얻은) 메모리에있는이 1M 워드 프로세서, 맞습니까? – redeemed