본문 바로가기

Bigdata/druid

Druid 정리(4)

조인

· 드루이드는 쿼리타임 룩업을 통해 제한된 조인을 지원한다.

· 쿼리타임 룩업의 흔한 사용 케이스는 한 디멘전의 값을 또 다른 값으로 교체하는 것이다.

· 이것은 star-schema 조인과 유사하다.

· 드루이드는 아직 조인을 완벽하게 지원하지 않는다.

· 비록 드루이드의 저장 포멧이 조인의 구현을 허락할지라도 아직 다음의 이유 때문에 조인을 완벽하게 서포트하지 않는다.

  · 조인 쿼리의 확장은 분산 데이터베이스 작업의 지속적인 병목 현상이다.

  · 기능의 점진적인 향상은 동시 처리가 많이 걸린 작업 부하를 관리 할 때 예상되는 문제보다 가치가 떨어지는 것으로 인식된다.

· 조인 쿼리는 본질적으로 공유 키 집합을 기반으로 하는 두 개 이상의 데이터 스트림을 병합한다.

· 조인 쿼리를 위한 주요한 고레벨 전략은 해시기반 전략과 소트-머지 기반 전략이다.

· 해시 기반 전략에서는 하나의 데이터 셋을 제외한 모든 데이터 세트를 해시 테이블처럼 보이는 것으로 사용할 수 있어야하며, 조회 작업은 "기본"스트림의 모든 행에 대해 이 해시 테이블에서 수행된다.

· 소트-머지 전략은 각 스트림은 조인 키에 의해서 정렬되어 스트림의 증분된 조인을 허락한다고 가정한다.

· 이러한 각 전략은 정렬 된 순서 또는 해시 테이블 형식으로 일부 스트림 수를 구체화해야 한다.

· 조인의 모든 측면이 상당히 큰 테이블 (10 억 개 이상의 레코드) 인 경우 사전 조인 스트림을 구체화하려면 복잡한 분산 메모리 관리가 필요하다.

· 메모리 관리의 복잡성은 동시성이 높고 멀티 테넌트 작업 부하를 목표로한다는 사실에 의해서만 증폭된다.


룩업

· 드루이드에서 룩업은 디멘전 값을 새로운 값으로 교체하는 개념이다.(조인 같은 기능을 위해)

· 드루이드에서 룩업을 적용하는 것은 데이터 웨어하우스에서 디멘전 테이블을 조인하는 것과 유사하다.


쿼리 실행

· 룩업과 관련된 집계 쿼리를 실행할 때 Druid는 행을 검색 및 집계하는 동안 또는 집계가 완료된 후에 룩업을 적용하기로 결정할 수 있다.

· 집계가 완료된 후 룩업을 적용하는 것이 더 효율적이다. 그래서 드루이드는 가능하면 이렇게 한다.

· one-to-one 조회 인 경우 "injective" 속성을 설정하여 Druid가 가능한 한 빨리 쿼리를 실행할 수 있도록 해야 한다.

· injective


1 -> Foo

2 -> Bar

3 -> Billy


· Not injective


1 -> Foo

2 -> Bar



'Bigdata > druid' 카테고리의 다른 글

Druid 정리(5)  (0) 2019.03.30
Druid 정리(3)  (0) 2019.03.30
Druid 정리(2)  (0) 2019.03.30
Druid 정리(1)  (1) 2019.03.30