본문 바로가기

Bigdata/druid

Druid 정리(3)

스키마 변경

· 데이터 소스의 스키마는 언제나 변할 수 있고 드루이드는 세그먼트 사이에 다른 스키마를 지원한다.


세그먼트 교체

· 드루이드는 데이터소스, 간격, 버전, 파티션 넘버등을 사용하여 유니크하게 세그먼트를 구분한다.

· 만약 시간 간격(granularity)에 여러 세그먼트가 있을 경우 파티션 넘버는 오직 세거먼트 아이디에서만 보인다.

· 예를 들어 만약 hourly 세그먼트를 가지고 있을 경우 한 세그먼트보다 한 시간 안에 더 많은 데이터를 가질 수 있다.

· 같은 hour에 여러 세그먼트를 만들 수 있다.

· 이 세그먼트들은 같은 데이터소스, 간격, 버전을 공유하지만 선형적으로 증가하는 파티션 넘버를 가진다.

· 나중에 어느 시점에서 새 스키마로 데이터를 다시 색인화하면 새로 작성된 세그먼트의 버전 ID가 높아진다.

· 드루이드 배치 인덱싱은 간격 별 업데이트를 통해 원자 업데이트를 보장한다.

· 예를 들어 모든 v2 세그먼트가 클러스터에 로드될때까지 쿼리는 v1 세그먼트를 독점적으로 사용한다.

· 모든 v2 세그먼트가 로드되고 쿼리가능하면 모든 쿼리는 v1을 무시하고 v2로 교체한다.

· v2 세그먼트는 빌드되는 즉시 클러스터에 로드되고 세그먼트가 겹치는 기간 동안 v1 세그먼트를 교체한다.

· 아래와 같이 v2 세그먼트가 완전히 로드되기 전에 클러스터에 v1 및 v2 세그먼트가 혼합되어있을 수 있다.


foo_2015-01-01/2015-01-02_v1_0

foo_2015-01-02/2015-01-03_v2_1

foo_2015-01-03/2015-01-04_v1_2


· 위와 같은 경우 쿼리는 v1과 v2 세그먼트를 섞여 있을 수 있다.


세그먼트들 사이에 다른 스키마

· 같은 데이터소스에 드루이드 세그먼트들은 다른 스키마를 가질지도 모른다.

· 만약 스트링 컬럼이 한 세그먼트에는 존재하고 다른 곳에는 그렇지 않다면, 두 세그먼트를 포함하는 쿼리는 여전히 작동한다.

· 디멘전이 없는 세그먼트에 대한 쿼리는 마치 디멘전이 널 벨류인거처럼 행동할 것이다.

· 유사하게 만약 한 세그먼트가 숫자형 컬럼이지만 또다른 세그먼트는 그렇지 않다면, 쿼리는 일반적으로 "do the right thing" 일 것이다.

· 누락 된 메트릭에 대한 집계는 마치 메트릭이 누락 된 것처럼 작동한다.

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

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