현재 운영하고 있는 곳의 경우 기존의 Oracle 을 많이 사용하고 있다.
이 때 데이터플랫폼에서 데이터를 조회 시 각 DB 들 마다 따로 접근하기 어려워 Trino 를 활용하여 접근하고 있다.
이 때 이기종 DB 간의 Join 을 수행이 아닌 한 DB 내에서 Join 을 수행할려고 해도 Trino 에서 join 을 수행해 조회 속도가 느려지는 현상이 발생했습니다.
Join 이 반드시 Trino 에서 발생해야 하는지?
Trino 문서에 보면 Join push down 에 관련된 글이 보인다.
Trino 에서는 Source 단에서 데이터를 Join 할 수 있도록 하는 옵션이 존재 한다. 그러나 Connector 별로 지원 여부를 확인해야 하며, Phoenix 의 경우 해당 옵션을 지원하지 않는다.
Phoenix 의 경우 view 를 활용하영 이 와 같은 문제를 해결할 수 있을 듯 하다.
아래 옵션을 활성화하여 Join 수행을 Trino 가 아닌 Source DB 에서 지원하도록 한다.
보통 Source 쪽 데이터의 경우 방대한 양의 데이터를 가지고 있지는 않으며, 해당 테이블의 Index 를 활용하여 데이터를 Join 하는 것이 Trino 의 Network IO 를 발생시켜 원본을 가져온 후 Join 하는 것보다 빠르기 때문에 해당 옵션을 활성화 시키는 것이 좋을 것으로 판단했다.
물론 상황에 따라 판단을 해야할 것이다.