<Ingestion Methods>
Streaming 방식은 Kafka, Kinesis, Tranquility를 지원하며, Batch 방식은 Native-batch(parallel 가능)와 Hadoop을 지원한다.
<Data Rollup>
Data Model은 Primary Timestamp, Dimensions, Metrics로 구성되며, Rollup 시 Primary Timestamp로 구분된 Partition 내의 Dimensions 별 Metrics를 Rollup 시킨다.
Rollup은 Dimension 수와 각 Dimension의 Cardinality가 적을 수록 데이터 크기가 획기적으로 줄어들지만 반대로 Rollup된 데이터에 대해 개별적인 Query가 불가능해진다.
여기서 Dimension의 경우 Type에 따라 Rollup 시 성능 차이가 발생하는데 Numeric Type의 경우 String Type에 비해 Grouping 성능이 더 향상되지만 Numeric Type은 색인이되지 않아 Query 성능 측면의 Tradeoff가 존재한다.
Rollup의 경우에는 Best-effort Rollup과 Perfect Rollup이 가능한데 Streaming 방식에서는 Best-effort Rollup만 가능하다.
Best-effort Rollup은 Ingestion 내 유입되는 Streaming에 대해 Rollup을 수행하므로, Rollup 정책을 완벽하게 보장할 수 없다.
<Partitioning>
유입되는 데이터가 granularitySpec 정의에 따라 Time chunk로 분할되어 Partition이 생성되고 하나의 Partition은 여러 Segement를 포함할 수 있다.
'Development > DB' 카테고리의 다른 글
Apache Druid Segment (0) | 2019.12.29 |
---|---|
Apache Druid Architecture (0) | 2019.12.29 |
Apache Druid 개요 (0) | 2019.12.29 |
PostgreSQL에서 CSV 파일 Import하기 (0) | 2017.01.05 |