더북(TheBook)

파이프라인 테이블 함수

지금까지 일반적인 테이블 함수에 대해 살펴봤는데 또 다른 형태의 테이블 함수가 있다. 바로 그 주인공은 파이프라인 테이블 함수 Pipelined Table Function 이다. 이 함수는 보통의 테이블 함수와 한 가지 다른 점이 있는데 바로 파이프라인이라는 특성이 그것이다.

파이프라인 Pipeline이란 시리얼 Serial 과는 반대되는 개념으로, 가령 A, B, C 세 개의 상자가 있고 A 상자에는 탁구공이 담겨 있다고 해보자. 그리고 A 상자의 탁구공을 B에 옮기고, B에 옮겨진 탁구공을 다시 C 상자에 옮기는 작업을 해야만 한다. 시리얼 작업의 경우에는 A 상자에 있는 탁구공을 B 상자로 모두 옮긴 후 B 상자의 탁구공을 다시 C 상자로 옮기는 식으로 처리한다. 반면 파이프라인은 A 상자의 탁구공을 B 상자로 옮기고, 이와 동시에 B 상자에 있는 탁구공을 C 상자로 옮기는 형태다. 즉 A 상자에 탁구공이 남아 있더라도 B 상자에 탁구공이 있으면 A 상자가 텅 빌 때까지 기다리지 않고 C 상자로 탁구공을 옮기는 것이다.

그림 14-1 파이프라인 개념

탁구공을 데이터로 생각한다면 파이프라인 테이블 함수를 쉽게 이해할 수 있을 것이다. 일반적인 테이블 함수는 루프를 돌면서 반환할 컬렉션 변수에 데이터를 옮기고 루프가 끝난 후에야 데이터가 담긴 컬렉션 전체를 반환한다. 하지만 파이프라인 테이블 함수는 루프를 돌면서 컬렉션에 데이터가 담기는 즉시 이 데이터를 반환한다. 따라서 파이프라인 테이블 함수를 호출한 측에서도 곧바로 데이터를 받아 볼 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.