The Boxer
Druid Native Queries 본문
728x90
반응형
- 드루이드는 2가지 방식의 쿼리를 통해 데이터를 질의할 수 있다.
- Druid SQL: 일반적인 SQL로 으로 질의
- native queries: JSON 오브젝트 형식이며 http 통신을 통해 post의 body로 담아 질의
- 여기서 native queries 방식에 대해 알아본다.
native queries
- 드루이드에 데이터를 질의하기 위한 쿼리
- http 통신으로 전달되는 JSON 형식이며, post의 body로 전달한다.
curl로 질의하는 예시
curl -X POST '{host}:{port}/druid/v2/?pretty' -H 'Content-Type:application/json' -H 'Accept:application/json' -d @{query_json_file}
- 경량화 되게 설계되어 있으며, 매우 빠르게 데이터 질의가 가능하다.
- 다수의 드루이드 쿼리를 종합하여, 복잡한 분석이나 시각화 가능
쿼리 종류
- 상황에 맞는 사용 방식을 위한 다양한 쿼리 종류를 제공한다.
Aggregation Queries
Timeseries
- 시계열 데이터에 대한 집계 데이터 조회
- 주요 필드
- intervals: 쿼리가 가져오는 전체 시간 범위. ISO-8601
- granularity: 참고 시간 dimension에 대해 집계를 하는 단위(시간, 분, 초 등으로 집계)
- aggregations: dimension 단위로 집계된 metric에 대한 정보. 어떤 방식으로 집계했는지와 output name 명시
- context: 쿼리 실행방식에 대해 정의한 메타 데이터
- grandTotal: metric의 총 집계 데이터 추출 여부
- skipEmptyBuckets: 지정한 interval 내에 granularity 단위로 집계한 경우 0이 나오는 경우도 있다. skipEmptyBuckets 를 설정한 경우 이러한 경우을 제외시키고 출력
TopN
- 일정한 기준에 따라 주어진 dimension에 대해 정렬된 결과 조회
- 하나의 dimension에 대해서는 groupby와 유사하지만, 이경우에는 topN이 훨씬 빠름
- 데이터를 정렬 후 상위 K개만큼의 데이터를 반환
- 여기서 K의 default값은 max(1000, threshold)
- 주요 필드
groupby
- 데이터를 groupby로 집계한 결과를 조회
- 주요 필드
Metadata Queries
TimeBoundary
- 지정한 시간 boudary 이내의 데이터 조회
- 주요 필드
- bound: maxTime, minTime 값을 지정하여 조회할 timestamp에 대한 boundary 설정
SegmentMetadata
- segment 단위의 데이터 조회
- 주요 필드
- toInclude: 결과물에 포함되어야 하는 column all|none|list
- analysisTypes: 계산되어 결과물로 반환되는 column list
DatasourceMetadata
- datasource에 대한 meta 데이터 조회
Other Queries
Scan
- 드루이드에 저장된 row 데이터 자체를 스트리밍 형식으로 조회
- Broker에게 데이터를 전송하는 목적으로 사용할 수도 있으며, 스트리밍 방식으로 데이터를 적재하는데 사용할 수도 있다.
- 대량의 데이터를 병렬로 처리하는 경우 사용
search
- 검색 조건에 부합하는 데이터 조회
- 주요 필드
- query: 질의할 검색 조건 참고
사용하는 상황
- 집계 데이터를 조회하는 경우
- 일반적으로 timeseries, topN
- 데이터가 상황에 맞게 최적화 되어 있지 않다면 groupby
- groupby가 timeseries, topN 보다 느리지만, 가장 유연하다
쿼리 취소
- DELETE 메서드로 쿼리의 id 값을 요청하여 쿼리 취소 가능
curl 예시
curl -X DELETE "http://{host}:{port}/druid/v2/{query_id}"
728x90
반응형
'Storage > Druid' 카테고리의 다른 글
apache druid (0) | 2022.08.07 |
---|---|
druid 구성 요소 (0) | 2022.07.28 |
druid segment (0) | 2022.07.26 |
druid 구조 (0) | 2022.07.26 |
Druid Query Filter (0) | 2022.07.15 |
Comments