스키마 변경
· 데이터 소스의 스키마는 언제나 변할 수 있고 드루이드는 세그먼트 사이에 다른 스키마를 지원한다.
세그먼트 교체
· 드루이드는 데이터소스, 간격, 버전, 파티션 넘버등을 사용하여 유니크하게 세그먼트를 구분한다.
· 만약 시간 간격(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 |