시작 또는 끝에서 데이터 스트림을 필터링하는 것이 더 낫습니까?

StackOverflow https://stackoverflow.com/questions/1625401

  •  06-07-2019
  •  | 
  •  

문제

저는 엄청난 양(수 기가바이트)의 쉼표로 구분된 값(CSV) 파일을 처리해야 하는 프로젝트를 진행하고 있습니다.

제가 기본적으로 하는 일은 다음과 같습니다.

  1. 모든 관련 파일을 읽는 방법을 알고있는 객체 만들기
  2. 데이터에 관심이 있는 리스너 세트를 이 객체에 등록합니다.
  3. 각 파일의 각 줄을 읽고 데이터 줄에서 각 청취자로 생성 된 개체를 발송합니다.
  4. 각 리스너는 이 데이터가 유용하거나 관련성이 있는지 여부를 결정합니다.

대신 소스 측에서 필터링하는 것이 더 나은지 궁금합니다.각 리스너에는 주어진 데이터 조각이 리스너에게 전달되어야 하는지 여부를 결정하는 연관된 Predicate 객체가 있습니다. 이 경우 프로세스는 다음과 같습니다.

  1. 모든 관련 파일을 읽는 방법을 알고있는 객체 만들기
  2. 이 객체에 쌍 세트를 등록하세요.
  3. 각 파일의 각 줄을 읽고, 관련 술처가 데이터에 대해 true가 반환되는 경우 데이터 라인에서 각 청취자로 생성 된 개체를 발송합니다.

순 효과는 동일하며 필터링이 발생하는 위치의 문제일 뿐입니다.

(다시 말하지만, 한 번에 하나의 항목을 처리하는 데이터 '스트림'이 있는 유일한 이유는 기가바이트 단위의 CSV 파일을 처리하고 컬렉션을 생성하고 필터링한 다음 처리할 수 없기 때문입니다. 그것 - 가는 동안 필터링해야 함)

도움이 되었습니까?

해결책

수신기에 대한 호출 비용이 크지 않는 한(Remoting, WCF 등) 저는 매우 간단한 인터페이스를 유지하고 수신기가 행으로 무엇을 할지 결정하도록 할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top