The Boxer

Druid Native Queries 본문

Storage/Druid

Druid Native Queries

Prower 2022. 7. 14. 02:19
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)
  • 주요 필드
    • dimension: K개 만큼의 상위 결과물을 필터링할 dimension 참고
    • threshold: 조회할 상위 결과물 갯수 스펙
    • metric: 정렬어 조회할 결과값 스펙

groupby

  • 데이터를 groupby로 집계한 결과를 조회
  • 주요 필드
    • limitSpec: 지정한 함수에 따라 결과물에 limit를 걸거나 정렬 참고
    • having: groupby하여 조회할 결과값 참고
    • filter: 데이터를 지정된 타입에 따라 필터링 참고

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