조인
조인 (Joins)
Apache Druid에서 데이터를 조인하는 방법은 크게 두 가지가 있어요. 하나는 조인 연산자(join operator)를 쓰는 방식이고, 다른 하나는 쿼리타임 조회(lookup)를 쓰는 방식이에요. 각각 언제 쓰면 좋은지 함께 살펴볼게요.
출처: 문서
본문
Apache Druid에는 데이터 조인과 관련된 두 가지 기능이 있어요:
- 조인 연산자 (Join operators). native 쿼리에서 조인 datasource 로, 또는 Druid SQL에서
JOIN연산자로 사용할 수 있어요. Druid native 쿼리에서 조인이 어떻게 동작하는지는 조인 datasource 문서 를, multi-stage query 작업에서 조인이 어떻게 동작하는지는 multi-stage query 조인 문서 를 참고하세요. - 쿼리타임 조회 (Query-time lookups) — 간단한 키-값 매핑이에요. 조회는 쿼리에 관여하는 모든 서버에 미리 로드되며, 명시적인 조인 연산자 유무와 상관없이 접근할 수 있어요. 자세한 내용은 lookups 문서 를 참고하세요.
가능하면 성능을 위해 쿼리 시간에 조인을 피하는 것이 좋아요. 보통 이런 일은 데이터를 Druid에 로드하기 전에 미리 조인해 두면 해결돼요. 하지만 성능 오버헤드가 있음에도 조인이나 조회가 최선의 해결책인 상황도 있어요:
- 데이터가 어디에 저장되어 있는지에 대한 제약으로 사전에 조인할 수 없을 때
- 데이터가 여러 스트림에서 만들어질 때
- 두 데이터셋의 입력 속도가 크게 다를 때 (예: 한쪽은 초당 수백 이벤트, 다른쪽은 하루 수백 개) — 이 경우 빠른 스트림을 조인하는 것은 실용적이지 않아요.
더 알아보기 (Learn more)
- Lookups (조회) — 쿼리타임 키-값 매핑을 자세히 알아보세요.
- Join datasource — native 쿼리에서의 조인을 살펴보세요.
- Multi-stage query 조인 — multi-stage query 작업에서의 조인을 알아보세요.