본문 바로가기
PENTAHO/INFO

[PENTAHO] GROUP BY와 MEMORY GROUP BY의 차이점

by 오늘은강박사갈거야~~ 2021. 7. 28.
반응형

- 이 문서는 PENTAHO의 공식 document를 참고하였습니다.

- 버전은 가장 최신인 9.1 CE 기준으로 작성하였습니다.

- 저도 공부 중입니다.. 틀리거나 이상한 부분이 있으면 댓글 달아주셔요..^^


kettle을 사용하다 보며 궁금한 것은 GROUP BY와 MEMORY GROUP BY의 차이점은 무엇인가였다. 실제로 대량의 GROUP BY를 동시에 진행할 때가 아닌 경우에 사용한다라는 느낌만 가지고 사용하기에 궁금증이 커졌습니다.

그래서 이곳저곳 인터넷을 찾아보며 정리한 내용을 올려드립니다.

 


우선 공식문서 내용들을 살펴보겠습니다.

 

GROUP BY

 

이 단계는 지정된 필드 또는 필드 컬렉션을 기반으로 소스의 행을 그룹화합니다. 각 그룹에 대해 새 행이 생성됩니다. 또한 그룹에 대해 하나 이상의 집계 값을 생성할 수도 있습니다. 일반적인 용도는 제품당 평균 판매량을 계산하고 재고가 있는 항목의 수를 계산하는 것입니다.

Group By 단계는 정렬된 입력을 위해 설계되었습니다. 입력이 정렬되지 않으면 이중 연속 행만 올바르게 그룹화됩니다. PDI 외부에서 데이터를 정렬하는 경우 필드에 있는 데이터의 대소문자 구분으로 인해 예기치 않은 그룹화 결과가 생성될 수 있습니다.

 

MEMORY GROUP BY

 

메모리 그룹화 기준은 소스 단계의 메모리에 있는 행을 그룹화합니다. 결과 행은 지정된 필드 또는 필드 컬렉션을 기반으로 그룹화됩니다. 각 그룹에 대해 새 행이 생성됩니다.

이 단계는 메모리의 모든 행을 처리한다는 점에서 Group By 단계와 다르며 정렬되지 않은 입력을 처리하도록 설계되었습니다. 그룹화하려는 행 수가 메모리에 맞지 않으면 행 정렬 및 그룹화 기준 단계를 조합하여 사용해야 합니다.

 

 

 

 

사실 그렇게 크게 와닿지 않으시죠? 저두 마찬가지입니다. 여러 곳을 찾아보고 난 결론은 다음과 같습니다.

 

MEMORY GROUP BY는 PENTAHO에서 4.0 버전부터 추가된 기능인데요. 이것을 만든 이유는 다음과 같습니다. 적당한 양의 그룹 개수의 빠른 처리를 위해서, 내부 처리 시 중간 결괏값을 메모리에 보관해서 더 빠른 성능을 내기 위함입니다.

 

 

그렇다면 사용시의 차이점은 어떤 게 있을까요?

 

 

  1. GROUP BY는 항상 STEP을 수행하기 전에 먼저 SORT STEP을 수행해야 합니다. 하지만 MEMORY GROUP BY는 SORT STEP을 하지 않아도 됩니다.

 

  1. 대량의 그룹화를 위한 그룹들이 존재하면 MEMORY GROUP BY가 아닌 GROUP BY를 사용해야 합니다. 그럼 얼마 큼이 대량이냐?라고 물어보신다면.. 잘 모르겠네요. 좀 더 서치를 해서 정량적인 값을 알아보도록 하겠습니다. 일단 stack-overflow, pentaho-community 같은 경우에서는 거의 대부분의 일반적인 상황에서는 MEMORY GROUP BY를 사용하는 것을 추천하는 것 같습니다. 참고 바라겠습니다.

 

이후에 좀 더 명확한 답을 찾아오도록 하겠습니다. 감사합니다.

 

반응형

댓글